黄 毅,夏中华,顾晓蓉
(天津市水利科学研究院,天津 300061)
信息化是当今各个领域在发展过程中广泛应用的技术手段之一,信息化科学在有极大需求的前提下也是迅猛发展,成为当代发展最快的学科之一。水利信息化就是指充分利用现代信息技术,深入开发和广泛利用水利信息资源,包括水利信息的采集、传输、存储、处理和服务发布,全面提升水利事业活动效率和效能的历史过程。
水利信息化可以提高信息采集、传输的时效性和自动化水平,主要作用及特点体现在如下几点:建设水利信息基础设施,解决水利信息资源不足和有限资源共享困难等突出问题,提高防汛减灾、水资源优化配置、水利工程建设管理、水土保持、水质监测、农村水利水电和水利政务等水利业务中信息技术应用的整体水平,带动水利现代化。
信息化科学早已是独立完整的学科,应用上有完善的体系、成熟的技术、创新的思维。水利行业作为最古老的工程行业之一也有自己的特点:水资源方面有水文数据信息量大、时间跨度大、种类多,需要提炼、聚合信息等特点;防汛抗旱减灾方面有数据来源多,各方面数据之间关联性强,需要各类汇总结果做决策依据等特点;数据采集方面有传输实时性强,确保数据通路稳定,确保监测信息来源准确等特点;水务管理方面有牵涉方面广,流程性强等特点。如何把信息化科学和水利科学有机地结合起来,是需要不断地实践和总结的。
信息系统可以分为数据访问层、业务逻辑层、表现层[1]3个层次。数据访问层主要负责数据库的访问;业务逻辑层的关注点主要集中在业务规则的制定、流程的实现等与业务需求有关的系统设计,也即与系统所应对的领域逻辑有关,它处于数据访问层与表示层中间,起到数据交换中承上启下的作用,是整个系统的业务核心;表现层用于显示数据和接收用户输入的数据,为用户提供一种交互式操作的界面。
数据访问层实现对数据表的选择、插入、更新、删除等操作,业务逻辑层调用它主要有直接连接数据库或调用存储过程2种方式。
业务逻辑层通过一定的逻辑对数据层的数据进行读写操作,它提供的服务既可以通过 Web 或 WCF服务来体现[2],也可以用一种轻量型的方式直接连接数据库并获得服务,如 ADO.NET,LINQ 体现。
开发人员通过研究用户的需求,在页面上将业务逻辑层提供的功能有机组织起来,表现出来,这是直接面向用户的表现层。
在信息系统中,3个层次相互连接,其中业务逻辑层尤为重要,因此要根据实际应用选择适用的技术。
目前水利信息化系统的项目,大体可以分为以下2类:一类是着重于工程控制的,如:泵站优化、管网管线输水调度优化、潮位实时监控等;一类是着重于部门业务管理的,如办公 OA,模拟工作流程、管理等。
根据目前我国的情况,水利行业的信息系统有以下2个共同特点:
1)用户范围较小,无论从地区和人数上说都是如此;
2)拥有特定的用户群,因此实现的业务逻辑功能要满足特别的需求;
由于上述2个特点,在架设服务器和编写软件时具有以下2个特点:
1)服务器一般都采用集中安置,所有服务器都放置在同一机房内,从网络结构上看所有服务器都在一个内网中,然后映射出互联网;
2)在业务实现上,为了贴近特定用户的工作需求,所以业务逻辑较为复杂。
通过描述,再结合3层结构,可以分析出各种技术在水利行业中的适用范畴。
在水利行业中一般对其本身业务非常重视,所以业务逻辑层是这个系统的核心。
在业务逻辑层中,除了 Web 和 WCF 服务,还有一种轻量型的服务,它直接连接数据库并获得服务。通过它实现业务逻辑时,经常将业务逻辑层和表现层结合在一起。这种服务有:.NET 架构的 ADO.NET,LINQ(语言集成查询),XML 等。
Web 或 WCF 服务都是针对互联网发展愈发庞大而产生的技术,更适合于在互联网中各个服务器之间相互调用服务。这些业务逻辑层的服务事先编好,独立发布,再由系统的表现层调用。具体优点如下:开发人员可以只关注整个结构中的其中某一层;可以很容易用新的实现来替换原有层次的实现;可以降低层与层之间的依赖;有利于标准化;利于各层逻辑的复用。
在需要服务分层分级部署或服务器之间要通过互联网联系时,使用这种技术比较适合,如企业的分布部署或业务逻辑层提供的服务要调用另外在其它服务器上发布的服务。它有以下缺点:
1)降低了系统的性能。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成。
2)降低了灵活性。有时会导致级联的修改,这种修改尤其体现在自上而下的方向。如果在表示层中需要增加1个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码。
通过分析水利行业信息系统特点,可以看出目前水利行业系统,在网络的物理连接上大多属于内网,提供通过 ADO.NET,LINQ 等技术访问数据库的便利性;由于要贴近实际业务,要求用户在页面和功能上紧密有机的结合,以实现复杂的逻辑关系,并符合用户的日常工作习惯。因此需要灵活的编程方式。
类似 ADO.NET,LINQ 这种直接连接数据库的轻量型的服务,将系统业务逻辑层和表现层结合起来,有利于在水利行业信息系统中实现业务逻辑复杂,并且需要经常改动的系统。
在笔者参与的一个关于防潮的项目中,从功能上看包含 GIS 和一般业务2个部分。在 GIS 相关模块中,业务逻辑层用 WCF 服务实现,WCF 既继承了 Web 服务的优点,而且在跨平台方面做得更好[3];在业务逻辑方面用 .NET Framework 提供的 LINQ 结合 ADO.NET 来实现轻量型的业务逻辑服务,而且将业务逻辑层和表现层结合在一起。
这样构建系统服务的原因如下:
1)GIS 所应用的服务逻辑上相对简单,大多是对于数据库简单的检索、存储,而且所有操作都在地图范围内,所以业务逻辑层提供的服务相对稳定,不会经常修改。这样用 WCF 服务来实现业务逻辑层是比较合适的。
2)由于系统要提供贴合防潮业务的功能,所以页面布局和功能实现要有机地结合在一起,以满足用户复杂的业务逻辑和操作习惯。并且在开发甚至使用期间,根据用户要求还要做出反复大量的更改。在这种情况下,由于页面和功能结合紧密,改动任何一方面,另一方面都要跟着做出调整,所以采用灵活性更大,修改更容易的 LINQ 和 ADO.NET来实现。
3)由于系统应用范围只在本市水利系统,并且用户也只是防潮相关人员,所以分别对应软件3层结构的3台服务器,都架设在1个机房内,形成1个内网。这也为应用 LINQ 和 ADO.NET 这种轻量型的服务提供了物理条件。
另一个典型的系统是目前水利普查所用到的软件,这套软件要求每个省都配有自己的机房来安置一整套服务器,发布水利普查网站,供本省水利普查人员使用。而每个省的系统又都连接到中央的总系统中,用于从地方传输普查数据到中央。这套系统同样是 Web 和轻量型服务的结合。
在每个省的系统中,由于服务器都安置在一起,并且只供水利普查人员使用,所以没有明显区分业务逻辑层和表现层;而每个省要上传数据,就用到中央服务器所提供的服务,由于中央通过互联网和各地联系,所以通过类似 Web 服务的技术实现。
并不是越新出来的技术就越符合系统要求,以前成熟的技术也同样在发展,而且易用性更高。设计好系统的关键就是要将合适的技术应用到合适的地方。在水利行业中,应该将新的类似 WCF 服务的技术与老的 ADO.NET 结合起来,结合得越好,编写程序、扩展软件和修改也就越容易。
[1] 温昱.软件架构设计[M].北京:电子工业出版社,2007: 7.
[2] 温昱.一线架构师[M].北京:电子工业出版社,2009: 152.
[3] Steve Resnick .WCF 核心技术[M].北京:人民邮电出版社,2009: 5.