基于.NET2.0的多层架构设计
 

2009-12-29 作者:孙仲美,乐天稷 来源:网络

 

在电子商务应用中,越来越多的使用多层架构,因为基于两层架构的程序结构只适用于规模较小的任务,其开发、维护、成本以及在代码重用、灵活性、可维护性等方面都不能让人满意。

一、三层架构

1.概述

使用多层应用程序结构,能使用户界面代码和业务逻辑代码分离,方便了应用程序中代码的修改,具有良好的解耦性。将业务逻辑集中到一个类库中,从而方便了开发和维护。在数据库数据的操作中,避免了代码的重复,提高了重用性。可以随时将组件分离到不同的物理计算机上。具有灵活的扩展性。多层构架主要分为:表示层、业务层和数据层。

(1)表示层(Presentation Layer)。表示层提供应用程序的用户界面(UI),在ASP.NET中页面是UI的表现形式,在Windows Form里,窗体是主要的表现形式。表现层是系统与用户沟通的惟一渠道,是系统功能的展示。

(2)业务层(Business Logic Layer)。业务层实现应用程序的功能。在.NET中,通常以类库的形式封装系统需要的业务逻辑。业务逻辑是开发过程当中主要的任务。

(3)数据访问层(Data Access Layer)。数据访问层中包含了与数据存储进行交互的类库。这些类在功能上和业务逻辑层相互独立。数据访问层实现所有业务逻辑所需要的数据访问功能。

2.Microsoft .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的结构,所以在表现层使用ASP.NET,也就是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@163.com或allenlecn@gmail.com。(文中源代码下载请访问:http://allenlecn.googlepages.com/layerappdemo)

参考文献:

[1]Paul D. Sheriff《设计 .NET 应用程序》

[2]郝刚等:《ASP.NET 2.0开发指南》人民邮电出版社,2006.5

[3]龚赤兵:《ASP.NET 2.0 网站开发实例教程》人民邮电出版社 2006.7

[4][美]Andrew Hunt, David Thomas 著,陈伟柱,陶文 译 《单元测试之道C#版:使用NUnit--程序员修炼三部曲

火龙果软件/UML软件工程组织致力于提高您的软件工程实践能力,我们不断地吸取业界的宝贵经验,向您提供经过数百家企业验证的有效的工程技术实践经验,同时关注最新的理论进展,帮助您“领跑您所在行业的软件世界”。

资源网站: UML软件工程组织