APP下载

铁路概预算软件系统的体系结构设计

2018-09-10张弛

现代信息科技 2018年2期

摘 要:本文结合铁路工程概预算软件项目的实例,阐述了对N层体系架构技术的理解,并通过分析具体的项目特点,详细地表述了如何设计一个可以灵活部署为单台计算机应用模式、企业局域网应用模式、Internet应用模式的分布式应用系统的体系结构设计方案。

关键词:铁路概预算;软件系统设计;N层体系结构;Web服务;分布式应用程序;应用程序部署

中图分类号:TP311.52;U215.1 文献标识码:A 文章编号:2096-4706(2018)02-0022-03

The Application Architecture Design of Budgetary Estimation of Railway Engineering

ZHANG Chi

(Dalian JiYi Logistics Co.,Ltd.,Dalian 116601,China)

Abstract:In this article,via a software project of budgetary estimation of railway engineering,the author describes the understanding of the technique of N-tire architecture. By analyzing the characteristic of the concrete project,the author illustrates how to make a system architecture design plan of a distributed software application,in which explained that the application can be deployed flexibly by a single desktop mode,or by an enterprise intranet mode,or by the internet mode.

Keywords:budgetary estimation of railway engineering;software system design;N-Tier;Web service;distributed application;application deployment

引 言

隨着计算机科学技术的不断发展,软件的规模和应用领域迅速扩大,造成了软件程度的复杂度不断加大,所以高效地开发出高质量的软件产品越来越困难,于是软件开发人员开始关注如何找到理解软件的更好途径和探讨是否存在更好的途径来构造复杂的大型软件系统。为此,作为基层的计算机技术人员,我们对手头的工作项目进行了深入的思考。下面,结合我们在铁路概预算软件开发过程中的体会,就如何用N层体系结构来设计该项目的系统结构,进行简单介绍。

1 N层体系结构简介

设计和数据库相关的软件系统,总逃不开在如何确定系统的体系结构的问题上做出选择。随着网络技术的不断发展,体系结构已经从当年的不分层,发展到今天的N层体系结构。软件的设计实现也从当年无规矩可循的泥沼中,走到今天规范的高速路上来。

最初的解决方案是不分“层”的,随着网络技术的发展,数据层被分离出来,这样就形成了一个典型的两层结构的系统设计。在这种架构中,数据库系统在后台存储和管理数据,在用户界面层里,负责进行业务逻辑的处理和表示。虽然在大多数情况下,这些已经足够解决问题了,但仍存在着一些缺陷,如由于客户端包含了业务逻辑,业务逻辑一改,所有客户端都要升级等。由此,三层架构出现了,业务逻辑层被从客户端分离出来,并被部署在一台服务器上,客户端简单到只是IE浏览器。这样,便弥补了两层架构的缺陷。但对于需要在复杂客户端操作的软件系统,这么“瘦”的客户端显然是不能满足需求的,所以客户端必须是复杂的应用程序界面,那么,业务逻辑又应该放到哪里呢?

随着组件技术的不断发展,N层架构出现了,这给上文的提问以多样的解决方式。N层架构还是以三层架构为基础的,只是业务逻辑层被划分得更细,如表示层和业务逻辑的接口被从业务逻辑层单独分离出来,业务逻辑和数据库的接口也被从业务逻辑层单独分离出来,数据实体层被单独定义,这样每层的逻辑更单一,层与层的接口更清晰,而这一切带来的就是更容易地升级、更简单地维护、更灵活地部署。

总结了这么多的分层方式,可以看出,给出一个设计方案是有多种选择的。采用何种方案的标准是:哪种体系结构的设计方案更适合我们的具体项目;适合的标准是:体量合适、效率满足需要、易于升级、易于维护、可以灵活部署。

下面以我们的项目为案例,阐述我们的解决方案。

2 铁路概算软件的项目特点

设计铁路概算软件体系结构时,以下方面是必须考虑到的:

2.1 多专业配合工作

一个工程项目一般包含多个子工程,每个子工程需要多个专业配合设计。比如一个房建工程就涉及房屋、水暖、电力、装饰、机械等专业;更大的工程如一个秦沈客运专线,就需要多个车站多个区间的线路工程、桥梁工程、房建工程、信号工程、通信工程等。如此说来,我们面临这样一个事务模型:它是由许多相互关联的子事务构成的,这些子事务模型共享基础资源,共享设计标准,彼此有时序关联,互为约束条件。

2.2 多人协作工作

用户是软件设计时要考虑的第一要素。一个复杂的概算项目是由许多角色共同参与、彼此配合来完成的。这在本项目中表现得尤为突出。如,一种典型概算编制的工作模式就是:具体设计者完成自己负责的个别概算;概算科负责配置定额标准,设计标准,并进行统计汇总;项目总负责人或总工程师负责审核,以及责令修改。在这种模式中,要由许多有特定权限的角色共同协作来完成工作。

2.3 异地并行工作

随着Internet接入的不断普及,异地(非公司局域网范围内)并行工作成为可能,而这也正符合大型勘查设计工作的特点。另一种情况是,概算审查单位(比如上级主管部门、建设单位)也都处于本单位局域网之外,他们也有要求通过Internet访问某特定概算的需求。

这些情况,带来了通过Internet访问本系统的需求。

2.4 多变的部署规模

大的设计院,一般有几百个设计人员,有几十个人的工经处;中型的设计院,有近百个设计人员,有十余人的概算科;而众多小型设计所、施工单位,有可能只有一个人,需要在一台电脑上完成所有操作。

