西南加油IC卡项目架构设计
一、概述
架构是一个软件系统的最关键部分,它的好坏与否将会对系统产生深远的影响。系统的稳定性、可扩展性、可重用性、易维护性等重要指标都严重依赖于架构。系统的性能指标更是直接与架构相关。因此,高度重视架构设计,是一个软件系统能否成功开发的重要标识。由于本次开发是采用项目定制的方式,因此,用户需求可能变化较大,这对架构有一定的影响。为了保证架构的先进性与合理性,架构设计将是一个动态的过程,会随着项目的进展发生变化。
二、目的
本次架构设计主要为了达到以下几个目标。
1.最大化的软件重用,包括组件重用和设计模式使用。
提高重用,需要架构中的构件具有较高的独立性,构件的实现变更不导致其它构件的设计变更;另外一点是构件间接口的稳定性和可扩展性,如果因为实现新增需求必须对接口作变更,如果相关构件不支持这个新增需求,可以保持接口不变。
2.尽可能的简单明了
使设计简单的方式是对系统做分层,并采用组件化开发技术。对用户的业务需求进行分析,抽象出通用的功能模块,便于不同模块调用。
3.灵活的拓展性
灵活的拓展性,依赖于接口定义、模块间的松耦合性。
三、项目背景
n 零售市场发展迅速
国内石油公司近年来持续在终端销售网络建设上加大投入,新建、收购、合资、联营、加盟等多种手段并举,加油站数量快速扩张,零售销量比重日益提高并超过批发量,成为石油销售公司经营管理的重点关注领域。
n 市场竞争日益激烈
除国内传统的竞争对手外,还日益受到国际(如:壳牌、BP和艾克森美孚)石化企业的冲击。目前零售市场已全面开放,下游市场基于服务和品牌的竞争,将随着零售市场开放以及在2006年成品油批发市场开放后会进一步加剧。
n 客户要求不断增加
随着中国石化加油IC卡的全国联网和推广,以及国际石油公司成熟的多元化服务模式的引入,客户对石油公司的要求增加,忠诚度降低,维持老客户和吸引新客户的成本会越来越高。
n 加油站用户管理及服务手段亟待提高
零售业务主体面向终端用户从事油品销售及服务业务,加油站作为面向用户的窗口,零售用户尤其是集团用户的开发、管理与服务始终是其营销工作的重中之重。借助先进的信息化等技术手段提供方便、高效的用户管理与服务,是目前零售业务经营管理中亟待解决的问题。
n 公司期望通过本项目建立全新的软件技术架构
公司在.Net技术领域并无成熟的架构,希望在本项目开发过程中建立一个相对成熟的通用软件技术架构。在开发的同时,能够对现有人员进行相关技术培训,提升现有人员的技术水平。在项目管理上,希望能够使用一些较为成熟标准的软件开发模型。
四、系统建设目标
本系统主要建设目标是为中国石油西南分公司建立一个基于IC卡的销售网络,它是一个基于互联网的在线销售管理系统。这个系统一天24小时,一年365天随时在线,保证用户随时随地的使用。它可以实现西南分公司内部各省公司、营业网点、加油站销售数据的即时管理,方便用户对IC卡加油业务的管理。在系统建设过程中,采取先行试点,再全面拓展的建设方式。
五、业务架构设计
1、功能架构
2、帐务架构
3、功能布署架构
六、技术架构设计
6.1设计原则
1. 健壮性
充分利用.net Framwork的部件来构建系统,尽量保证所写代码的高质量。
2.性能和可测性
充分利用面向对象的设计原则,好的面向对象的原则有利于我们构建复杂的应用。
3.避免不必要的复杂性
使用分层技术,采用SOA的思想。不要跨层访问。
4.可维护性和可扩展性
必须确保应用的每个模块都有一个清晰的职责。模块之间尽量基于接口工作。要采面向接口的设计方法。
5.可重用性
模块功能应尽量单一,不要将多个功能放在一个模块。
6.2逻辑架构设计
1、系统分层与各层的功能。
系统采用三层结构:用户界面层、业务逻辑层、数据库层。
用户界面层负责用户数据的输入与输出,以及客户端数据的验证功能。为了保证用户界面友好,界面层数据采用异步操作的方式。
业务逻辑层实现用户的业务逻辑操作,这是系统的主要功能部分。除了这一层外,一般情况下其它层不能出现用户的业务逻辑。如一些逻辑更适合于采用存储过程来实现,可在数据库层实现。但应尽量避免这种情况出现。业务逻辑层在内部可以分为三个部分:业务逻辑层、数据映射层和数据访问层。业务逻辑层实现业务逻辑;数据映射层实现ORMaping功能,即对象与数据表的映射;数据访问层实现对数据库的底层访问功能。
数据库层主要实现数据的存储功能。访问数据时应尽量使用存储过程和视图来实现。为了保证开发的效率,允许直接访问表。
2、层间通讯协议
用户界面层与业务逻辑层采用TCP/IP协议,基于.net remoting技术实现。业务逻辑层与数据库层采用TCP/IP协议。
3、业务逻辑层接口设计
主要使用以下几个设计模式:factory模式、singleton模式、façade模式。业务逻辑层整体对外采用接口访问,是一个外观模式。接口通过工厂模式来获取。而工厂自身使用单例模式来实现。接口的设计越简单越好,业务逻辑层设计了基本访问接口。该接口仅包含三个方法Set、Get、Do,分别用于存、取、执行操作。接口设计详见代码框架,也可参阅系统设计文档。
4、外部系统访问
主要有两种类型,一个是对IC卡设备的访问,这主要在用户界面层来实现。主要原因是因为此类设备都安装在用户机器上。此IC卡访问接口独立成模块,便于以后重用。另外一个是本系统对外部系统的访问,此类接口设计在业务逻辑层。所有对外部系统的访问均要在此模块实现,不能在其它模块出现。
5、查询条件设计
系统整体采取OOD的思想,这样用户要对数据进行查询时,就不能使用SQL语言,而且查询条件必须与数据库类型无关。为此目的,系统中专门设计了查询条件类和查询集合类。详见代码框架,也可参阅系统设计文档。
6、逻辑架构整体图
6.3程序架构
1、服务器端架构图
2、客户端架构图
6.4布署架构
1、系统运行环境
数据库服务器:Win2003 server;SQL SERVER2000中文版
应用服务器:Win2003 server;专用windows服务
客户机:WinXP/Vista
以上操作系统应安装有DotNet Framework2.0。
2、硬件环境
数据库服务器和应用服务器:
Intel 至强双核或四核CPU、最小内存4G、硬盘最小剩余空间2G、100M/1000M网卡。
客户端PC机:
Intel P4及以上、最小内存512M、硬盘最小剩余空间500M、100M/1000M网卡、17寸显示器、支持32位真彩色的显卡
3、网络环境
应用服务器和数据库服务器位于西南分公司内,布署在同一局域网内,使用1000M网络带宽互联。应用服务器应保证公网IP、端口以及域名,并以最小10M带宽接入互联网,保证远程客户端的访问。西南分公司内部客户机使用局域网接入系统应用服务器;省公司、营业网点和加油站采用1M带宽ADSL接入互联网,通过域名或IP地址访问应用服务器。
4、功能布署
用户界面层布署在客户端机器上;业务逻辑层布署在应用服务器上,使用自主开发的windows服务作为宿主;数据库层布署在数据库服务器上。
1)西南分公司应用服务器布署组件:
Systom.SouthwestIC.Server.exe
Systom.SouthwestIC.Manager.exe
Systom.SouthwestIC.Rule.dll
Systom.SouthwestIC.Rule.Interface.dll
Systom.SouthwestIC.DataAccess.dll
Systom.SouthwestIC.ORMaping.dll
Systom.SouthwestIC.Data.dll
Web.config
2)西南分公司应用系统布署组件:
A、系统管理客户端:Systom.SouthwestIC.Admin.exe
B、库存管理客户端:Systom.SouthwestIC.Stock.exe
C、IC卡管理客户端:Systom.SouthwestIC.ICManager.exe
D、通用组件:
Systom.SouthwestIC.Data;
Systom.SouthwestIC.Rule.Interface.dll
Systom.SouthwestIC.ICAcess.dll
Systom.SouthwestIC.config
3)省公司应用系统布署组件:
A、帐务管理客户端:Systom.SouthwestIC.Account.exe
B、客户关系管理客户端:Systom.SouthwestIC.Crm.exe
C、库存管理客户端:Systom.SouthwestIC.Stock.exe
D、通用组件:
Systom.SouthwestIC.Data;
Systom.SouthwestIC.Rule.Interface.dll
Systom.SouthwestIC.ICAcess.dll
Systom.SouthwestIC.config
4)营业网点应用系统布署组件:
A、业务处理客户端:Systom.SouthwestIC.Operation.exe
B、帐务管理客户端:Systom.SouthwestIC.Account.exe
C、客户关系管理客户端:Systom.SouthwestIC.Crm.exe
D、库存管理客户端:Systom.SouthwestIC.Stock.exe
E、通用组件:
Systom.SouthwestIC.Data;
Systom.SouthwestIC.Rule.Interface.dll
Systom.SouthwestIC.ICAcess.dll
Systom.SouthwestIC.config
5)加油站应用系统布署组件:
A、加油支付客户端:Systom.SouthwestIC.Payment.exe
B、通用组件:
Systom.SouthwestIC.Data;
Systom.SouthwestIC.Rule.Interface.dll
Systom.SouthwestIC.ICAcess.dll
Systom.SouthwestIC.config
5、网络拓扑图
七、安全架构设计
7.1基础安全设计
系统的基础安全主要包含四个方面的内容:身份验证、授权访问、安全审核、数据安全。整个系统安全采用RBAC模型,也就是基于角色的访问控制。下面来分别对每一部分进行说明。
1、身份验证
所有系统资源必须在用户身份得到验证以后才可访问,访问权限由访问身份决定。所有未经授权的用户,均无法访问系统。身份验证采用用户名加密码的方式来实现,用户名不能重复使用。在用户忘记密码时,系统管理员可以将密码置为初始密码,但无法查获用户原来使用密码。用户密码使用单向加密码算法进行加密,程序员不可能利用算法推算出用户密码。在对用户密码进行加密时采用帐号做为Salt进行加密,保证不同用户在密码相同时,在数据库中存储也不相同。这样将无法采用数据库复制密码的方式来破解系统。用户密码在数据库采用加密方式存储。
2、授权访问
授权访问主要是通过RBAC模型来实现的。系统的所有权限授予角色,用户通过加入不同角色来获取相应权限。RBAC模型已很成熟,在此不再详述。
3、安全审核
系统对所有涉及安全的访问均进行日志记录,这样即使系统安全被攻破,也能留下各种相关记录,以便事后查询。
4、数据安全
本系统的数据安全要求不高,用户仅要求保证实现以下两点。一是不同的平级部门的用户不能互相查看任何业务数据。二是上级部门可以查看下级部门的任何业务数据。数据权限不能通过授权的方式来获得。
7.2通讯安全设计
本系统是一个基于互联网的分布式系统,大量的关键业务数据在互联网上传送,通讯安全非常重要。本系统采用VPN+.Remoting的方式来实现互联网上的通讯。VPN来保证传输的安全性,.Remoting采用二进制方式进行传输,以此来保证系统的高效性。
7.3 IC卡系统的安全设计
1、 生成密钥
首先,由领导输入初始密码(8位),然后由系统根据该密码进行运算,计算出系统的A密码和B密码,最后将A密码保存至数据库,将B密码保存至IC卡中。
系统中的A密码用于控制对加油卡读取数据,B密码用于控制对加油卡写数据,只有验证B密码正确,才能进行密码的更改及数据的写入。
2、 制卡
在进行制卡时,读取系统的A、B密码,将A、B两套密钥装载至卡中,然后将卡号写入加油卡中。同时将卡的序列号读出,系统将卡序列号,卡号及A密码(该信息需加密存储)记录在数据库中,防止卡被复制。
3、 读卡
需要读数据时,先从卡中读出卡序列号,然后在数据库中查找该序列号对应的卡号及A密码,将该卡号和A密码与卡中的相关信息进行比对,若相同则认为是合法卡,否则,给出错误提示,该卡不能使用。
7.4 其它安全设计
本系统是一个管理钱的系统,数据的准确性与不可篡改性非常重要。系统内部所有涉及钱的业务部分均采用标准财务记帐的方式来进行处理。所有涉及钱的单据均不能删除,只能采取红字冲帐的方式进行处理。系统设计有帐务自动审核系统,在夜间自动记帐时对帐务进行审核。一旦出现非法修改系统数据现象,将会自动记录日志报警。并对非法客户或卡进行封锁。
八、非功能需求
性能指标
在给定的硬件环境下,用户的界面响应灵敏度小于1秒,响应时间小于5秒。系统可支持100个同时在线用户。
网络安全
1. 要求提供通讯保护,通过观察通信数据而不可能推断出其中的机密信息。
1. 在网络突然中断时,不能发生数据错误。
2. 网络用户不能采用非法方式进入系统。
系统安全
1.、身份验证。要求为所有进入系统的用户必须经过身份验证。
2、系统功能采取授权方式访问。
3、对关键数据访问有审核,并记录日志。
4、可以实现数据安全认证。
5、系统身份验证不能被穷举法破解

浙公网安备 33010602011771号