在电子商务应用中,越来越多的使用多层架构,因为基于两层架构的程序结构只适用于规模较小的任务,其开发、维护、成本以及在代码重用、灵活性、可维护性等方面都不能让人满意。
一、三层架构
1.概述
使用多层应用程序结构,能使用户界面代码和业务逻辑代码分离,方便了应用程序中代码的修改,具有良好的解耦性。将业务逻辑集中到一个类库中,从而方便了开发和维护。在数据库数据的操作中,避免了代码的重复,提高了重用性。可以随时将组件分离到不同的物理计算机上。具有灵活的扩展性。多层构架主要分为:表示层、业务层和数据层。
(1)表示层(presentation layer)。表示层提供应用程序的用户界面(ui),在中页面是ui的表现形式,在windows form里,窗体是主要的表现形式。表现层是系统与用户沟通的惟一渠道,是系统功能的展示。
(2)业务层(business logic layer)。业务层实现应用程序的功能。在.net中,通常以类库的形式封装系统需要的业务逻辑。业务逻辑是开发过程当中主要的任务。
(3)数据访问层(data access layer)。数据访问层中包含了与数据存储进行交互的类库。这些类在功能上和业务逻辑层相互独立。数据访问层实现所有业务逻辑所需要的数据访问功能。
oft .net2.0 framework支持多层构架
在.net 2.0 中出现了一系列的新的控件来支持多层构架。
二、系统开发目标
1.销售流程实现sop
本文以销售公司为例,sop(standard operation procedure),即标准作业程序,就是将某一事件的标准操作步骤和要求以统一的格式描述出来,用来指导和规范日常的工作。sop的精髓,就是将细节进行量化,用更通俗的话来说,sop就是对某一程序中的关键控制点进行细化和量化。
优化企业的销售流程。量化销售过程当中的每一个关键因素,增加了销售过程的可控性。
三、概要设计和业务流程分析
1.系统设计流程
系统开发的流程如下:
图1 系统开发流程
首先,根据需求分析,设计系统总体架构;随后设计数据库、设计数据表;然后一个一个模块进行开发。模块的开发采用三层b/s 结构,分层的步骤如下:设计数据层、建立业务逻辑层、设计表示层。
2.业务流程
为了实现销售流程的sop,首先要对业务流程进行分析:
销售公司将作为网络交互的中心,每一个用户想使用系统的功能首先必须通过系统的身份验证。
一般情况下,销售公司的流程如下:
(1)销售人员获得新的业务机会。如果新的业务对应的客户在客户关系管理crm ( customer relationship management )中不存在,销售人员首先要在crm中添加该客户的信息,再创建业务机会。销售人员会根据和客户的商谈状况随时更改业务机会的状态(进行中、失败或者成功等)。
(2)当销售人员在赢得一个业务机会后,需要生成销售订单。虽然销售人员事先已经查看了产品库存情况,但某些突发事件可能导致创建销售订单时库存不足。只有当订单中的产品库存满足要求时,创建销售订单的请求才能被发送给财务人员处理。
(3)财务人员会收到一个手机短信,告知他有一个销售订单需要处理,同时日程表中自动添加一项新的事务,要求他处理这个销售订单。如果不满足要求,则订单被冻结。销售人员被通知不能提交订单。当产品库存满足要求时,系统会发短信通知销售人员重新提交订单。
3.系统设计
系统架构:销售公司在销售流程中,销售人员是持有移动设备的,可以很方便的携带,方便地和公司财务系统、库存管理系统、生产系统获得联系。财务系统、库存系统、生产系统使用的都是终端。系统和系统之间可以相互通信。
设计数据层:
数据访问逻辑组件:代表调用程序提供对数据库执行以下任务的方法:
在数据库中创建记录 (create)
读取数据库中的记录并把业务实体数据返回给调用程序 (read)
使用调用程序提供的修改后的业务实体数据更新数据库中的记录 (use)
删除数据库中的记录 (delete)
执行上述任务的方法通常称为“crud”方法,这是由各项任务的首字母组成的一个缩写词。
数据层的实现我们可以采用microsoft application block中的data access block 它提供了封装好了的数据库操作功能,实现了包括oracle,sql server等数据库的操作。也可以使用一些开源( open source )的o/r mapping的框架,如nhibernate等。
表示业务实体:每个数据访问逻辑组件都处理一种特定类型的业务实体。它主要用于表示数据存储中的持久对象。是对数据库的一个强类型的映射。这些实体在数据层和业务逻辑层相互独立。
例如在系统中会有client(客户信息表),其数据库设计如下:
那么它的业务实体的类图就应该如下图,它实际上就是client数据表的一个映射。
业务逻辑层:业务逻辑是任务的重点。因为数据层并没有对业务实体进行逻辑上的处理,只是实现了crud方法,而业务逻辑层则提供对业务实体的逻辑操作,这些操作完全取决于企业的业务逻辑。这一层也是今后工作最容易更改、升级的部分。
表现层:本系统采用的是b/s的结构,所以在表现层使用,也就是web页面。主要考虑的是用户的交互问题,即系统应有,一个友好的图形界面,microsoft提供给用户丰富的人机交互手段。用户可以很容易地使用系统。microsoft最近推出的microsoft ajax(原名:atlas)提供给开发者方便实现高效交互的实现方法,在这种高效的交互下,弥补了b/s结构相对c/s结构的弱处,加强了用户的交互体验。
四、单元测试
在一个软件项目中,需要做多种测试。有些测试需要用户的参与;而有些则需要专门的质量保证小组来进行;或者需要其他的昂贵的资源。为了平衡成本和时间等因素,项目中采用了单元测试。单元测试并不是在这个项目快完成时才进行的,而是在设计的过程中就必须进行单元测试。
在.net中可以由程序员编写单元测试的代码,但是容易出错。为了解决这个问题,有一些开源的单元测试软件可以供程序员选择,在.net中比较常用的单元测试软件有nunit,它提供了一套测试框架和一个测试运行程序。
在microsoft visual studio 2005中,visual studio 2005为开发人员提供了一个全新的测试环境。开发人员可以很轻松的开始测试编码,调试测试编码,管理测试用例等。
五、部署和维护
一个软件项目开发完成后需要部署到运行环境当中,模块的数量多少和复杂程度就决定了部署的难度。通常需要确定一个目录结构,哪些目录下放置哪些文件,这些细节都是在开发中必须定义的,运行环境必须严格按照文档来部署。如果模块数量多、复杂程度高,那么每一次的部署的工作量都会很大,而且容易出错。
在.net中,仍然有很多提供部署功能的软件产品可以供选择。比如:nant,它是一个自动构建、部署的工具,可以根据用户的定义,部署多层结构的系统。
在.net 2.0中,microsoft .net framework 2.0提供了一个叫msbuild的工具,msbuild 引入了一种新的基于 xml 的项目文件格式,这种格式容易理解、易于扩展并且完全受 microsoft 支持。msbuild 项目文件的格式使开发人员能够充分描述哪些项需要生成,以及如何利用不同的平台和配置生成这些项。另外,项目文件的格式还使开发人员能够创作可重用的生成规则,这些规则可以分解到不同的文件中,以便可以在产品内的不同项目之间一致地执行生成。
六、结束语
本文简要介绍了在.net环境下构建多层结构的一种方法,如果读者对本文有任何的问题和建议,请发电子邮件与我们联系xiaomeizi74@或allenlecn@。(文中源代码下载请访问:layerappdemo)
参考文献:
[1]paul d. sheriff《设计 .net 应用程序》
[2]郝刚等:《 2.0开发指南》人民邮电出版社,2006.5
[3]龚赤兵:《 2.0 网站开发实例教程》人民邮电出版社 2006.7
[4][美]andrew hunt, david thomas 著,陈伟柱,陶文 译 《单元测试之道c#版:使用nunit--程序员修炼三部曲》
本文链接:http://www.qk112.com/lwfw/guanlilunwen/dianzishangwuguanlilunwen/39967.html