对于这种种需求,在今天飞速发展的计算机技术面前,其有效实现都已经成为可能。

3 采用的软件技术

(1)数据库系统采用了MS SQL Server2008。(2)客户端采用了MS.Net Windows Application和IE配合使用。(3)服务端组件的设计采用了.Net Managed Component和ASP.NET。(4)Web服务器采用MS IIS。(5)数据交换技术,采用了两种技术,一是基于SAOP协议的XML Web Service,它可以穿透防火墙,适于Internet应用;二是基于TCP或HTTP协议,传送Binary Stream的.Net Remoting,它交换速度更快,适于局域网内部应用。由于这些技术不在本文的讨论范围之内,故不展开讨论。

4 我们的铁路概算软件的体系结构

基于以上种种考虑,我们的铁路概预算软件的体系结构设计共分为六层,如图1所示,箭头代表调用关系。

4.1 客户端表示层

该层采用有着丰富表现形式的Windows应用程序作为客户端程序,通过这个界面,可以实现复杂的输入和处理方式,也能更好地利用客户端的资源,这是IE插件所难以办到的。

4.2 业务逻辑接口层

该层用来将客户端表示层和业务逻辑层隔离。在该层中,主要完成用户权限管理工作,只有有权限的用户才能存取相应的业务。同时,在该层中完成界面表示层和业务逻辑层之间数据格式的转换。该层也为之后灵活地部署提供了条件。

4.3 业务逻辑层

该层的功能是比较好理解的——在该层中处理所有定额的管理逻辑、规则的定义逻辑、概算的计算逻辑,以及所有数据格式的合理性检查。同时,它又是对多种来自业务逻辑接口层的一种归纳抽象,可以降低冗余业务逻辑,提高代码的内聚性。

4.4 数据接口层

该层的功能很单一,是内存中的数据集和数据库之间的接口。它只负责定额、概算数据和数据库之间的交换。它是业务逻辑层对数据库的调用的一种归纳和抽象,能够大幅度地降低冗余代码。

4.5 数据实体层

数据实体层是数据库中的实体在组件中的再定义。为什么要把它单独分离出来呢?这是因为其他各层从本质上说都要和数据库对话,业务逻辑操纵的业务实体就是数据库中的实体,而在N层结构中,只有数据接口层才能和数据库交流,为此我们创建了数据实体层。从上图中可以看出,其他各层都要对本层进行访问。同时带来的好处是,它是数据库中的实体的所有信息在组件中的映象,它对所有数据实体在组建中建立了强制类型的约束。

4.6 数据库层

数据库层负责定额、规则、概算数据的存取。把所有业务逻辑从数据库层剔除,当然是理想化的,但同时也会使我们不得不放弃数据库管理软件的强大功能所带来的好处。为此我们还是利用了数据库提供的关联、索引、约束等手段,同时设计了简明的存储过程和触发器,在提供和数据接口层交流的同时,降低业务逻辑层的工作量。

5 多层的优点

有的读者可能会问,这么简单的一个输入定额、费率、再计算、输出报表的过程用得着设计这么多层吗?那么,抛下逻辑清晰、便于升级、便于维护等优点不讲,下面介绍几种部署方案,来简单了解一下N层体系结构设计带来的其他益处。

5.1 简单的个人版的部署

这类用户可能只有一台电脑,需要我们将所有组件都部署在同一台机器上。数据库可以安装SQL Server MSDE,同时简化用户管理模块,使该用户拥有所有权限。这样,该用户会觉得和使用一个单机版的软件没有区别。

5.2 一个中大型企业的部署

图2是各种组件在一个企业局域网内部的部署:

竖虚线左面的是网络拓扑结构,右面的是各层部署的组件。服务器集群的作用是均衡网络负载,那么客户的个数将只会受到集群的大小的限制。一般情况下,几百人的企业有一台电脑也足够了。

5.3 面向Internet用戶的部署

图3是各种组件在一个Internet解决方案中的部署:

从这张图中可以看出,客户端可以通过调用Web Service,在Internet上访问本系统,同样为了降低海量用户访问的压力,可以设计两个服务器集群,一个是web服务器集群,它是一个桥梁,沟通外部世界;另一个集群是组件服务器集群,用以完成业务逻辑处理。两个集群之间用.Net Remoting连接。

这样,通过组件的部署与配置,我们的软件系统已经发展为一个可以在Internet级别上应用的大型系统,可以为广大的客户提供铁路工程概预算服务。

6 结 论

以上是我们对铁路概预算软件项目设计的简单介绍。通过对N层体系架构的理解、对具体项目的分析,阐述了在本项目中,我们对层次的划分,以及它所带来的益处。

我们希望能够将工作中的切身体会进行归纳总结,并试图得出超出具体软件项目之外的规律性的东西。希望同行们批评指正,让我们工程技术人员一起努力,把最新的计算机软件技术应用到生产实践中,让新兴的软件信息技术为铁路建设事业服务。

参考文献:

[1] 李准,王晓刚.铁路工程概预算工程数量自动套用定额系统研究 [J].铁道标准设计,2014,58(3):141-145.

[2] 陈瑜.基于专家系统的铁路工程单项概算编制研究 [J].铁道标准设计,2017,61(1):154-158.

[3] 金强.新版铁路工程概预算编制办法与费用定额的特点及应用 [J].铁路工程技术与经济,2017,32(4):13-16.

作者简介:张弛(1988.03-),男,汉族,辽宁锦州人,本科,助理工程师。主要从事计算机应用相关研究。