基于ASP.NET+MVC的智慧水务系统

基于ASP.NET+MVC的智慧水务系统

ID:77630703

大小:4.32 MB

页数:81页

时间:2024-02-04

上传者:笑似︶ㄣ無奈
基于ASP.NET+MVC的智慧水务系统_第1页
基于ASP.NET+MVC的智慧水务系统_第2页
基于ASP.NET+MVC的智慧水务系统_第3页
基于ASP.NET+MVC的智慧水务系统_第4页
基于ASP.NET+MVC的智慧水务系统_第5页
基于ASP.NET+MVC的智慧水务系统_第6页
基于ASP.NET+MVC的智慧水务系统_第7页
基于ASP.NET+MVC的智慧水务系统_第8页
基于ASP.NET+MVC的智慧水务系统_第9页
基于ASP.NET+MVC的智慧水务系统_第10页
资源描述:

《基于ASP.NET+MVC的智慧水务系统》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

10431TP399单位代码::TP2分类号;1043115199学号:密级::硕士学位论文基于ASP.NETMVC的智慧水务系统作者姓名连_俊光专业控制工程所在学院电气工程与自动化学院指导教师姓名李军1专业技术职务虽副教授2018年05月20日 分类号:TP2;TP399单位代码:10431密级:学号:1043115199硕士学位论文基于ASP.NETMVC的智慧水务系统作者姓名连俊光专业控制工程所在学院电气工程与自动化学院指导教师姓名李军专业技术职务副教授2018年05月20日 AThesisSubmittedfortheApplicationoftheMaster’sDegreeofEngineeringIntelligentWaterSystemBasedonASP.NETMVCCandidate:LianJunguangSpecialty:ControlEngineeringSupervisor:AssociateProfessorLiJunQiluUniversityofTechnology,Jinan,ChinaMay,2018 学位论文独创性声明本人声明,所呈交的学位论文系在导师指导下本人独立完成的研宂成果。文中引用他人的成果,均已做出明确标注或得到许可。论文内容未包含法律意义上已属于他人的任何形式的研究成果,也不包含本人已用于其他学位申请的论文或一成果,与我同工作的同志对本研究所做的任何贡献均己在论文中作了明确的说明并表示谢意。论文作者签名:年上月ag曰:遂1鉸决J日期学位论文知识产权权属声明本人在导师指导下所完成的论文及相关的职务作品,知识产权归属齐鲁工业大学。齐鲁工业大学享有以任何方式发表、复制、公开阅览、借阅以及申请专利等权利,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,本人离校后发表或使用学位论文或与该论文直接相关的学术论文或成果时,署名单位仍然为齐鲁工业大学。论文作者签名:迻你也曰期:二0IS年匕月#日2〇^/仨^曰:公年月导师签名:日期 齐鲁工业大学硕士学位论文目录摘要......................................................................................................................ⅠABSTRACT.....................................................................................................................Ⅰ第1章绪论.................................................................................................................11.1论文背景...........................................................................................................11.2国内外智慧水务情况研究分析........................................................................11.2.1国内水务行业政策...............................................................................11.2.2国内水务行业难点...............................................................................21.2.3国外水务行业发展...............................................................................21.2.4水务行业发展情况总结.......................................................................21.3现状调研...........................................................................................................31.3.1管网监测不及时....................................................................................31.3.2安排管理不合理...................................................................................31.4论文的意义.......................................................................................................41.5论文结构与章节安排.......................................................................................4第2章系统总体方案...............................................................................................72.1系统总体原则...................................................................................................72.2业务需求...........................................................................................................72.3主要业务功能...................................................................................................82.4上位机与下位机通信设计...............................................................................92.4.1TCP/IP...................................................................................................92.4.2通信协议.............................................................................................102.5本章小结.........................................................................................................12第3章相关技术介绍与系统架构设计............................................................133.1ASP.NETMVC框架介绍.................................................................................133.1.1ASP.NETMVC的简介.........................................................................133.1.2ASP.NETMVC框架与传统开发方式的对比......................................151 目录3.2面向对象技术.................................................................................................163.3Spring.Net技术............................................................................................173.4Log4Net技术..................................................................................................183.5数据库技术.....................................................................................................183.5.1数据库的选择.....................................................................................193.5.2数据库安全性设计.............................................................................193.5.3数据库架构设计.................................................................................203.6系统架构设计.................................................................................................................223.7本章小结..........................................................................................................................23第4章系统详细设计.............................................................................................254.1ASP.NETMVC请求处理原理.......................................................................................254.1.1进入管道.............................................................................................254.1.2路由注册.............................................................................................274.1.3创建MvcHandler对象.......................................................................274.1.4执行MvcHandlerProcessRequest方法.........................................284.1.5总结ASP.NETMVC是如何进入请求管道的.....................................284.2框架搭建..........................................................................................................................294.2.1分层设计.............................................................................................294.2.2各层代码实现.....................................................................................304.3登录模块..........................................................................................................................334.4用户管理模块.................................................................................................................344.4.1开发方式.............................................................................................344.4.2EF简介................................................................................................354.4.3用户管理表的映射.............................................................................354.4.4展示用户数据.....................................................................................364.5用户权限设计.................................................................................................................384.5.1权限设计的完整组成.........................................................................394.5.2权限管理逻辑图.................................................................................404.5.3常见权限设计.....................................................................................404.6主页面模块搭建.............................................................................................................434.6.1前端UI技术介绍...............................................................................432 齐鲁工业大学硕士学位论文4.6.2Home页搭建........................................................................................434.7数据管理模块.................................................................................................................454.8地图模块..........................................................................................................................474.9数据导出模块.................................................................................................................504.10异常数据模块...............................................................................................................514.11网络编程模块...............................................................................................................524.12容器模块........................................................................................................................524.13异常日志........................................................................................................................534.14本章小结........................................................................................................................53第5章测试...............................................................................................................55第6章总结...............................................................................................................59参考文献......................................................................................................................61附录A............................................................................................................................65致谢......................................................................................................................69在学期间主要科研成果..........................................................................................71一、发表学术论文.........................................................................................................713 齐鲁工业大学硕士学位论文摘要在农村地区,水务公司的技术、管理都相对落后,需要通过先进的科学技术对现有水务公司落后的状态进行变革,改变传统水务人员现场抄水表的工作方式,提升整个农村水务的工作效率,降低人工成本,因此设计一个便捷、高效、安全的智慧水务系统可以极大的提升农村水务的效率。智慧水务系统完成对现场的实时监测功能,有利于水务公司工作人员根据实时数据对现场进行合理安排,及时应对各种突发问题,例如水管泄漏问题等。本论文主要目标为搭建一个智慧水务系统,提高农村水务公司对农村主干水管网的监控能力,实现各水管网监测点监测数据的实时上传,完成水务公司管理人员对现场数据的实时获取。同时,水务公司管理人员可以通过智慧水务系统上位机服务器向各监测点的下位机发送指令,对监测点的各个阀门实现远程控制功能。下位机监测点已经部署完成,论文重点内容为依照智慧水务系统上位机与下位机的通信协议,结合相应的计算机技术完成上位机服务器的设计。本文通过对国内外智慧水务发展情况的研究分析和农村水务现状的调研,确定了目前需要解决的系统需求,主要包括:用户管理、权限管理、现场数据实时监测、数据管理、数据导出、地图展示、更改阀门状态等。本文分析了系统的需求,规划了的系统总体原则,设计了数据库架构,详细介绍了智慧水务系统上位机与下位机的通信设计,制订了通信协议。系统的设计涉及计算机技术的应用,通过通信设计中的通信协议,最终完成了系统的设计。关键词:智慧水务;ASP.NETMVC;远程抄水表;物联网I 齐鲁工业大学硕士学位论文ABSTRACTInruralareas,thetechnologyandmanagementofWaterServiceCompanyarerelativelybackward.ThebackwardstateofWaterServiceCompanyhasbeenreformedthroughadvancedscienceandtechnology.Theworkingmodeofthewatermeteronthespotofthetraditionalwaterpersonnelischanged,whichimprovestheefficiencyofthewholeruralwaterserviceandreducesthelaborcost.Therefore,thedesignofaconvenient,efficientandsafeintelligentwatersystemisdesignedtoimprovetheefficiencyofruralwaterservices.Theintelligentwatersystemcompletesthereal-timemonitoringfunctionofthefield,whichishelpfulfortheWaterServiceCompanystafftoarrangethesceneaccordingtotherealtimedata.Itdealswithallkindsofsuddenproblemsintime,suchasthewaterpipeleakage.AnintelligentwatersystemforimprovingthemonitoringabilityofruralWaterServiceCompanytothemaintrunkpipenetworkinruralareasisestablishedinthispaper,whichrealizesthereal-timeuploadingofmonitoringdataofeachwaterpipenetworkandcompletesrealtimeacquisitionoffielddatabyWaterServiceCompanymanagers.Atthesametime,themanagementstaffofthewatercompanycansendcommandstothelowercomputersofeachmonitoringpointbythehostcomputerserveroftheintelligentwatersystemandrealizetheremotecontrolfunctionforeachvalveofthemonitoringpoint.Themonitoringpointofthelowercomputerhasbeendeployed.Themainpurposeofthispaperistodesignahostcomputerserveraccordingtothecommunicationprotocolbetweentheuppercomputerandthelowercomputerintheintelligentwatersystemandthecorrespondingcomputertechnology.Inthispaper,thedevelopmentofintelligentwateraffairsathomeandabroadarestudiedandanalyzed,thecurrentsituationofwateraffairsinruralareasisinvestigatedandtheneedstobesolvedaredeterminedprimarilyforusermanagement,rightsmanagement,on-sitedatareal-timemonitoring,datamanagement,dataexport,mapdisplay,changevalvestatus,etc.Thispaperanalysisthesystemrequirements,planesthegeneralprincipleofsystem,designsthedatabasearchitecture,introducesthecommunicationdesignbetweentheuppercomputerandthelowercomputerintheintelligentwatersystemindetailandestablishesthecommunicationprotocol.Theapplicationofcomputertechnologyisusedinthedesignofthesystem.Accordingtocommunicationprotocolsincommunicationdesignandcomputertechnology,thedesignofthesystemisrealized.I ABSTRACTKeyWords:intelligentwatermanagement;ASP.NETMVC;remotewatermeter;internetofthingsII 齐鲁工业大学硕士学位论文第1章绪论1.1论文背景农村主干用水管网的建设和发展,在我国新型城镇化建设中的地位尤其重要,水务问题关系到千千万万农村家庭的用水。“智慧水务”使整个水务行业变的智能化、高效化、绿色化、安全化[1]。一个出色的智慧水务系统可以成功解决未进行改造的农村主干用水管网目前存在的问题。存在的问题比如因水管网的实时数据获取延迟导致农村水务公司不能根据实时数据做出最及时的安排管理。具体体现在,当农村主干水管网络出现水管泄漏、有人非法大量盗取水资源等问题时,在智慧水务系统中会提示当前水管网数据异常,并发出系统报警,让水务公司及时安排工作人员对异常原因进行排查。避免水管泄漏造成资源的浪费,杜绝非法大量使用水资源的现象[2]。在当前社会,广大老百姓对“智慧+”的呼声越来越高,各个领域都迫切希望抓住智慧的风口,用智慧理念颠覆传统笨拙粗糙的工作方式。许多行业都已经迈出了超前的一步,水务行业也是急切需要被“智慧+”理念所改造的行业之一,因此水务行业的变革势在必行[3]。正是在智慧化浪潮的大背景下,本论文中的“智慧水务”理念正式诞生。本论文的智慧水务是面向农村落后的主干水管网络,从根本上用智慧的思想,帮助村民解决日常用水中的困难,发现村民用水的需求,所以,只有通过智慧化的水务系统才能真正提高村民日常用水的体验,同时又能提升农村水务公司的工作效率和管理水平[4]。1.2国内外智慧水务情况研究分析1.2.1国内水务行业政策在国内整个水务行业根据国家的技术进步要求确立了行业进步发展的目标,要打造“以信息化带动工业化,以工业化促进信息化”的智慧水务行业。针对智慧水务领域,国家颁布了相关的政策:(1)《全国城镇供水设施改造与建设“十二五”规划及2020年远景目标》,在该规划中明确指出城镇水务行业要跟随科技发展的步伐,将先进的科学技术与传统的水务行业相结合,推动改革,使整个水务行业迸发出新的活力。(2)国务院印发《国家新型城镇化规划(2014-2020年)》智慧城市建设方向中指出,建设智慧水务,实现水管网的智能化,水信息管理、监控的智能化[5]。1 第1章绪论1.2.2国内水务行业难点智慧水务仍面临难点,近年来国内的计算机、物联网技术迅速发展,然而在水务行业的技术渗透却远未达到理想状态,整个水务行业的科技应用水平未能与先进IT技术同步,二者之间差距不小。存在的问题比如数据孤岛:随着硬件检测技术的发展,整个水务行业的公司都采用了各种先进的硬件检测模块,但各种模块往往是使用了不同公司的技术,模块之间的检测信息无法实现互通,因此造成了硬件检测的信息资源严重浪费。这一问题是当前行业中普遍存在的问题。同时由于市场上通用的检测设备,缺乏对各水务企业的专门优化,导致基础的水务数据不够准确等问题,因此要真正实现智慧水务任重而道远[6]。数据不完善问题,数据不精准、不及时,会限制系统的应用,包括对数据分析以及通过数据分析提供的决策。国内部分水务企业在技术水平上具备了信息系统以及水力模型等信息化工具,但仍然有许多水务企业处在智能化基础建设阶段,还在为数据的精准性做努力。处于基础建设阶段的水务公司如果要实现智慧水务,需完善管网数据,建立SCADA监测系统,首先要实现成熟的本地监测技术,才有可能通过计算机、物联网等先进手段实现远程实时监控的智慧化水务系统。若没有完善、准确的基础数据,那么实现智慧水务系统显然是不现实的。除上述问题外,国内普遍对智慧水务系统的理解有所偏差,认为智慧水务系统是水表的智能化、软件平台的智能化,而智慧水务系统的真正含义应当是软件平台与硬件设备之间数据统一,通过硬件检测获取数据上传到软件平台,软件平台获取数据后可以进行分析、预警,实现更加精准的水务管理[7,8]。1.2.3国外水务行业发展国外智慧水务行业的发展方向与国内不同,国内的水务企业更多的是采用市场上专门的检测模块、专门的水务软件,而国外的发展情况是水务企业根据自身的情况,发展高度基于自身特点的水信息检测技术,以及完成在水信息获取后的大数据应用、数据分析等研究工作。国外的智慧水务系统在技术方面由两部分组成一是IT技术,二是OT技术(所谓OT即业务技术)。在技术方面与中国智慧水务行业采用的硬件加软件技术本质上是相同的。国外的业务技术不仅应用在水务管网的数据采集、监测上,而且还在异常诊断、事故报警等方向进行了应用。1.2.4水务行业发展情况总结智慧水务系统的搭建,并不是单纯的购买市场上的智能硬件,或者购买软件公司的软件平台[9]。智慧水务系统是一个整体,它既包含硬件装置,比如智能的水表,又包括软件平台,比如优良的数据库系统,而且必须要将二者进行高度的整合。因此国内的智慧水务系统应该学习国外的高度定制化,即使不能够完全实现2 齐鲁工业大学硕士学位论文“量身定做”,也必须要针对每个水务公司进行相关的优化,不能千篇一律化。水务数据的处理方法在整个智慧水务系统中发挥着不可替代的中枢地位,是完成智慧水务不可缺少的环节,在大数据分析应用的环境下,水务公司已经无法通过传统的采购成熟模块方式来实现水务行业的良好发展和运营。水务公司必须借助于更为先进的数据库软件实现对水务系统不同时代、不同模块的整合利用,从而实现对各模块中的数据采集和应用,形成一个智能的水务信息平台。传统的水务公司只有通过将数据智能化,使数据发挥应有的功效,才能解决因治理职能划分导致的业务不统一等管理问题,提高整个水务行业的工作效率。综合国内外行业情况可知,目前国外水务公司采用自主研发的方式,既包括智能硬件监测装置的研发,同时针对硬件开发高度耦合的软件系统,整体发展方向较为正确。而国内行业现状为,外包解决方案,而且大部分公司都是单独购买硬件和软件,存在软硬件兼容问题,以及硬件设备不能根据不同水务场景实现满足需求的精准监测。1.3现状调研1.3.1管网监测不及时管网监测包括主表脉冲、副表脉冲、管网压力、蓄电池电压、瞬时流量、控制箱温度、水表箱温度等,上述水管网监测指标需要实时上传更新,方能提高水务公司对水务现场的实时监测能力。水务设施是农村的基础设施之一,农村水务工作为国家领导人重点关注的问题。农村水务公司如果部署智慧水务系统,实现实时监测,及时上传,便可以避免许多问题,例如水资源泄漏等,一旦出现泄漏等问题导致的异常数据,系统立即发送告警信号,帮助水务公司工作人员在第一时间发现问题,从而为后期问题的解决争取到宝贵时间[10-12]。1.3.2安排管理不合理水务工作的安排管理不合理必定是有原因的,主要是因为对现场监测的实时数据获取不及时,同时获取海量水管网数据后未对数据进行深度挖掘,提炼出问题所在,所以不能在第一时间内针对现场情况进行最有效的安排和管理[13]。在传统的农村水务工作中,绝大部分水管网数据都是有延迟的,从抄表员完成对现场数据的记录,到水务公司收到抄表员递交的现场数据,该过程的完成本身必须消耗时间,意味着水务公司收到的数据本身就已经延迟[14]。因此一旦现场出现水管网泄漏、非法盗水等异常问题,水务公司收到抄表员数据后方可进行判断,然而水管网泄漏、非法盗水等行为已经发生,损失已经形成。数据的延迟必定导致安排、调度不能与现场同步。3 第1章绪论1.4论文的意义本论文与市面上的水务系统不同之处在于,第2小节国内智慧水务现状中已经指出,国内大多数公司硬件技术和软件技术使用的是不同公司产品,因此在硬件和软件的兼容性上可能存在各种问题,且存在一种智能水表应用于多种供水场景的情况,难以保证监测指标需求以及监测数据精度,而本论文中智慧水务系统为针对农村主干水管网的专门研发,其中下位机是根据农村主干水管网的特性开发的监测采集装置,上位机服务器则严格按照通信协议接收下位机数据,从而能够保证监测数据的有效性及精确性,同时本论文的出发点为农村主干水管网,而非城市,打破了先进科学技术只能由城市向农村普及的思想,率先在经济基础较为落后的农村开展了智慧水务的建设工作。当下的农村传统水务管网管理方式是不满足“智慧城市”理念的,因为传统的农村水务管网无法实现实时的数据传输、交换,便无法满足智能化的要求[15]。在经济基础较好的城市中,已经出现了智慧水务的解决方案。因而,为了帮助整个农村水务管网真正实现“智慧化”,实现农村主干水务管网现场的监测数据更加实时、可靠,必须设计出一套智慧水务系统,该系统必须具备管理手段科学化、设计理念人性化、对于数据的处理方式信息化的能力,能够极大的提高农村水务公司的工作效率,大幅度的降低人工成本,同时解决了传统农村水务工作方式监测不及时的难题[16,17]。所以本论文智慧水务系统的实现对农村水务行业智慧化具有深远意义。1.5论文结构与章节安排本文总共有六个章节,整体结构和各章节的主要内容如下所述:绪论,着重介绍了背景、国内外智慧水务情况研究分析、现状调研、论文研究价值、意义、论文结构和章节安排。系统总体方案,首先确定整个系统的设计原则,然后对智慧水务系统中的用户管理、权限管理、数据管理、地图展示、阀门控制等必须实现的功能模块进行了详细的分析和描述。相关技术介绍与系统架构设计,对于智慧水务系统开发过程中使用的ASP.NETMVC框架进行介绍,以及Spring.net、Log4net等智慧水务系统功能模块设计所必须的技术进行介绍。对数据库开发技术进行详细介绍并对整个智慧水务系统的数据库架构进行了详细展示。最后结合相关技术,完成了系统架构的设计。系统详细设计,根据面向对象的设计思路,对智慧水务系统进行设计。分模块对系统的设计进行详细讲解,包括系统请求处理、系统框架搭建、用户管理、4 齐鲁工业大学硕士学位论文权限设计、数据管理、地图模块、数据导出、异常阀门的状态更改、容器模块、异常捕获等智慧水务系统所不可缺少的模块。测试,通过软件测试的方式,再次验证了智慧水务系统的可行性。结束语,对智慧水务系统的设计进行总结,指出系统的优点,分析系统需要改进和完善的地方。5 齐鲁工业大学硕士学位论文6 齐鲁工业大学硕士学位论文第2章系统总体方案本章将对智慧水务系统的需求进行分析,首先从系统的总体设计原则开始分析,随后分析智慧水务系统的关键功能需求和所有系统的共性需求,最后将依据系统功能,对各个模块的功能需求进行分析[18]。2.1系统总体原则在所有的物联网系统中,其上位机和下位机进行数据传输通信,在设计系统的时候都不可避免的要分析数据传输的成功率、数据传输的成本、系统的复杂性、系统和数据传输的安全性、整个软件的开发设计周期、调试周期、版本更新、功能扩展和操作的便捷性[19]。上面提到的这些技术或者使用过程中的某些要求,某些部分是相辅相成密不可分的,而某些部分却是完全不可相容的,即相互排斥,因此本论文在设计的过程中就必须要以整个系统的核心需求为基础,进行取舍,以核心功能为重心,在保证核心功能的基础上,对某些互斥的功能或技术进行舍弃。在仔细考虑分析后再进行实际设计的严谨思想,应该不仅体现在整个系统大局观的考虑层面,而应该深入体现到后面的章章节节,即后续的通信协议制订、数据传输技术的应用、各项开发技术的研究、智慧水务系统的详细设计等各个环节。本论文搭建的智慧水务系统关键技术问题主要有:(1)是否能够准确地接收到下位机水表的水管网监测数据[20];(2)用于水管网监测数据传输的网络连接是否可靠,传输是否稳定;(3)整个系统的设计、开发、调试等是否能够保证经济成本在可控范围;(4)整个系统开发完成后投入使用是否容易维护。但凡优秀的物联网系统,都拥有稳定可靠的下位机系统,而且搭配设计优良的上位机服务器[21]。因此本论文为了搭建一个出色的智慧水务系统,不仅需要良好的下位机解决方案,而且必须计算经济成本、分析技术可行性。在工作可靠、数据传输精确、易于维护(最好能免于维护)三大核心技术问题上取得重大突破,成功解决上述问题,本论文的智慧水务系统方能设计成功,能够进入真正的实际应用中[22]。2.2业务需求智慧水务系统,它代替了农村传统的人工现场抄水表的工作,能够提高农村7 第2章系统总体方案水务公司的工作效率,降低农村水务公司的人工抄表成本。全部现场主干水表管网监测的数据都由下位机通过本论文制订的通信协议,用数据传输的方式实现传送,农村水务工作人员可以在需要查看数据时登录本论文的智慧水务系统,便可以查询、监测现场水管网的各项数据指标[23,24]。智慧水务系统采用B/S架构进行实现,其搭建的目标是为了能够满足农村水务公司后勤部门日常信息管理、监测和数据汇总的工作要求,颠覆农村传统的人工抄表方式,促进农村水务行业的“智能化”变革,改进农村传统水务行业的工作方式,提升农村水务公司的运营能力,降低员工人力成本。智慧水务系统,首先需要完成用户管理,角色分配,权限管理等系统必备的基本功能,其次,要按照上位机服务器与下位机之间制订的通信协议,完成服务器与现场下位机的实时数据传输,使智慧水务系统中能够接收到最新的现场水管网监测数据,而且在系统中实现实时监测,提供实时查询功能,并且添加地图模块,可供系统使用者随时查看各监测点的分布情况。对于异常监测点的阀门状态管理,有助于在监测数据发生异常后,第一时间通过智慧水务系统远程关闭异常的阀门。智慧水务系统不仅实现代替农村现场人工抄表的工作,而且方便农村水务公司后勤部门对数据的管理,比如统计汇总等,即要实现数据的导出功能。上述功能为系统必备的功能,同时为本论文将重点讲解的。除此之外,当下较为流行的功能,比如计费等,这些功能都会在系统实现基本的水务系统功能后,在后续的版本更新中添加。2.3主要业务功能智慧水务系统上位机服务器主要功能模块:(1)用户管理:保障系统及数据的安全性,为每个水务公司的后勤管理人员分配相应的账号和密码,防止非公司人员登录系统,窃取或者修改公司的重要数据。(2)角色分配:按照后勤管理人员的级别,为每个账号分配相应的角色,例如部门主管分配管理员角色,普通员工分配普通用户角色等。(3)权限管理:按照不同角色的定位分配不同权限,例如部门主管分配管理员角色,管理员角色拥有对系统访问的最高权限,即无限制自由访问系统内的所有模块,使用系统的所有功能。(4)数据管理:系统通过通信协议,与安装在各个水管网点的下位机进行通信,获取各个水管网点的数据,上传到智慧水务系统上位机服务器,用户通过登录系统即可查看现场数据,并能进行编辑、修改、增加、删除等。(5)地图模块:通过地图模块,智慧水务系统的使用者可以快速查看监测点所在的位置,以及监测点的分布情况,从而对不合理的监测点布局进行调整等。8 齐鲁工业大学硕士学位论文(6)数据汇总统计:提供了数据导出功能,实现系统内数据导出到Excel表格中。导出后方便水务公司后勤管理人员在Excel中进行数据进一步筛选、统计、汇总等。(7)异常监测点阀门状态更改:在智慧水务系统中接收到异常的数据后,为了避免意外情况的发生,要第一时间更改阀门的状态,将阀门关闭,对异常原因进行排查。(8)异常日志:任何系统都不可能是完美的,在运行的过程中难免会出现异常,但不能直接把错误呈现给系统的使用者,要把异常的信息记录下来,保存在日志中,待系统的开发设计人员查看,修复异常。系统功能结构图,见图2.1:图2.1系统功能结构图上述介绍了本论文系统的主要功能模块,其中用户管理、角色管理、权限管理模块,将在后续章节系统详细设计中的权限设计部分介绍,并对用户管理的效果进行展示。数据管理模块,涉及智慧水务系统上位机与下位机通信,将在本章下一节中进行通信设计,规定通信协议,下位机按照规定的通信协议格式发送数据,上位机服务器接收到数据,即可完成数据管理模块,将在第4章中详细介绍。数据汇总模块,使用NPOI技术,将数据导出到Excel中。通过对地图API的学习研究,完成地图模块。通信协议中规定指令下发的下行协议,阀门管理通过下行协议,对系统下位机发送控制指令,实现阀门控制。以上功能的具体实现将在第4章中完成。2.4上位机与下位机通信设计系统的数据管理模块以及异常监测点阀门状态更改,涉及上位机与下位机通信的问题,因此针对通信问题,需要展开相关通信手段的研究及设计。2.4.1TCP/IP近年来,以TCP/IP为基础的互联网迅速发展,传输速度快,可靠性高,可以9 第2章系统总体方案利用现有的丰富资源进行联网通信,不需要架设专用的通信线路,而且利用标准的通信协议,便于以后扩展系统[25]。在智慧水务系统中上位机服务器和下位机使用以TCP/IP为基础的网络下发指令和上传数据,不再使用电力线载波进行传送,主要是考虑到以TCP/IP为基础有以下优势:(1)从通信的稳定性方面分析,通过TCP/IP协议来实现智慧水务系统上位机和下位机的通信相对于其他通信方式更加可靠,更加稳定。(2)从经济角度考虑,互联网通信的资费不断降低,相对于其他的通信方式来讲,在成本上优势更大。(3)TCP协议和IP协议实际上是两个协议,他们相互独立但是又联系密切,不可分割。其中TCP协议的主要工作是完成下位机和远方的上位机服务器通信,使二者建立起连接。而IP协议的工作是完成地址的寻找,帮助发送的数据成功到达目标地址,使目标成功接收到数据[26,27]。本论文智慧水务系统中当下位机要传输监测的水管网数据到服务器时,TCP协议将现场的下位机与上位机服务器连接起来,IP协议完成在服务器中寻找地址的工作,二者的紧密结合促使水管网监测数据成功上传到目标服务器。2.4.2通信协议通俗的讲,通信协议,它的本质是在一个通信系统中,不同的对象要实现通信,必须有全部对象都能认可、并且可以实现的约定,该约定不仅规定了对象之间需要遵循何种约定,而且必须行之有效,既要能够保证实现可靠、稳定的信息传输,让通信的双方都能够接收到对象发送的数据,又必须确保自己的数据可以成功传送到接收方。上述即为软件设计开发过程中经常要用到的通信协议。在智慧水务系统中,实现下位机监测记录的水管网数据成功上传到上位机服务器,完成下位机与上位机的通信,如何定义约定是解决问题的关键,即通信协议是本论文智慧水务系统上位机服务器能够接收到水管网监测数据的基础,如果无法完成协议的制订,后续智慧水务系统的其他模块便失去了其意义。智慧水务系统本质相当于一个远程抄表系统,该类远程物联网系统都分为本地通信网络,远程通信网络,即本论文将在下面的通信协议中指出的下行和上行。所谓的本地通信网络实质为下位机数据采集发送装置和水表上负责监测的传感器之间的通信,由于现场采集传感器与下位机都已经部署调试完毕,本论文把采集传感器与下位机统称为下位机。本论文需要实现下位机与上位机服务器的通信,本小节通信协议约定下位机与上位机如何进行通信,通过何种格式进行通信。例如:数据应该使用何种格式进行传输、上位机收到下位机的数据后应该如何进行答复、上位机与下位机之间的网络通信速率如何设定等。当然最重要的是要确定10 齐鲁工业大学硕士学位论文两者之间交换数据时必须严格执行的协议[28]。为了实现本论文智慧水务系统上位机服务器与水管网监测下位机的通信,本小节制订了智慧水务系统的通信协议[29]。本协议以GPS的NMEA-0183协议为基础。ASCII码是NMEA通信协议所规定的通信语句的基础,NMEA-0183协议语句有其固定的数据格式,如下:“$”代表通信语句的开端;“,”是域的间隔符;“*”是负责校验、识别的符号,其中后面的两位数代表的是校验和,把“$”和“*”之间全部的字符取出来,除去“$”和“*”,然后将它们进行按位异或的操作,从而得到异或值;“/”的含义为终止,全部的通信语句必须用回车换行来作为完结的标志,即ASCII字符的“回车”(十六进制的0D)和“换行”(十六进制的0A)。智慧水务系统通信协议:数据从系统传递到下位机称为下行,反过来,数据从下位机传送到系统称为上传[30,31]。(1)下位机每隔10分钟发送数据帧到服务器。(2)当下位机接收到上位机系统发送的下行指令,按照通信协议中约定的格式进行操作。系统到下位机下行通信协议:格式:$GPRSA,<1>,<2>*xx$GPRSA:传输指令的开端符号及语句格式说明(本句为下位机与上位机系统下行通信数据)。(1)密码,从000000到999999(首位0也将传送)。(2)指令代码,从00到99(首位0也将传送)。(3)语句结束标志符。(4)xx从“$”开始到“*”之间的所有ASCII码(不包括“$”和“*”)的异或校验和。(5)回车。(6)换行。下位机到系统上行通信协议:格式:$GPRSB,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>*xx例如:$GPRSB,25350500000,16,3,0.32,12.86,0.60,+23.50,+21.60,26*xx$GPRSB:传输指令的开端符号及语句格式说明(本句为下位机和系统上传通信数据)[32]。(1)下位机ID或者SIM卡号码,共11位。例如:15194199863。(2)主表流量,从0000000到9999999(共7位,首位0不传送)。11 第2章系统总体方案(3)副表流量,从0000000到9999999(共7位,首位0不传送)。(4)管网压力,float型数据,精确到小数点后2位。(5)电瓶电压,float型数据,精确到小数点后2位。(6)瞬时流量,float型数据,精确到小数点后2位。(7)控制箱温度,从-99.9到+99.9(正负号也传递,十位是0不传送)。(8)水表箱温度,从-99.9到+99.9(正负号也传递,十位是0不传送)。(9)SIM900A信号质量。0~31,99。(10)语句结束标志符。(11)xx从$开始到*之间的所有ASCII码的异或校验和(不包括这两个字符)第一代通信协议,异或校验和没有利用。(12)回车。(13)换行。本小节确定TCP/IP为网络基础进行指令的下发和水管网监测数据的上传,同时制订指令下发和数据上传的通信协议,规定下发指令和上传数据的格式。将在第5章中的网络编程模块中应用TCP/IP协议和通信协议,实现智慧水务系统上位机服务器获取水管网监测数据,即相当于实现一个类似智能电网领域应用的远程抄表功能[33]。2.5本章小结首先从一个系统的总体设计原则出发,分析了系统的主要设计目的是要实现现场数据实时传送到上位机。有了关键要实现的功能,在此基础上,接着完善系统,又考虑了所有系统设计都要考虑的问题,比如经济成本、工作效率等。接着针对项目本身,分析了智慧水务系统的本质,本质上是一个能与现场下位机实现实时通信的服务器。接下来陈述了系统的业务需求并对要实现的功能进行了介绍,对智慧水务系统的各项业务需求进行了列举,用户管理、角色分配、权限管理这三个业务属于所有系统所必须的功能,数据管理是本论文智慧水务系统的关键,能否实现代替农村水务公司传统人工抄表工作,实现现场水管网各项指标数据的实时、精准上传,决定着本论文智慧水务系统是否设计成功。地图模块,可以实现在智慧水务系统中查看各监测点的位置。数据汇总统计,也是重点功能,实现数据导出到Excel中,极大的方便了对大量现场数据的统计分析工作,有助于水务公司管理人员进行深层次的数据分析,发现更多隐藏的问题,防范未然。阀门管理模块,当监测数据出现异常时,系统使用者能够在系统中远程关闭异常的阀门,可以防止意外发生,便于具体排查异常原因。同时对各项功能后续的研究设计方法进行总结。最后,完成了上位机与下位机通信的设计。12 齐鲁工业大学硕士学位论文第3章相关技术介绍与系统架构设计3.1ASP.NETMVC框架介绍智慧水务系统是以ASP.NETMVC框架为基础搭建的,本节首先对ASP.NETMVC框架进行介绍。3.1.1ASP.NETMVC的简介ASP.NETMVC是一种框架,归属于软件开发方式的一类,常常用在以html+css+javascript和服务器脚本为基础搭建起来的系统和网站。目前的ASP.NET有三种可以适用的开发模式,WebPages、MVC(ModelViewController)以及WebForms。MVC属于三个ASP.NET开发模型之一[34]。本节将从MVC模式开始介绍,接下来将进一步讨论ASP.NETMVC的主要概况。框架使用在以MVC为构架模式的软件开发中的重要性日渐凸显。为了提高程序开发效率,减少应用开发的时间,本论文中的智慧水务系统将使用框架进行开发。使用框架开发可以保证应用的可靠性和稳定性,真正意义上实现了节约开发成本。在开发的过程中使用高效的开发框架是软件架构设计必不可少的步骤。当下较为受欢迎的设计模式为MVC,可以追溯到上个世纪的70年代,IBM公司就已经学习研究过MVC(Model,View,Control)框架模式,而且提出了一个名为Sanfronscisico项目的计划[35]。随后网络应用得到了充分快速的发展,伴随此趋势,MVC模式作为一种超前的设计理念,在Web程序的开发中得到了广泛的应用,因为它能够提供一种最为基础的分析思路,可以帮助解释分析Web程序的模型,同时在规范化软件工程的工作上起到了重要的作用,形成了一目了然的产品构造设计框架。既然MVC开发框架可以用来创建Web程序,而且本论文中的智慧水务系统上位机服务器本质上也属于Web应用,因此本论文的智慧水务系统采用MVC(Model,View,Controller)框架进行设计,如图3.1所示:图3.1ASP.NETMVC软件架构运行流程图13 第3章相关技术介绍与系统架构设计Model在MVC中的含义是模型,它既是对程序状态的封装,同时也封装了应用的业务功能。View在MVC中的含义是视图,它在智慧水务系统中的作用是完成用户界面的呈现,系统中接收到下位机传送的数据全部通过View展现给系统使用者,而数据实际上是存储在后台数据库中的,因此本质上可以将视图理解为用来显示数据库中的条条记录。Controller在MVC中的含义是控制器,控制器,顾名思义,其主要发挥的功能就是控制,即它在系统中能控制数据库数据的增删改查等操作。(1)ASP.NETMVC框架的特性将关键点与辅助点进行分离,换言之,即为将输入进行分离的思维逻辑。业务层的设计逻辑和展示层的设计逻辑,都拥有容易进行测试的特性并且由自带的测试功能进行驱动[36]。系统在MVC架构模式中使用的全部是以接口为基础而且能够被Mock测试到的组件,因此专门对系统测试的工作人员并非定要在ASP.NET程序进程中开启Controller即可对系统进行调整、测试。上述特点使整个系统的调整、测试运行具有快捷性、高效性。MVC是一个使用便捷,可扩展性强的框架。在系统软件开发中使用MVC框架,便于实现对重要系统的转移和对特殊系统的定制[37]。系统软件负责开发的工作人员能够以系统的需求为基础,进行视图引擎的个性化设计,进行URL的重新编写以及Action函数的重新加载等等。同时MVC框架可以极好的兼容依赖注入(DI)技术以及反转控制(IOC)思想。由于MVC框架拥有极其实用的机制能够对路由进行重新编写,该强大的功能可以帮助负责系统软件开发的工作人员形成通俗易懂且能够检索的URL。同时,URL可以借助这个重新编写功能,让它对进行搜索的引擎表现出和谐性,更强大的是能够同时隐藏所有文件的默认后缀名[38]。系统负责软件开发的工作人员允许直接用ASP.NET自带的页面标记,并且还可以使用自带的用户控件以及框架自带的模板页。软件工作人员可以通过使用Razor引擎来实现在系统中嵌入表达式,设计视图布局的页面,对数据进行绑定关联、精准的确定位置,指出服务器的控件、使用模板等等。通过对当前的ASP.NET代码支持,MVC框架能够允许开发人员运用多种认证,比如窗体的认证,微软认证、URL认证等等[39]。因为它满足分组的管理、规定,Output,数据在系统中的缓存方式,Session、Profile系统配置的管理特性[40]。(2)运行ASP.NETMVC框架的流程本小节进行简要的介绍,后面章节将会详细的对ASP.NETMVC处理请求的过程及管道事件进行讲解。首先,当系统的使用者对ASP.NETMVC的Web应用程序发出请求,第一步14 齐鲁工业大学硕士学位论文为将请求传递给HTTPModule(UrlRoutingModule对象)。接下来,由HTTPModule对用户发出的请求进行解析,然后对需要执行的路由对象进行选择[41]。在这一环节中必须着重关注的是,HTTPModule并非会匹配所有的路由对象,而是将匹配出来的第一个路由对象作为选用目标。下一步,UrlRoutingModule对象从HTTPModule匹配的第一个路由对象中获取到另一个对象,称为IHttpContext对象,然后将处理权交给IHttpContext对象,让它对所请求的处理进行判断,并继续进行。假如系统正常,没有bug的情况下,这个获得控制权的对象IHttpContext与另一个对象MvcHandler是同一个对象。最后一步,与IHttpContext相同的对象,即MvcHandler对象,由它对应当匹配的控制器进行筛选,最后让筛选出来的控制器解决用户对系统所发出的请求。指向ASP.NETMVC框架的Input模块以及处理器,将会执行三个动作:1Controller的选择,即在应用程序中筛选出最佳的控制器。2将指定的Controller进行实例化。3调用被实例化的控制器中Execute函数。3.1.2ASP.NETMVC框架与传统开发方式的对比(1)在MVC框架的开发方式中剔除了ViewState这个隐藏域:拖控件式ASP.NETWebForm开发方式在提交系统状态信息的相关表单时全部使用ViewState隐藏域实现,但是因为浏览器/服务器架构本身就有缺陷,此ViewState隐藏域在保存系统和用户数据时,将在隐藏域内生成大量的无用隐藏字符,致使整个页面出现大量冗余代码,每次网页加载都将加载这部分冗余代码,从而导致系统运行缓慢卡顿[42]。ASP.NETMVC框架对该弊端进行了改进,消除了ViewState隐藏域的问题。(2)HTML语言以简单便捷著称:在.NETMVC中有生成Razor视图引擎选项,该引擎的功能是完全实现对HTML代码的控制,而传统WebForm生成的aspx代码过于繁琐,在多次页面请求后也会产生大量无用而且会拖慢系统的代码。(3)对处理服务器端的请求会更加迅速,为用户展现请求页面时速度更快:其原因为之前的WebForm方式开发是创建树结构的控件,但是MVC却不使用与其相同的树结构,因而简简单单的对相关视图进行布局便可[43]。因此客户端的呈现所消耗的时间更短,服务器处理的速度将更快。(4)单元测试:传统的Webform进行软件测试是较为困难的,利用MVC,可以使用户UI与业务逻辑松散耦合,并且避免了控制器在ASP.NET进程中执行,便于软件检测调试。15 第3章相关技术介绍与系统架构设计3.2面向对象技术大约从1980年开始,出现一种新编程的思想,名为面向对象编程法,英文为ObjectOriented-Method。其影响力已经基本贯穿了全部软件编程的行业[44]。因为这种面向对象的编程方法,不仅仅涉及到思想策略问题,它还颠覆了传统的过程性开发,形成了新的编程技术思想,完全是一种全新的科学编程方法,而且是完整的,全面解释了软件开发搭建的系统与客观现实的密切联系。它同时提供了可研究的开发者角度,并提出了处理相关问题的方案。此思想为一套全面搭建软件的解决方案。从上述层面来总结:面向对象的编程方法首先是一种开发方法,用来开发软件,再者它具有比如类的概念,有封装的特性,提出了继承的思想,高聚合。面向对象的编程方法到底该如何理解呢?学习人员可以将其解释为运用客观现实中的事物,以及要处理问题领域中存在的客观事物,将这些事物运用到软件设计编写的实际过程中[45]。用人类在客观现实的认知方法中经常使用的思考逻辑,明确、通俗的归纳出事物的特性。面向对象的编程技术具有抽象特性、封装特性、继承特性和多态特性。面向对象编程技术的基本论点,如图3.2所示:图3.2面向对象编程原理图客观现实本身就是由不同的对象组合在一起构成的,所有客观世界中的具体事物全部可以划到对象这个范围内,简单的事物可划为简单对象,而部分对象属性众多,构成比较复杂,但将其分解来看,本质上为众多小对象组成的,这些小16 齐鲁工业大学硕士学位论文的对象绝大多数都是由简单的事物构成。由于客观现实的事物有许多公共的属性,即每个事物都有这个属性,通常可以将具有这个特点的对象划为一个相同的类型,并实例化这个相同的类,产生对象。类又可以从子类中派生,子类的特性是由继承自父类的特性和自己的特性共同组成的[46]。对象产生之后,与客观现实中相同,对象与对象之间同样需要沟通,因此便需要一个用于通信的通道,通过该通道进行消息的传送和接收。3.3Spring.Net技术一般ASP.NETMVC程序设计开发时,开发者都会使用部分开源的三方插件,例如Java有Java的框架,.NET有.NET的组件。在.NETMVC中开发者经常使用的框架有控制反转的框架Spring.Net,本小节将介绍IoC技术中的一种框架Spring.Net,开发人员主要通过该框架来实现系统代码的“高聚合低耦合”,提高系统代码的可移植性,便于代码的重复利用[47]。上面提到的IoC,此处对IoC进行说明,IoC英文全称为InversionofControl,中文翻译为控制反转。一般情况下,开发人员在进行系统开发时,使用面向对象的编程方法,程序开发人员要创建许多操作类,而在使用控制反转技术后,将对象的创建权转移了,有一个专门的容器来实现对所需操作类对象的创建工作。在用常规手段进行软件开发设计的过程中,当需要创建所需操作类对象时,除了进行类的定义,还需规定类所要具有的属性,那么在使用控制反转开发方式时,既然把对象的创建权转移了,就需要赋予此容器(能够创建对象的容器)一些额外的功能,即当对象被创建时,让其同时为对象附加上所需要的属性,并对属性进行初始化,为对象中的函数设置初始值。IoC控制反转的本质思想:不去直接生成对象,而是规定用何种方式来实现对对象的创建描述。在系统的程序中避免对象直接与所需的服务建立关联,通过在Web.config文件进行配置,指定某组件对应某服务。指定完成后,最后通过依赖注入,即通过能够产生对象的“容器工厂”实现对象、服务的连接通道。有句英文是TheHollywoodPrinciple:Don’tcallus,we’llcallyou,其中文含义可以理解为,不用费力去寻找我,在需要的时候,我自然会主动联系你。其内涵与控制反转的原理相同,都是以面向对象为基础的。换言之,容器具有绝对的控制权,可以理解为,在容器内的一切,对象、组件等,都必须要听从容器的安排。简而言之,在使用了控制反转思想和依赖注入技术后,本论文设计的系统自17 第3章相关技术介绍与系统架构设计身不必再创建对象,同时不必对生成的对象进行维护。全部的创建工作、对象的维护工作,相当于全部外包给一个“容器公司”,该“容器公司”负责所有的创建工作和维护工作。对象的创建、维护工作全部外包,即相当于系统本身将权利外交,便实现了所谓的控制权利反转,即控制反转。举个例子,有一个类型A,它需要一个实例,而其所需实例为B类型的,并且所需类型与创建类型B实例完全无关,全部使用“外包公司”进行构建。因而,使用控制反转的方法就可以实现对目标控制器的激活,在技术上实现了重大的突破。Spring.Net对面向对象的编程方法有大量的友好支持,而且实现了面向切面,它能够实现把系统的业务逻辑层与系统的表现层进行分离,但实际上两部分联系的却更紧密,即面向对象开发人员所熟知的高聚合思想。Spring.Net的研究应用将在第5章系统的详细设计中进行叙述。3.4Log4Net技术Log4Net技术,在本论文智慧水务系统中,将用它来实现对异常日志的记录,因为该项技术能够将系统代码运行中的一些信息进行输出,可以将该部分信息输出到文本文档、系统的后台数据库中等等。异常日志其实是系统中很重要的一部分,因为所有系统都不可能完美,都会产生BUG,为了方便开发管理人员对BUG进行查阅,记录BUG就成为一项不可缺少的工作。因此异常日志在系统中的位置类似于飞机上的黑盒子。开发人员可以查阅系统的异常日志,判断系统的运行状态,进而判断系统是否存在异常,帮助开发人员发现问题、解决问题,完善系统的稳定性等。异常日志可以将整个系统的异常详细记录下来,而且可以将影响系统稳定,造成系统异常的关键数据捕获,供开发管理员查看。对于Web应用来讲,在系统运行过程中一旦发生异常,通常是直接将错误信息展示给用户。不仅用户看不懂错误信息,而且可能在错误信息中会包含一些重要信息,存在重要信息泄漏的风险。所以为了提升使用者的体验,防止重要信息被动机不良的人员利用,以及保证系统的安全,本系统采用日志的形式来记录异常,供开发设计人员进行问题排查,对用户仅展示错误提示页面。Log4Net的研究应用将在第5章系统的详细设计中进行叙述。3.5数据库技术本论文智慧水务系统中上位机服务器接收到下位机上传的水管网监测数据,全部需要进行存储,由于数据量巨大,因而必须要采用合理的存储方式进行存储。由于数据库稳定、可靠,不仅可以大量存储数据,而且方便对大量的数据进行分18 齐鲁工业大学硕士学位论文析、查询等,所以必然要选择数据库来存储[48]。市面上的数据库多种多样,各个类型的数据库都有其优缺点,针对智慧水务系统特点选择适合本论文系统的数据库,既不能造成资源的浪费,又能满足智慧水务系统的需求。3.5.1数据库的选择本论文智慧水务系统中上位机服务器的搭建,采用微软的SQLServer数据库存储下位机上传的水管网监测数据,之所以选择该数据库来进行存储,原因如下:第一,确保数据库中存储的水管网监测数据安全,微软SQLServer本身的安全级别就很高,所以在本论文设计的系统中使用该数据库,可以保证后台存储水管网监测数据的安全。再者,本论文中的智慧水务系统上位机服务器搭建时采用的是微软的操作系统,在微软的操作系统上运行微软自家的数据库,兼容性更好,运行效率也更高,所以综合上述两点,既节约了成本同时极大的提高本论文系统运行效率。第三,本论文中智慧水务系统上位机服务器不仅仅能接收数据,后期对它的定位还包括对数据进行部分管理,所以本论文中系统对数据的要求是多方面的,既能存储数据,又能实现管理。SQLServer不仅可以存储数据,还能对所存储的数据进行分析和查询,综上几点它刚好可以满足本论文中系统的要求,可以完成数据的存储功能。第四,在选用数据库时,除了考虑数据库本身的安全性,同时需要考虑在数据写入数据库中的过程是否存在安全隐患,本论文中系统会在数据库中写入数据时进行加密,确保数据的安全,无论是水管网监测的数据,以及数据库的操作日志文件,为了保证它们的安全,全部进行加密,提升整个系统的安全级别。第五,本论文中系统,在数据库架构设计时采用外键管理,由于对操作进行了加密处理,因而,需要对应的密钥管理,任何加密过程的存在必有密钥与之对应[49]。同时,为了安全性,二者应该分离。本论文中系统的使用人员,拥有外键操作的权限,他们可以使用外键,即脱离系统本身的第三方,对存储数据的数据库进行加密操作,同时需要与之匹配的密钥管理操作。3.5.2数据库安全性设计前面提到了数据库的安全性,整个系统在数据的安全性问题上需要专门进行优化,设计如下:首先对本论文中系统使用者的账户安全进行设计:本论文中系统是基于B/S架构的,即浏览器/服务器结构,全部下位机上传到上位机服务器的水管网监测数据都是在通信网络中完成的,整个业务流程较为复杂。在上位机服务器的操作系统中,系统的使用者在操作系统中打开浏览器,进行登录,登录成功后,便可以19 第3章相关技术介绍与系统架构设计在服务器的浏览器中进行操作,下位机的监测数据上传到服务器中,智慧水务系统中便可以查询。整个过程,一旦发生数据的泄漏,对水务公司造成巨大损失,因此,对于上述的数据传输过程,必须采取一些技术手段,来防止传输过程中发生数据泄漏问题,方法一是将数据分散开,数据存储时避免集中。针对不同的用户设置不同的权限,使用户对数据的访问权限不同[50]。方法二,对数据的传输过程加密,因为数据在传输过程中很容易被黑客半路截获,所以传输时必须将数据加密,截获的人无法获取密钥,便无法访问数据,因此杜绝了数据被截获造成数据泄漏的隐患,提高了安全性。除了上面提到的加密手段,采用在数据库里定义不同的视图,通过该方法,对系统不同的角色分配不同的权限,权限与视图相对应,不同的权限不能对不匹配的视图管理,视图操作不会对数据库中的数据形成直接的影响,因而数据安全级别更高。在一个规模较大的系统管理中,肯定会出现在相同的时间段内发生复杂系统操作的情况,所以如果系统处理高并发的能力比较弱,那么将会发生系统的崩溃,这时需要使用数据库中的事务,事务能够帮助系统在发生崩溃时实现自我恢复,实现回滚,恢复到崩溃之前的状态,数据库的事务提升系统在应对高并发时的能力,让系统具有一定的容错能力,尽管出现系统崩溃的情况,依然可以保存崩溃之前的状态,并能实现状态的恢复。这样,系统变得更加可靠、稳定,数据能够安全、完整的保存在数据库中。3.5.3数据库架构设计本论文智慧水务系统的数据库架构设计见下图3.3-1,图3.3-2:图3.3-1数据库架构图1图3.3-2数据库架构图2数据库中的表T_GPRSReceive+数字,该命名规则的表用于存储下位机上传的水管网监测数据,不同的数字代表不同的地点,同一个地点的数据存储在同一个20 齐鲁工业大学硕士学位论文表中。表结构设计如下图3.4:图3.4数据表字段设计表T_GPRSReceiveAllNew中同样存储的是下位机上传的水管网监测数据,与T_GPRSReceive+数字表不同,此表中存储的是上位机服务器接收到的最新数据,因此,此表中所存储的数据并不都是同一个地点数据,因为在同一时刻,会出现多个下位机同时上传数据的情况,服务器会同时接收到多个下位机上传的数据并存储到数据库中。所以该表中存储的最新数据会包含不同水管网监测点上传的数据。T_GPRSReceiveAllNew表字段结构设计与图3.4相同。表T_GPRSReceiveError中记录出现错误的数据,在下位机上传数据到上位机服务器时,根据本系统制订的通信协议,在传输格式中有一项为出错指示,当上位机服务器接收到的数据中出错指示字段内容为出错时,此字段状态为出错的数据全部被存储到T_GPRSReceiveError表中。T_GPRSReceiveError表结构设计如下图3.5:图3.5错误数据表字段设计21 第3章相关技术介绍与系统架构设计表T_GPRSReceiveInfor中记录了所有下位机水管网监测点的数据信息,与T_GPRSReceive+数字中存储的数据不同,T_GPRSReceiveInfor中存储的是初始信息,主表初始状态,副表初始状态等,而T_GPRSReceive+数字表中记录的是监测点的主表流量,副表流量等。T_GPRSReceiveInfor表结构设计如下图3.6:图3.6T_GPRSReceiveInfor表结构设计用户表将在后面第5章中介绍用户管理模块时,进行详细介绍。3.6系统架构设计传统MVC框架开发方式的系统架构思想如图3.7:图3.7系统架构图上图开发架构的初衷为实现系统的解耦,将各层的代码分开,易于系统后期的升级维护,以及提高系统的重复利用率,但在实际开发过程中,并未实现完全的解耦。因此通过对本章第1小节中ASP.NETMVC框架的学习研究,结合面向对象思想中的对象接口技术,在传统架构思想中加入接口技术,使系统的层次划分更详细,真正实现系统各层的丢耦合性。通过Spring.Net实现对各层对象的创建,使用Log4Net技术完成异常日志的记录工作。同时由于系统的数据存储量较大,为保证数据存储的安全性,将数据存储在不同的服务器数据库中,实现数据的分布式存储。本论文智慧水务系统的架构设计图如下图3.8:,结合面向对象中对象接口技术,在用户层和业务逻辑层中添加了业务逻辑层接口,用户层通过调用业22 齐鲁工业大学硕士学位论文务逻辑层的接口实现对业务逻辑层的访问,从而实现用户层和业务逻辑层的完全解耦。业务逻辑层与数据层之间添加数据层访问接口,业务逻辑层通过数据层访问接口实现对数据层的访问,从而实现用户层和业务逻辑层的完全解耦。图3.8智慧水务系统架构图3.7本章小结本章介绍了几种在智慧水务系统开发设计中运用到的技术,并且对智慧水务系统上位机服务器数据库架构的详细设计进行了展示。ASP.NETMVC框架是软件开发方式的一种,通过与其他框架开发方式的对比,体现出ASP.NETMVC在开发中的便捷性、高效性,从而确定使用ASP.NETMVC框架作为本系统的开发方式。综上本论文智慧水务系统采用ASP.NETMVC框架搭建实现,该框架是本系统设计的基础。面向对象的开发方式,相对于传统面向过程的开发方式,面向对象开发方式使系统的代码解耦,可替代性强,易于维护。面向对象的开发方式通过对象、类、继承、封装等方式体现了其抽象性、多态性等特点,形成了独特的软件开发手段。Spring.Net技术将系统自身从对象创建工作、对象维护工作中解放出来,将对23 第3章相关技术介绍与系统架构设计象的创建、维护、属性赋初值等工作全权转交“容器公司”。Log4Net技术应用于网站发生异常时,记录异常信息,异常信息不能对用户展示,管理员可以通过查看基于Log4Net的日志文档,查询异常信息,进而修改系统存在的BUG。通过对数据库技术的介绍,分析选出了要选用数据库,叙述了数据库安全性的设计,对整个智慧水务系统的数据库架构进行设计,并进行了相关展示。最后,结合本章介绍的所有技术,并在传统结构的基础上进行改进及创新,分析设计了本论文智慧水务系统的架构图。24 齐鲁工业大学硕士学位论文第4章系统详细设计4.1ASP.NETMVC请求处理原理4.1.1进入管道(1)每次打开浏览器,在浏览器中输入一个网络地址,例如输入“http://www.baidu.com/”,浏览器端接收到用户的请求后会向目标服务器发送一个请求,这是一个以HTTP为基础的网络请求。可以在浏览器中查看浏览器向服务器发送请求的详细信息、格式等。当用户通过浏览器向服务器发送网络请求后,服务器接收到用户请求,网络服务器的Windows核心内存在一个称为HTTP.SYS的组件,该组件会在此时进行请求的捕获,并成功捕获到用户从浏览器端发出的请求[51]。下一步,该组件会对接收到的用户请求进行解析,解析完成后,假如该请求需要IIS服务器处理,组件会将解析的结果转交给IIS服务器,而且是通过Request请求的方式。什么是HTTP.SYS呢?该组件在内核模式中是核心,它位于微软服务器和微软的XPSP2系统中。而且它提供的接口具有最高权限,要求所有的程序与HTTP通信时必须通过它的接口来实现。当用户通过浏览器向服务器发送请求,如果服务器中的HTTP.SYS组件检测到用户的请求在系统中有相应缓存,此时浏览器将会直接向用户响应请求,见图4.1:图4.1浏览器处理请求响应25 第4章系统详细设计所以HTTP.SYS组件本身自带了一个能够缓存记录用户请求的存储区,此特性为该组件一个尤为重要的功能。该组件会自动的在存储区中缓存一定时间段内的用户请求处理结果,因此用户在一定时期内再次发出相同的请求时,HTTP.SYS在对请求进行解析后能识别相同的请求,并在存储区中进行寻找,发现与该次请求相匹配的请求时,将会从存储区中直接进行用户请求的响应,此方法能够极大的提高服务器端的反应速度,提升用户的体验。不仅如此,部分用户的请求是一个静态的响应结果,此类静态的内容会被存储在系统的内核之下,当进行相同的静态内容请求时,能够直接从内核响应,响应速度进一步得到提升。IIS服务器能够识别来自HTTP.SYS的请求是否为Request请求,如果是Request请求,IIS服务器会解析出当前请求中的context-type类型,然后根据解析出的类型,从处理程序映射表中去寻找与该类型相匹配的,仅当在映射表中寻找到相应的请求类型时,IIS服务器允许能够相匹配的请求处理程序映射表中的程序去解决处理。如果IIS服务器在映射表中没有寻找到相应的请求处理,无法完成匹配。并非所有的资源都是静态的,那么对于动态的资源,又该如何处理:一般来说,对于动态资源IIS服务器会去加载一个专门的处理组件,叫做dll,该组件的加载是在一个工作进程中进行的。例如在IIS6.0中,假设IIS服务器发现当前的ASP.NET请求超出服务器当前的解决范围时,它将会加载aspnet_isapi.dll组件,该组件是由W3WP.exe负责维护的工作进程进行处理的。当网络应用程序在服务器中第一次加载时,W3WP.exe工作进程会加载组件aspnet_isapi.dll,然后调用aspnet_isapi.dll加载调用服务器的.NetFramework框架,建立CLR的运行时。在IIS服务器的所有工作进程中存在一个池,叫做应用程序池,这个池能够同时负责多个应用的程序域,AppDomain。当用户通过浏览器向服务器发送的请求被HTTP.SYS组件接收到时,应用程序域AppDomain由一个专门生产程序域的工厂建造,该工厂为程序域建造工程,称为AppDomainFactory。在一个IsapiRuntime被加载时,将同时建立一个对象用于封装用户的请求,称为IsapiWorkerRequest,并且将封装了用户请求的IsapiWorkerRequest对象,传递给程序的HttpRuntime运行时,此时用户发出的请求便正式进入程序的管道请求。HttpRuntime是程序管道请求的开端,也称为入口。当请求进入管道时,必须先进入HttpRuntime,HttpRuntime对后续如何对进入管道的请求进行处理拥有决定权。HttpRuntime拥有一个池,称为HttpApplication,当用户请求进入管道时,它将从这个池中选择与其请求相对应的HttpApplication,来进行用户请求的处理。HttpRuntime以封装用户请求的IsapiWorkerRequest对象为基础,建造HttpContext对象。26 齐鲁工业大学硕士学位论文HttpApplication的生成,同样存在与之相对应的建造工厂,该工厂能够生产新的HttpApplication,如果池中本来已经存在符合要求的,便不会进行二次生产,直接从池中选取现成的,可用的对象,节省资源。HttpApplication可以调用ProcessRequest函数,在其内部能够完成十九个管道事件。下面列举用户请求从进入管道到完成经历的十九个事件:(1)BeginRequest直译为请求处理的开端。(2)AuthenticateRequest代表通过用户授权的信息进行请求验证。(3)PostAuthenticateRequest代表授权信息被成功获取到。(4)AunthorizeRequest代表检验请求是否拥有权限并进行授权。(5)PostAuthorizeRequest代表成功取得授权。(6)ResolveRequestCache代表检验用户请求的页面是否在存储区中存在缓存。(7)PostResolveRequestCache代表如果上一步检验到请求缓存,便请求获取存储区中的缓存。(8)PostMapRequestHandler表示为请求的页面建造对象。(9)AcquireRequestState代表获取Session,获取之前要检测当前的对象是否对IRequiresSessionState接口进行实现。假如判断的结果为已经实现,便可从浏览器中发送的用户请求信息中,获取一个ID,名为SessionId,然后从Session池中,取出与之对应的Session对象,然后将它的值赋给HttpContextSession属性。(10)PostAcquireRequestState代表拿到从池中获取对应的Session。(11)PreRequestHandlerExecute代表开始准备将要执行的页面对象。执行的函数名为ProcessRequest。假设请求的恰好为该函数,页面的生命周期开始计时。(12)PostRequestHandlerExecute意为页面对象已经执行完毕。(13)ReleaseRequestState的含义是对请求状态进行释放。(14)PostReleaseRequestState代表上一步中状态释放已经完成。(15)UpdateRequestCache代表更新存储区中的数据。(16)PostUpdateRequestCache代表已经完成存储区中数据的更新工作。(17)LogRequest代表请求记录日志。(18)PostLogRequest代表日志记录工作已经结束。(19)EndRequest代表整个程序的管道请求全部结束。4.1.2路由注册所有程序都是通过Global.asas中的Application_Start()函数开始运行的。路由注册发生在该函数的子函数RouteConfig.RegisterRoutes(RouteTable.Routes)内。4.1.3创建MvcHandler对象其中,当请求进入第七个管道事件时,会产生一个名为MvcHandler的对象,27 第4章系统详细设计并且将它的值赋给HttpContext的remapHandler属性。(1)如果用户通过浏览器发送的请求为动态资源请求,地址便会从路由表中寻找与之对应地址规则的路由。(2)寻找路由表,将表中全部路由都查找一次,查找的类型为Route,查找完成后,对对象的GetRouteData函数进行调用。(3)在类型Route的对象内存在名为GetRouteData的函数,通过对该函数的调用,能够获得一个RouteData的对象。该对象的初始值为RouteHandler的值。在此之后进行检验,判断该对象的值是否符合相应的约束,如果满足要求,返回空,结束函数的调用,将Route的原始地址值以及所在的命名空间都存储到RouteData中,并将该对象返回。(4)创建一个MvcHandler对象,将RequestContext的值保存到该对象中。4.1.4执行MvcHandlerProcessRequest方法用户请求处理管道中的第八个事件能够检测HttpContext中remapHandler对象的值是否为空值,假如检测结果为空值,便以地址为基础进行页面对象的创建工作,反之,直接跳过该事件,进入请求处理管道的下一个事件,如图4.2:图4.2MvcHandlerProcessRequest方法4.1.5总结ASP.NETMVC是如何进入请求管道的用户通过浏览器发出请求——>请求到达IIS服务器——>IsapiRuntime——>HttpWorkerRequest——>HttpRuntime——>HttpContext——>找到Global文件,并且编译该文件——>确保Global文件中Application_Start()函数被成功调用——>创建HttpApplication(池、栈),如果池中没有根据Global文件编译的类型则通过反射的形式创建出HttpApplication——>获取Config中所有的HttpModules,同时获取System.Web.Routing下的UrlRoutingModule,执行每个Modules下的Init()方法,Ur28 齐鲁工业大学硕士学位论文lRoutingModule中的Init()方法完成请求管道第七个事件的注册——>进入管道——>第7个事件触发,执行相应的方法——>完成MVCHandler的创建——>请求管道的11与12事件之间执行MvcHandler中的ProcessRequest方法。在该方法中寻找控制器,寻找方法,执行方法中的代码,然后寻找视图,渲染视图——>将结果返回浏览器,呈现给用户。4.2框架搭建4.2.1分层设计为了方便系统的维护更新,本系统采用三层设计理念,在整体上将系统分为三个大层,数据层、业务逻辑层、表现层。各种对数据库的操作全部由数据层完成。业务逻辑层可以针对不同的需求对数据层进行相应的操作,同时业务层的功能为连接数据层和表现层。表现层用来实现用户与后台程序的交互。之所以采用分层设计,而不是像传统的开发方式中使用数据、业务、UI代码在一个类中混合编写,目的是为了进一步实现数据与业务、前端UI的解耦,以及实现代码的高效率,而且方便后期的维护。在此基础上增加了相应的接口层,公共层,工厂层,能够实现更深层次的解耦,进一步提升代码利用率。除了上述提到的三个大层,本系统又新建了几个类库,例如Common层,整个智慧水务系统的上位机服务器代码设计中各个分层都要使用的公共类,全部创建到Common层中。Model层,通过EF实现对数据库表的直接映射,所有生成的ADO.NET实体模型全部保存在该层中。分完层后的解决方案见图4.3:图4.3智慧水务系统上位机服务器设计分层29 第4章系统详细设计4.2.2各层代码实现本小节,以用户管理模块为例,补充完整分层之后各层的代码。(1)首先创建Model层(Model中创建了ADO.NET实体模型,将数据库架构直接映射到ADO.NET实体模型中,生成EF的操作类,可通过EF操作类实现对数据库的增删改查操作)。(2)创建数据访问接口层:IUserInfoDal。在IUserInfoDal接口中定义常见的方法(增、删、改、查)以及分页方法。此处在接口层IUserInfoDal中定义的增删改查等方法,后续将会清空其中的增删改查等公共方法,仅在IUserInfoDal接口层中定义UserInfoDal类所独有的方法。新建一个公共接口层IBaseDal,将增删改查等公共方法保存到公共接口层IBaseDal中,使IUserInfoDal继承IBaseDal,依此设计IUserInfoDal既实现公共的增删改查方法,而且增加了自己特有的方法。IUserInfoDal接口设计如图4.4:图4.4数据访问接口层在该接口中,使用IQueryable而非使用IEnumberable,IQueryable接口与IEnumberable接口的区别为:IEnumerable在调用方法之前已经在本地存储了数据,例如调用Skip方法、Take方法。而IQueryable则不同,它调用方法时需要将其表达式进行转换,变成SQL语句,然后将语句发送给数据库服务器,但不立刻执行,展示数据时才会被执行。IQueryable实质继承了IEnumberable。在LinqToEF中分辨IEnumberable与IQueryable的区别需要用到SQLServerProfiler工具,如何根据应用场景不同使用IQueryable或者IEnumberable呢?通常,在数据访问层使用IQueryable,因为可以将对数据的加载延时到业务逻辑层来处理。通常,业务层调用数据访问层的方法时并不要求立即从数据库中加载数据然后存储到内存中。此时在业务逻辑层依旧可以使用延时加载,当真正需要加载数据时,调用业务逻辑层将IQueryable转换成IEnumberable,进行数据加载即可。30 齐鲁工业大学硕士学位论文(3)每个接口中都需要增、删、改、查以及分页方法的定义,而且此类方法的定义基本上是一致的,全部封装到IBaseDal。IBaseDal就是(2)中提到的IBaseDal,它是所有接口的父类,即所有的接口都要继承IBaseDal,实现IBaseDal中的增、删、改、查及分页方法,IBaseDal设计见图4.5:图4.5泛型IBaselDal(4)让IUserInfoDal继承IBaseDal,由于IUserInfoDal继承IBaseDal,因此IUserInfoDal中不必再定义IBaseDal中已存在的增、删、改、查及分页等公共方法,在此系统中,IUserInfoDal中无需再写代码,后期如果添加UserInfoDal类独有的方法,便可以在IUserInfoDal中定义,这样设计极大的降低了代码的重复率,提高了IBaseDal中代码的利用率。(5)让具体的数据操作类UserInfoDal去实现IUserInfoDal接口中的方法。由于IUserInfoDal继承IBaseDal,UserInfoDal继承IUserInfoDal,所以相当于UserInfoDal也继承IBaseDal,因此在UserInfoDal内将IBaseDal中定义的方法具体实现。此处仅实现了IBaseDal中常用的增、删、改、查以及分页等方法,若IUserInfoDal中定义UserInfoDal类所特有的方法,需要UserInfoDal在继承IUserInfoDal后。若要调用其中的特有方法,必须在UserInfoDal中具体实现该方法。UserInfoDal类结构如下图4.6:31 第4章系统详细设计图4.6UserInfoDal类结构设计(6)由于考虑到每个数据操作类(例如上述的UserInfoDal类)都必须实现自己的接口(例如上述的接口IUserInfoDal),而每一个类似IUserInfoDal的接口都必须实现IBaseDal,所以每个类似UserInfoDal的操作类,必须重复实现常用的增、删、改、查以及分页的方法,(每一个接口都继承IBaseDal),因此所有数据操作类中必须重复实现CURD以及分页的方法,可以将全部具体的实现封装到BaseDal中。(7)让UserInfoDal继承BaseDal。(8)创建DBSession数据会话层:其本质为工厂类,它能够创建全部的数据操作类实例,从而业务逻辑层可以通过数据会话层来获取所需操作数据类的实例,进而实现数据会话层与业务层和数据层的解耦。(9)一个业务中操作多张表,假设每操作一张表连接一次数据库,系统需要多次连接数据库,该操作会导致整个智慧水务系统的运行效率降低,理想情况应为在全部的表操作之后,连接一次数据库,完成对数据库的全部操作。这样设计可以提升整个系统的性能。通常称该设计方法为工作单元模式的保存。(10)将数据层中所有的保存操作SaveChanges注释掉。(11)在数据层中用到EF的实例,数据会话层中同样使用EF的实例,但是在一个请求中仅允许创建一个EF实例(线程内唯一对象)。负责创建EF数据操作上下文实例,必须保证线程内唯一。(12)在DBSession和BaseDal中调用上述方法(CreateDbContext)完成EF实例的创建。DBSession获取EF实例。(13)抽象工厂封装数据操作类实例的创建,然后DBSession调用抽象工厂。通过反射的形式创建类的实例。修改DBSession,通过抽象工厂封装类的实例创建。32 齐鲁工业大学硕士学位论文(14)定义DBSession的接口,业务层调用的是数据会话层接口。让DBSession实现该接口,即DBSession实现数据会话层接口。(15)定义业务基类,并在其中完成DBSession的调用,对业务层公共方法进行定义。因为定义的方法没有指明通过DBSession获取哪个数据操作类的实例,所以将该类业务定义为抽象的。完成抽象类的定义后,需要定义一个抽象方法,添加IBaseDal属性。并且为了在表现层创建具体的、新的业务子类,让业务基类的构造方法被调用,需要让基类的构造方法调用抽象方法。业务子类知道通过DBSession获取哪个数据操作类的实例。子类一定要实现抽象方法。(16)定义业务层的接口,业务层必须实现业务层的接口。(17)将数据库连接字符串拷贝到Web.config文件中,使程序能够访问到数据库中的数据。4.3登录模块登录模块是所有Web程序必不可少的,虽然该模块的实现并不困难,但在整个智慧水务系统中的作用是不可替代的。智慧水务系统的登录模块前端使用html+css+javascript,后台验证登录采用C#开发,功能、性能、安全性、模块架构都较为成熟。登录模块在设计过程中必须考虑以下原则:(1)可靠性:系统的登录模块必须稳定、可靠,如果登录模块存在问题,不仅会导致用户无法登录系统,而且会导致系统的使用者在登录时将自己的账户密码泄漏,从而使整个系统处于风险当中。因此,一定要严格的控制系统登录模块的可靠性。(2)实用性:从系统中使用者登录操作来考虑,除了第一条可靠性外,同时需要考虑的是实用性,系统不能因为过度注意登录的安全性,而添加许多复杂的操作,导致使用者每次在登录系统的时候都耗费大量的时间,所以在兼顾可靠性的同时,又使系统的登录满足实用性,例如可以除了要求用户在登录时使用用户名和密码之外,再添加一个随机生成的验证码来帮助用户安全可靠的登录系统。登录模块的前端页面设计,即平时访问网站时的用户登录界面,与大部分Web登录模块相同,本系统采用常规的用户名加密码加验证码的登录方式,当用户在用户名文本框输入用户名,在密码框输入密码,然后在验证码框输入验证码时,点击下方的登录按钮,这时登录页面的表单将会提交用户输入的用户名、密码、验证码,后台接受到用户提交的数据后,首先验证用户输入的验证码与本次后台生成的验证码是否匹配,如果匹配,则会进入到下面的验证环节,根据用户输入的用户名在数据库中查询,如果查不到用户名,则会在登录界面显示用户名错误,33 第4章系统详细设计当用户名正确时,则会根据用户输入的用户名信息,进行数据库的查询,如果发现与该用户名匹配的信息时,则会验证用户名对应的密码与用户输入的密码是否匹配,如果密码不匹配,则在登录界面提示密码错误,如果验证成功,系统将从登录页面跳转到系统的主页。在登录的前端实现上,首先在网页的标签名称位置,设置其为“智慧水务系统登录”,整个登录界面的背景,使用了一张比较简洁的图片,因为是水务系统,所以符合水的干净、柔和特点,在登录页面的中心位置,放置本系统中检验用户信息的两个文本框,用户名和密码。除此之外,添加上述提到的用来保证登录安全的随机生成的四位数验证码。整个登录界面的效果见图4.7:图4.7登录模块效果图4.4用户管理模块4.4.1开发方式DatabaseFirst是一种先设计数据库,根据数据库生成代码的开发方式。该开发方式历史久远,但依然适用本论文的智慧水务系统,因为本论文系统根据需求,完成了数据库的架构设计,所以根据设计的数据库架构,可直接生成相应的代码。通过使用该开发方式,将数据库架构映射到ADO.NET实体模型中,VS可以直接根据映射的实体模型,生成对应的数据操作类。因此,这种开发方式对于本论文中系统的开发较为方便。在本章中,通过数据库中设计的用户管理表,演示通过DatabaseFirst开发方式进行系统的开发,证明DatabaseFirst开发方式的高效性。数据库中的用户管理表见图4.8:34 齐鲁工业大学硕士学位论文图4.8数据库用户管理表4.4.2EF简介本论文中的智慧水务系统,从软件开发的角度分析,属于企业应用的开发,本论文使用的开发技术是ASP.NETMVC,一般在使用ASP.NETMVC技术的开发中,必定会配合使用ORM框架。本论文中使用的EntityFramework属于微软官方提供的一种开发框架,而且ASP.NETMVC技术是微软推出的,所以二者在兼容性方面,完全不存在问题,可以认为EntityFramework是微软专门为ASP.NETMVC技术量身定做的。在ASP.NETMVC开发技术中使用EF能够最大限度的提高开发的效率。EntityFramework,一般简称为EF,在本论文中提到EntityFramework,全部用简称EF。EF是根据ADO.NET改进发展出来的,它用映射关系来对应数据库对象和数据操作类对象,二者的关系是一一对应的。是微软针对面向对象开发方式提出的一种解决方案。EF有以下几种特点:(1)当前市面上主流的数据库,EF都可以完全兼容。(2)优秀的映射技术,在映射数据库的时候,数据库中复杂的存储过程同样可以实现完美映射。(3)在映射文件中,采用可视化的展示方式,向开发者提供简单明了的映射关系。(4)与微软家的开发技术都可以完美兼容。4.4.3用户管理表的映射本小节采用本章第一小节介绍的开发方式和第二小节介绍的EF实体架构,完成数据库中用户管理表的映射,映射完成后,可在代码中直接生成相应的操作类,免去新建对象的过程,提高开发的效率。映射操作如下:(1)在Model层右击添加新建项,选择ADO.NET实体模型。(2)新建连接,选择要添加的数据库表,见图4.9:35 第4章系统详细设计图4.9选择要映射的用户表(3)点击完成,生成映射模型,见图4.10:图4.10用户表生成的映射模型4.4.4展示用户数据页面显示采用jQueryeasyui框架,不仅完成用户数据的展示,而且考虑到数据量大的情况,实现分页显示方式,优化数据显示的效果。36 齐鲁工业大学硕士学位论文用户信息数据展示效果如图4.11:图4.11用户信息数据展示效果图用户管理中存在两个文本框,分别为用户名和备注,使用者可以通过两个检索信息快速查找用户。在用户数据表格中有三个功能,删除、添加、编辑,可以对用户的数据信息进行更改。比如添加,效果如图4.12:图4.12用户信息添加37 第4章系统详细设计4.5用户权限设计与登录模块相似,在所有的系统开发设计中,不论是大型的企业应用,或是简单的个人播客,凡是需要用户登录,便一定涉及到权限的管理,因为能够登录的用户,在系统中必存在一个相应的角色,每个角色都存在与之匹配的权限,不同的角色拥有不同的权限,因此,用户的角色分配,角色的权限管理,都是系统设计中必不可少的重要模块。假如本论文的智慧水务系统中缺少权限模块设计,在整个智慧水务系统中,当一个用户登录时,他的账户定位为普通管理员,但是由于系统未设计权限模块,他的账户便可以进行与超级管理员相同的操作,那么普通管理员与超级管理员之间如何区别吗?这样就没有必要设置普通管理员和超级管理员,所有的用户都拥有对系统相同的操作权限,普通管理员登录可以随意修改系统中的核心数据,如此,每个人依照着自己的想法任意更改系统,势必会造成系统混乱。因此,权限的设计显得至关的重要。普通管理员,超级管理员,这是属于系统的角色,每个账号,在注册系统的时候都会分配一个角色,系统设计的时候,在后台为角色分配相应的权利,即权限。例如上面提到的普通管理员和超级管理员,这是两个不同的角色,在设计的时候必定为它们分配不同的权限,普通管理员仅能对系统进行普通的操作,超级管理员不但能对系统进行一般的操作,同时能够对核心数据进行修改。这就体现了用户、角色、权限在系统设计中的关系,有了权限设计,便可以分配系统的资源,全部的资源管理权限赋给最高的权限,权限低的角色分配少量的资源权限。因此,无论是何种系统,一个出色的权限设计是必要的,若要设计出完美的权限管理,需要在日常的系统开发中,针对不同的业务,不断积累经验。其实对于权限问题,与用户、角色等问题类似,都不存在一个绝对万能的方案,不同的客户有不同的需求,而且每个客户都有自己的的特殊需求,因此适用于所用系统的权限设计是不存在的,而且越是复杂的权限设计,往往一个开发人员根本无法全部完成,需要一个专门的团队进行开发设计,某些需求较低的系统,仅需要一个账号的系统等,直接赋予全部的资源管理权限即可,类似这样业务需求简单的系统,确实仅需要简单的、基础的权限设计即可。但实际上,目前所有需要完整系统的公司,绝不可能对权限的要求低,相反,小公司同样会对权限设计提出复杂的需求,例如,为公司所有的员工,分配不同的角色,每个角色分配不同的权限,仅仅完成上述几个需求,该权限设计的要求已经属于高需求权限范围。当然多经历有挑战性的权限设计,是为更好的权限管理打基础,权限的开发设计工作也是一个不断进步,不断发展的过程。目前权限管理设计的经验较少,而且目前本论文智慧水务系统的上位机服务器所需的权限管理设计相对比较基础,因此可以在本论文中完成服务器的权限管38 齐鲁工业大学硕士学位论文理设计的同时,积累自己的开发经验,为以后不断优化智慧水务系统积攒经验。4.5.1权限设计的完整组成(1)基础权限权限设计特别复杂,但任何一个复杂的设计都是由简单、基础的东西拼凑起来的,因此,对于权限设计问题,首先对所有权限设计的通用基础问题进行归纳总结,将最基础的部分提取出来,作为日后权限设计的基础模版,通过基础模版进行功能的增加,并不断完善,便可完成复杂的权限设计。例如,基础的权限包括:对整个系统所有模块的访问权限、管理权限;对核心数据的增加、修改、查询等权限;最普通的访问浏览权限等等。对于涉及的上述基础权限,是每个系统都需要的。对整个系统所有模块的管理,此最高权限,同样任何系统都需要,因为每个系统必须存在一个最高权限,能够实现全部的操作。对核心数据的增、删、改、查,这个权限同样是每个系统必备的,例如董事长对公司拥有最高权限,但董事长不可能事事亲力亲为,就必然需要为总经理分配一个次于最高权限的权限,能够对一些核心的东西进行编辑,但并非全部。再者,普通用户的浏览访问权限,该权限是不可缺少的,比如公司新招的实习生,他们不具备完全掌握工作的能力,为了防止他们的错误操作给公司造成损失,所以在实习期内,分配给他们最低的浏览权限,即只允许登录系统进行查看消息,但无法对系统进行操作、更改。(2)使用者使用者就是系统的操作者,所有使用该账号登录、使用系统的人,都是使用者,系统中会存储使用者的信息来区分使用者,比如使用的账号、姓名、性别、身份证号等。(3)角色角色是使用者与权限之间的桥梁。首先在高级的权限设计中,权限并不是直接赋给使用者,而是把权限分配给角色,然后让角色去与使用者的账户信息相联系,这样所有使用者不仅被分配到一个角色,同时获得该角色所拥有的权限。这样设计的优势在于,若直接将权限赋给使用者,假如使用者的数量庞大,每注册一个使用者账号,就需单独为他分配权限,工作量较大,而通过角色进行权限的分配,成功的避免该问题,因为系统中角色的身份有限,比如超级管理员、普通管理员等,而相同的角色可以分配给不同的使用者,同时一个使用者可能会被分配多个角色,相当于现实生活中一个人既是会计、又是总经理。这样每次注册新的使用者时,保存了他的角色信息,该角色相应的权限同时被绑定。因此角色在权限设计中具有重要作用。(4)权限39 第4章系统详细设计理解上述提到的角色概念和作用,权限概念便容易理解。权限即在一个系统中,对某项功能是否拥有控制权。比如个人银行账户里的钱仅本人拥有支配权,其他人是无法动用你银行账户金钱的。实际上权限是一种权利。(5)用户组用户组相当于将角色进行分类,此处不对用户组做过多解释,因为在本论文的系统中用不到该功能,而且除非系统需要的角色特别多,否则一般系统同样不会使用该功能。4.5.2权限管理逻辑图权限管理逻辑图见图4.13:图4.13权限逻辑图4.5.3常见权限设计通常开发过程中常用的基于权限设计模式有三种:一个是以角色为基础的权限设计,即基于角色的权限设计,二是基于操作的权限设计,三便是将角色和操作结合设计。(1)基于角色的权限设计因为这种解决权限问题的方法比较简单,所以经常使用该方案。虽然该方案容易实现,但它本身的权限管理功能完全足够使用。微软采用以角色为基础的方40 齐鲁工业大学硕士学位论文案作为权限设计的通用设计。在以前的ASP.NET开发技术中,通过对角色分配权限,给使用者分配角色,达到权限设计的目的。不同角色可以访问的系统资源是不同的,但是不能对数据量进行操作,显然这样是存在弊端的,比如在一个公司中,外勤人员消耗了某项物资,需要在系统中对这项资源的数量进行修改。一个使用者同时拥有角色的个数大于等于一,一个角色拥有的使用者数量大于等于一。因此,二者的关系是多对一的关系。见图4.14:图4.14以角色为基础的权限设计关系图(2)基于操作的权限设计直接对所能发生的操作进行权限管理,每一个可能发生的操作都会被记录在数据库中,同时对此操作拥有权限的使用者同样被记录到数据库中。这种设计思想同样存在一定弊端,对于一些比较基础的操作,所有的使用者在使用系统时都会使用这个操作,因此需要将所有的使用者都记录到数据库,会导致权限记录的数据库表文件变大,数据表变大后会直接影响系统操作的效率。一个使用者同时能够具有多种权限,同一个权限可能存在多个使用者,因此权限和使用者之间是多对多的,关系见图4.15:图4.15以操作为基础的权限设计关系图(3)基于角色和操作的权限设计以角色和操作为基础的权限设计关系图,见图4.16:41 第4章系统详细设计图4.16以角色和操作为基础的权限设计关系图如图4.16所示,综合了以上两种权限设计的优缺点,设计出以角色和操作为基础的权限设计,在权限和使用者之间添加角色,以及角色的权限,这样做的目的为了让使用者权限的记录表中的记录减少,避免表中记录过多影响系统的运行效率,而且这样设计增加了权限设计的灵活性。当然该设计虽然结合了前两种的优点,但也并非完美无缺的,在某些情况下,同样显得不够人性化。例如,公司为合作伙伴提供一个能够访问公司系统的账户,在系统中将该账户定义为临时访问账户,但仍需根据双方合作的具体业务,对此临时账号分配相应的权限。当合作结束后,需要对临时账户、临时角色进行清理删除,较为繁琐。综合常见的权限设计思想,本论文中权限管理设计图见图4.17:图4.17智慧水务系统用户权限管理关系设计图42 齐鲁工业大学硕士学位论文4.6主页面模块搭建4.6.1前端UI技术介绍智慧水务系统的前端UI采用html+css+jqueryeasyui技术实现。html是超文本标记语言,我们在任何一个网页上看到的各种效果,无论多么绚丽多彩,背后都是基于html生成的。同时html可以和其他的网络开发技术结合使用,编写出功能更加强大、渲染更加靓丽的网页。所以html是整个网页编写的基石,整个网络端的网站都是通过它编写出来的。Css叫做层叠样式表,它通常都与html结合在一起使用,html主要针对静态页面的技术,而与Css结合起来之后,可以编写出多种多样的动态网页。Css可以与网页脚本语言结合,对页面上的各种元素进行操作,尤其体现在对页面版式的控制上,使用Css可以实现对页面上各种元素精准布局。Css支持多种多样的字体和模型,通过Css来控制字体和格式,相比于直接使用html进行控制,Css实现的效果可能更加的出色,而且在实现的操作上更容易一些。jQueryeasyui是一个用于前端开发的框架,其中提供了多种前端开发的样式,使用这个框架,能够极大的提高开发效率,系统设计者使用它能够快速的完成一个系统前端框架的搭建,在此框架基础上,进行细节修改,最后完成整个框架的设计。而且该框架使用简单,易上手,系统设计者即使未曾深入了解过Css,对javascript并非特别精通,只需熟悉常用的html标签,完全可以上手使用该框架。4.6.2Home页搭建(1)打开桌面上的VS2012,依次选择:文件——>新建项目——>已安装——>模版——>VisualC#——>Web——>ASP.NETMVC4Web应用程序MvcApplication1,项目模版选择基本。(2)在MvcApplication1上右击鼠标,在弹出的菜单选项中选择添加——html页。(3)将jQueryeasyui的资源包,jQuery-easyui-1.3.6.zip解压,将解压文件中的jQuery.min.js和jQuery.easyui.min.js,easyui-lang-zh_CN.js三个js文件,复制粘贴到MvcApplication1下的Scripts中,在Scripts中找到三个粘贴进去的js文件,依次点击拖拽到步骤(2)中新建的html网页head标签中。(4)在解压的文件夹中找到thems文件夹,打开,将全部内容选择,复制,粘贴到MvcApplication1中的Content/themes中。将MvcApplication1/Content/default/easyui.css和MvcApplication1/Content/icon.css两个文件拖拽到步骤(2)中新建的html的head标签中。43 第4章系统详细设计(5)在解压文件中,找到demo文件夹,layout文件夹,选择full.html,在浏览器中查看该网页,网页右击,查看网页源代码,将标签及标签中的内容全部复制。(6)在步骤(2)中新建的html内,将标签选中,粘贴替换为full.html中复制的内容。(7)在MvcApplication1中,找到步骤(2)新建的html文件,右键选择在浏览器中查看。页面划分效果如下图4.18图4.18页面划分效果图(8)在此仅以jQueryeasyui中的页面布局使用方法做介绍。参照此方法,可在解压文件中demo文件夹内,选择自己需要的前端样式,使用方法参考步骤(1)到(7),可实现其他的页面效果。(9)上述步骤中,仅介绍了使用jQueryeasyui框架实现Home页搭建的方法,搭建好后,仍需要根据本论文智慧水务系统的业务需求进行细节的修改。首先页面需显示标题“智慧水务系统”。左侧是在第2章中提出的几项业务需求,在页面的代码中寻找相应的位置,进行修改。整个页面的中央右部,即面积划分最大的部分,用来进行左侧各个业务菜单详细展示,整个修改完成的Home页显示效果见图4.19。44 齐鲁工业大学硕士学位论文图4.19Home页显示效果图4.7数据管理模块在前面的小节中,已经详细的介绍了用户管理模块的开发设计,使用jQueryeasyui框架。数据管理模块使用与用户模块相同的开发方式,数据管理模块同样包含对数据库中用户数据的显示、编辑、查询等模块。因此本章不再对其具体开发方式进行详细的描述,可参照用户管理模块开发细节。仅对数据库中接收到的下位机水管网监测数据进行展示,对数据管理模块实现效果进行展示。数据库中接收的现场下位机上传的各地点水管网数据如下图4.20:图4.20数据库接收的水管网监测数据45 第4章系统详细设计系统中数据管理模块整体效果如下图4.21,数据部分截取20条水管网监测数据展示系统效果,如图4.22,图4.23,图4.24,图4.25:图4.21系统中数据管理模块整体效果图图4.22水管网监测数据(1)图4.23水管网监测数据(2)46 齐鲁工业大学硕士学位论文图4.24水管网监测数据(3)图4.25水管网监测数据(4)4.8地图模块本论文智慧水务系统中的下位机分布在不同的地方,为了方便系统使用者对下位机所在位置快速搜索查看,在本小节中专门增加了地图模块,即在智慧水务系统的上位机服务器中内嵌了地图模块,使用者在登录系统后,在系统中通过内嵌的地图便可实现对各个水管网监测地点的确认,查看,可以对地图进行设置。登录智慧水务系统后,在左侧的菜单栏选择地图定位,地图,即可打开系统内嵌的地图,对其进行相关配置,如下图4.26:47 第4章系统详细设计图4.26智慧水务系统内嵌地图模块如图4.26所示,在打开系统中嵌入的地图后,可以进行相关的操作,首先可以进行设置的是地图的中心位置,比如,使用者想要选择济南为定位的中心点,查看济南地区周边的情况,点击切换按钮,在文本输入框中输入济南并确定,此时地图的中心定位就显示为济南。如下图4.27:图4.27地图模块定位中心点48 齐鲁工业大学硕士学位论文智慧水务系统中内嵌的地图,假如使用者感觉初始操作不习惯,可以通过地图设置,对系统内嵌的地图进行相关的个性化的、符合自己使用习惯的设置。地图设置选项如下图4.28:图4.28地图模块设置属性除了上面提到的两种功能操作外,系统内嵌地图的目的为实现对地点进行标注的功能,方便查看。接下来描述的是系统中地图的定位标注功能。假设有一处水管网监测点的位置为A,另一处水管网监测点的位置B。首先在地图中标注出这两个水管网监测点A、B,如下图4.29:图4.29地图模块添加标注49 第4章系统详细设计同时可以对两个标注点之间进行连线,连线后可以添加文字备注,可以通过地图的几种功能,确定水管网监测点分布位置,各监测点之间的距离。通过地图提供的信息和功能,进行分析,当发生管网异常时,及时查询异常管路,做出合理安排。此外,判断水管网监测点的分布是否合理,若不合理,可进行改进。监测点间距离标注如下图4.30:图4.30地图模块标注效果图4.9数据导出模块为了方便系统管理人员对数据的汇总、统计等,需要将系统中的数据导出到Excel。Excel是一款强大的数据统计功能软件,因此实现将数据导出到Excel中的功能意义重大。借助此功能,系统管理者可以对接收到的下位机数据进行更深度的分析组合,发现更多深层次的信息。Excel导出前五条数据,效果见图4.31:图4.31Excel导出数据50 齐鲁工业大学硕士学位论文4.10异常数据模块本论文的智慧水务系统能够实时接收到下位机水管网监测点上传的数据,因此系统的使用者能够在上位机服务器中实时观测到接收的数据。如果数据异常,系统使用者可以通过系统,根据通信协议中的下行通信,向下位机发送指令,控制异常的水管网监测点阀门的状态,将异常的阀门进行关闭。例如当下位机发送的数据错误时,在数据库中存储时会保存到T_GPRSReceiveError表中,该表中有个字段会自动标注数据的状态,比如数据状态是出错,代表该条数据在上传的时候便有异常,系统使用者此时发现该条异常的记录,便可在智慧水务系统中进行操作,关闭异常的阀门。异常数据模块设计效果如下图4.32:图4.32异常数据模块通过图4.32可以发现此时显示的5条异常数据,对应的阀门状态均为开,数据状态为出错,因为数据异常,此时智慧水务系统的使用者可以选中需要操作的数据行,通过点击列表上方的更改阀门状态,对阀门的状态进行更改,将数据出错的相应阀门状态更改为关闭。如下图4.33:51 第4章系统详细设计图4.33更改阀门状态4.11网络编程模块在本论文中,通信的具体实现采用Socket网络编程,Socket网络编程在前面章节中已经做过介绍。因为本论文的智慧水务系统需要始终与现场的下位机保持连接,所以本论文系统需要在后台单独部署一个服务,该服务能够在后台始终保持运行Socket,一直处于监听的状态,一旦出现数据上传,立即接收。对于后台服务,本论文中使用的是WebService。WebService拥有相对独立的平台,能够使运行在不同设备上的系统直接完成数据通信,而且不需要借助任何中间插件。仅需不同的系统之间全部依照WebService的规范来部署,如此便可忽略不同系统、不同语言、不同平台的差异,实现数据的交换。WebService自带可以用于编程的网络功能,拥有详细的功能描述,所以在使用部署上,WebService的操作易于实现。将Socket网络编程的代码添加到WebService服务中,将Web服务部署到IIS上,部署完成后本论文智慧水务系统便可实现在后台实时接收下位机水管网数据。其中对于Socket网络编程的使用,首先需要创建一个Socket对象,进行绑定IP端口,配置的IP端口即需要监听的地址,需要监听的地址即为水管网监测点下位机的地址。4.12容器模块第3章已经介绍了Spring.Net技术的功能,以用户管理表为例,用户对象的创52 齐鲁工业大学硕士学位论文建是开发人员在程序设计中自行创建的。Spring.Net的思想为创建一个容器,将对象创建的工作转移,转交给容器,开发人员仅需在程序的配置文件中进行相关配置,便可实现对象的自动创建,而且能够初始化相应的属性。Spring.net在系统中的配置代码见附录A—1Spring.Net,其中包含两个xml文件的配置,xml配置方法见附录A—2xml配置。4.13异常日志所有系统都存在未知的BUG,在系统实际运行过程中,用户进行复杂操作,系统接收数据量大幅增加等各种各样的因素都会对系统产生影响,出现一些本系统设计时未能考虑到的异常,但异常信息通常是不直接展现给用户的,因为异常信息中可能包含影响系统安全的敏感信息,如果直接将异常中敏感信息呈现给用户,难免会有一些用户利用此异常信息对系统进行攻击。为了避免此种情况的出现,需要系统将异常记录下来,形成一个异常日志,而对系统的异常仅返回给用户一个错误的页面,这样既捕获到系统的异常,又确保异常信息的保密性,同时提示了用户系统的异常。针对以上要求,Log4Net刚好满足本论文智慧水务系统需要,Log4Net是一种专门用来记录异常的异常日志技术。同时,由于无法预知异常的数量,如果分配固定的空间来保存异常信息,当异常信息过大时,提前分配的空间将会被占满,当异常信息很少时,分配的固定空间便形成了资源的浪费,因此本论文智慧水务系统需要一种动态的存储,针对异常信息的这个特点,可以采用队列的数据结构来实现异常信息存储的空间分配问题。配置Log4Net:在表现层即WebApp层添加对Log4Net.dll的引用(先把相应的dll文件拷贝到项目中的lib文件夹下)。在Web.Config(或App.Config)添加配置,配置代码见附录A—3Log4Net配置。控制器中的异常日志代码见附录A—4异常捕获。当系统出现运行错误时会跳转到404错误页面。4.14本章小结本章主要介绍了整个智慧水务系统的开发过程,采用了分模块叙述的方式。本论文中的系统对网站的请求全部是通过网络地址进行的请求,因此,本章第一小节,首先详细的对ASP.NETMVC处理请求的方式和过程进行了分析,在第三章对ASP.NETMVC技术介绍的基础上,更加深入详细的剖析了整个请求过程,并对请求过程中所经历的每个网络管道事件进行了详述,一个完整的网络请求会经53 第4章系统详细设计历19个管道事件。将整个系统划分为几大模块一一描述其在系统中的作用及具体实现的过程。框架的搭建,采用业务逻辑层、数据层、用户层的MVC架构,有利于实现代码的低耦合性,有助于后期对整个系统的维护、升级等,任一层都可以单独修改而不影响其他层。主页面构建,创建了用户登录系统,完成了系统操作的主界面布局,详细描述如何通过使用jQueryeasyui框架进行快速的前端页面搭建。用户管理模块,决定使用者是否能够登录系统,系统中涉及重要数据,没有账户的使用者不能够随意登录,只有分配了账号的用户方可登录系统并进行相应的操作。权限设计模块,用户管理模块决定了一个使用者能否登录系统,而权限设计配合用户管理模块,实现了对用户登录系统后的操作进行限制,不同级别的用户,对系统的操作权限不同。数据管理模块,开发方法与用户管理模块使用的技术相同,在本小节中对下位机上传的水管网监测数据进行了展示,证明了智慧水务系统研究的可行性。数据导出模块,实现一键导出数据,将系统在数据库中存储的水管网监测数据导出到Excel中,方便水务公司后台管理人员对数据的进一步加工、分析。地图模块,在智慧水务系统中内嵌地图模块,可供使用者直接在系统中查看各水管网监测点的物理位置。容器模块,通过使用Spring.Net技术,分离了对象与开发者之间的依赖关系,通过创建容器的方法,将对象的创建工作转移给了容器。异常日志模块,使用Log4Net技术,实现对系统异常的记录。54 齐鲁工业大学硕士学位论文第5章测试本论文中第4章在数据管理模块中展示数据为GPRS上传的现场真实水管网监测数据。为保证论文的完整性需增加测试章节,本章将通过软件测试的方式,再次验证本论文智慧水务系统的可行性。测试章节使用的测试软件名称为网络调试助手。首先打开网络调试助手,如下图5.1:图5.1网络调试助手软件界面在网络调试助手软件界面左上角进行网络设置,协议类型更改为TCPClient,本地IP地址设置为系统代码中Socket监听绑定的IP(此环节需将用于测试的主机IP地址更改为Socket绑定的地址),本地端口号设置为Socket监听绑定的端口号。设置完毕如下图5.2:55 第5章测试图5.2网络调试助手网络设置设置完毕后点连接按钮,若连接按钮变为断开,则表示连接成成功,如图5.3:图5.3网络调试助手连接成功56 齐鲁工业大学硕士学位论文此时在网络调试助手软件界面下方的文本框中,可以输入数据,点击发送,即可向智慧水务系统上位机服务器发送数据,发送成功时左下角的提示语将变为发送结束,如下图5.4。此数据的开端必须严格按照第2章第4节制订的通信协议数据格式,否则上位机服务器系统接收数据后无法进行解析。测试地点在系统中默认设为济南,测试数据的区域编号默认设为1。图5.4网络调试助手发送数据登录系统,在系统中查看数据,系统成功接收到发送的数据,系统中显示的监测指标数据与发送数据对应无误,测试成功,再次证明了智慧水务系统的可行性。如下图5.5:图5.5系统成功接收数据57 齐鲁工业大学硕士学位论文58 齐鲁工业大学硕士学位论文第6章总结本文主要结合智慧水务系统的总体方案和上位机服务器程序的设计展开了论述。整个智慧水务系统本质上相当于一个远程抄表系统,远程抄表系统在智能电网领域已经有了成熟、成功的应用实例,因此本论文将此技术应用在农村主干水管网智慧水务上同样具有重要的意义,通过对此系统的研究、应用、完善、功能扩展等,势必也能在水务系统中建立起像智能电网般成熟、稳定的远程抄表系统,提高整个农村水务行业的工作效率,降低整个水务行业的人工成本,意义非凡。第一章绪论介绍了智慧水务系统的课题背景,国内外智慧水务情况研究分析,整个智慧水务系统的调研现状,最后分析了本论文设计智慧水务系统的重要意义。第二章讨论了智慧水务系统的总体方案,首先从系统的整体设计原则分析,按照全部系统都要遵循的通用原则,提出智慧水务系统必须满足的通用系统设计原则。后面结合智慧水务系统自身独特的需求进行分析,确定了系统的特色性功能,以及系统的必要功能,并对各个功能模块的后续研究方法进行总结。章末进行了系统上位机与下位机的通信设计。第三章对智慧水务系统上位机服务器的开发过程中用到的技术进行了介绍,对整个智慧水务系统的数据库架构设计进行了分析及展示,最后结合所用到的开发技术,设计了整个系统的架构图。第四章详细分析了智慧水务系统上位机服务器的各个模块,并叙述了具体的开发过程。第五章通过网络调试助手,验证了智慧水务系统的可行性。此次设计的智慧水务系统基于传统的远程抄表技术,在原有的远程抄表系统基础上进行了相关优化、改进、新开发技术的应用等,相对于农村传统的人工抄表,本论文的智慧水务系统优点归纳如下:(1)节约了农村传统水务公司的人工成本,提高了农村水务抄表工作的效率。(2)智慧水务系统中的上位机服务器和下位机基于TCP/IP传输协议,使用GPRS技术进行现场水务数据的传输,既省时又节约金钱。(3)实现了远程、自动、实时的上传数据,促进了农村水务抄表工作的智能化,迎合了农村智能化的发展趋势。(4)数据导出功能的实现,将数据库中的庞大数据导出到Excel中,极大的提高了对超大量数据的处理能力。(5)智慧水务系统界面简洁、操作简单,对用户友好,方便操作人员学习和使用。59 第6章总结(6)地图模块,能够帮助使用者在智慧水务系统的内嵌地图中查看各水管网监测点的分布情况。(7)阀门管理模块,当水管网监测数据出现异常的时候,在智慧水务系统中可以查看到异常信息,并能通过通信协议的下行协议,实现对阀门的关闭,防止意外的发生。所有系统均需要不断完善、优化,本论文智慧水务系统同样存在后续需要继续优化之处:(1)在数据传输方面,随着通信技术的发展以及国家号召的运营商降低流量费用的政策,本系统可以采用更为先进的网络,比如4g甚至5g。(2)当前系统主要目标为实现农村水务行业的上位机与下位机通信传输数据,目前功能比较单一,后期随着数据传输功能优化,系统将更加稳定、可靠,可以考虑增加功能接口,收费接口,与银行、支付宝、微信支付进行关联,实现在智慧水务系统中完成村民缴纳水费的功能支持。(3)进一步完善数据管理分析功能。实现在系统中可以自动生成任何一个下位机水管监测网点的相关指标变化曲线。(4)数据的运行状态,可以将运行信息记录到日志中,供日后分析网络的性能。(5)优化、完善系统的结构以及后台数据库的架构,进一步提高系统的运行、响应速度。(6)进一步改进农村主干水管网智慧水务系统,在本论文中最主要的任务是实现农村智慧水务方案的基本功能,完成对水管网数据的实时获取。后面随着研究的深入,需要进一步改进技术,完善代码。高质量的代码对系统性能的提高起到重要的作用。60 齐鲁工业大学硕士学位论文参考文献[1]赵晓东.南昌市居民用水智慧水务管网系统的研究与分析[D].云南大学,2016.[2]中国软件评测中心.智慧城市评估指标体系研究报告,2013.[3]姚禹,孙久扬,张丹,李保会.智慧水务在城乡供水中的应用探讨[J].科技经济导刊,2017(25):57+83.[4]李树石.智慧水务建设方案探讨[J].硅谷,2015,8(01):187-188.[5]彭智欣,徐嘉祺.智慧水务的思考[J].中国水运(下半月),2015,15(09):234-236.[6]刘梅,闫健卓,于涌川.北京“智慧水务”框架下的数据资源体系研究[J].水利信息化,2014(04):5-10.[7]钱炯,何敏杰,唐靖.关于城市智慧水务系统探析[J].科技创新与应用,2017(17):152-152.[8]袁敏.智慧水务建设的基础及发展战略研究[J].电子技术与软件工程,2015(8):235-235.[9]田雨,蒋云钟,杨明祥.智慧水务建设的基础及发展战略研究[J].中国水利,2014(20):14-17.[10]张一鸣,田雨,蒋云钟.基于TOE框架的智慧水务建设影响因素评价[J].南水北调与水利科技,2015,13(05):980-984.[11]张小娟,唐锚,刘梅,王昊.北京市智慧水务建设构想[J].水利信息化,2014(1):64-68.[12]杨明祥,蒋云钟,田雨,等.智慧水务建设需求探析[J].清华大学学报(自然科学版),2014(1):133-136.[13]张引,陈敏,廖小飞.大数据应用的现状与展望[J].计算机研究与发展,2013,50(S2):216-233.[14]何世德.智慧水务的建设发展及展望研究[J].智慧城市评论,2017(1):54-65.[15]林景秀.智慧水务大数据平台建设[J].信息与电脑(理论版),2017(8):156-160.[16]刘小梅,朱俊,童颖,等.智慧水务实现路径[J].中国建设信息化,2017(3):12-15.[17]郝志慧.基于物联网的城市智慧水务系统研究[J].中国高新技术企业,2017(2):114-115.[18]李贵生.互联网+推动大数据智慧水务建设[J].建设科技,2016(23):79-80.61 参考文献[19]郑浩,饶志华,方禄发,等.基于物联网的城市智慧水务系统设计[J].科技广场,2016(7):185-188.[20]田培杰.智慧水务及其实施路径研究[J].当代经济,2015(25):96-98.[21]杨哲.智慧水务系统在城市供水中的应用[J].科技创新导报,2016(11):36-38.[22]陈文艺.物联网技术的现状及其在工业信息化中的作用[J].西安邮电学院学报,2010,15(6):73-76+95.[23]纪菁.智慧水务一体化平台软件设计[J].水电厂自动化,2016(2):11-14.[24]刘璐璐.城市智慧水务建设路径探讨[J].安庆师范大学学报(社会科学版),2016,35(1):99-101.[25]LuHangXu.ResearchontheValue-PassingMethodbetweenPagesunderASP.NETMVCMode[J].AppliedMechanicsandMaterials,2015,3744(713):2398-2404.[26]YuTian.DesignofRemoteIntelligentMeterReadingSystem[J].AdvancedMaterialsResearch,2014,3255(971):1183-1186.[27]JinHaiZhang.StudyonEmbeddedTCP_IPProtocolandARMImplementation[J].AppliedMechanicsandMaterials,2014,3207(556):6046-6049.[28]KaldenR,MeirickI,MeyerM.WirelessInternetaccessbasedonGPRS[J].IEEEPersonalCommunicationsApril,2000,7(2):8-18.[29]李启奕.远程抄表系统在智能电网中的设计与实现[J].装备制造,2014(s2):203-203.[30]孙红革,张娟.电能计量远程抄表系统的应用及改进措施[J].陕西电力,2007,35(4):81-82.[31]BowenZhang,JohnBaillieul.CommunicationandControlProtocolsforLoadNetworksintheSmartGrid[J].IFACProceedingsVolumes,2014,47(3):11250-11256.[32]官飞.电力远程智能电表抄表系统研究[J].家电科技,2016(7):68-70.[33]王宝新.智能电网通信管理系统的构建研究[J].通讯世界,2016(21):169-170.[34]栾洁.基于TCP/IP协议的远程抄表系统上位机设计[D].南京理工大学,2007.[35]周伟.基于ASP.NETMVC3酒店管理系统的设计与实现[D].电子科技大学,2013.[36]林平荣.基于Spring.NET的电子商城系统轻量级框架研究[J].软件工程,2015(2):3-5.62 齐鲁工业大学硕士学位论文[37]刘红霞.ASP.NET平台中MVC设计模式的应用[J].电子技术与软件工程,2017(9):169-170.[38]刘传波.某维和部队综合管理平台的设计与实现[D].山东大学,2017.[39]ShiYi,QuanLiu,JingSongLi.DesignandRealizationofLargeFileAsynchronousUploadandBroken-PointContinuingly-TransferringBasedonASP.NETMVC[J].AppliedMechanicsandMaterials,2014,3082(543):3165-3168.[40]郭福.探析基于ASP.NET选课系统中后台登录权限设计[J].电脑编程技巧与维护,2018(1):121-123.[41]张行健.探究ASP.NET平台中MVC设计模式的应用[J].电脑编程技巧与维护,2017(4):26-26.[42]MackeyA.EntityFramework[M].Introducing.NET4.0.Apress,2010:175-206.[43]王松林,何贞铭.基于MVC架构模式的员工信息管理系统设计与实现[J].电脑知识与技术,2014(33):7885-7889.[44]LI.DevelopmentofaNon-PollutionOrangeFruitExpertSystemSoftwareBasedonASP.NET[J].JournalofIntegrativeAgriculture,2011,10(5):805-812.[45]韩宏峰,冯石,罗羿隆.基于Java与Python的面向对象编程的基本特征研究[J].软件工程,2017,20(8):1-3.[46]杨浩,杨陟卓.基于面向对象编程的代码复用技术[J].信息技术,2017(6):52-57.[47]桑治军.面向对象的编程在路线设计中的应用[J].河南科技,2017(5):42-45.[48]YingJianLin.ADO.NETDatabaseAccessTechnology[J].AppliedMechanicsandMaterials,2015,3744(713):2217-2220.[49]VidhyaV,JeyaramG,IshwaryaK.Databasemanagementsystems[J].InternationalJournalofComputerApplications,2018,303(1):155-169.[50]MaoWang,TuoChen,YongJiang.DatabaseDevelopmentBasedonMFCApplicationinManagementofCurriculumInformation[J].IntelligentInformationManagement,2017,09(06):236-244.[51]侯宪君,何景连.基于ASP.NET技术的高校新生报到收费系统的设计与实现[J].山东理工大学学报(自然科学版),2009,23(3):42-46.63 齐鲁工业大学硕士学位论文64 齐鲁工业大学硕士学位论文附录A1、Spring.Net2、xml配置Controllers.Xml:Service.Xml:3、Log4Net配置65 附录A4、异常捕获publicclassFilterConfig{publicstaticvoidRegisterGlobalFilters(GlobalFilterCollectionfilters){filters.Add(newHandleErrorAttribute());}}//捕获异常信息publicclassMyExceptionAttribute:HandleErrorAttribute{//可以捕获异常数据publicoverridevoidOnException(ExceptionContextfilterContext)66 齐鲁工业大学硕士学位论文{base.OnException(filterContext);Exceptionex=filterContext.Exception;}}67 齐鲁工业大学硕士学位论文68 齐鲁工业大学硕士学位论文致谢到此我的毕业论文就要结束了,我首先要感谢的就是我的导师李军老师,感谢李老师三年来对我学习上的耐心帮助,以及生活上的关心和照顾。李老师在学习工作中态度严谨,细心仔细,刻苦钻研,一丝不苟,李老师这些良好的态度习惯对我的影响不会因为硕士学习的结束而消失,其影响是深远的,未来我也会继续努力保持这些优良的态度和习惯,在人生的道路上继续前行。李老师一直教育我和师弟们对学习和工作要用严谨的态度来对待,不能糊弄,做学问要有追求完美的信念。不仅李老师在科研上的态度,李老师在生活中严于律己宽以待人的作风也会一直影响我今后的学习工作。其次还要感谢李老师在我课题研究期间寻求帮助时对我耐心的解答,丰富了我的见解,帮助我理清思路,指明方向,他丰富的研究经验帮助我攻克课题设计中出现的一些难题,并且为我提供了良好的科研实践环境使我能用理论指导实践,用实践决定理论。论文中主要完成了智慧水务系统的上位机服务器设计工作,下位机部分的工作还是要感谢李老师,李老师奔波于各个水管网监测点,安装、部署、调试下位机系统,没有李老师搭建的出色的下位机系统,本论文中的上位机服务器设计也无法顺利进展。同时在生活中李老师给予我无微不至的关心和帮助,使我能专注于学业,安心完成课题。总之,李老师的指导与帮助都使我在研究过程中能少走一点弯路,让我学到的不只是知识,更重要的是在探求知识这条路上的那种严谨、刻苦、努力的精神。另外还要感谢的便是论文答辩组的老师们,衷心感谢评审老师们给我的检阅以及指导。此外,还要感谢帮助过我的两位师弟孙玉霖和潘光良,我的同学,关心我照顾我生活的家人,是你们一直的支持与理解,才能让我顺利完成这三年的学习生涯。69 齐鲁工业大学硕士学位论文70 齐鲁工业大学硕士学位论文在学期间主要科研成果一、发表学术论文[1]李军,连俊光.基于GDI+的Web端页面验证码绘制.电脑知识与技术(与4.3登录模块中的验证码功能实现有关)[2]连俊光.基于NPOI数据导出方法的研究与实现.电脑知识与技术(与4.9数据导出模块中导出功能的实现有关)71

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