3层架构&三层架构标准

  • 格式:pdf
  • 大小:141.22 KB
  • 文档页数:13

下载文档原格式

  / 13
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

三层架构标准

微软的.Net平台给应用程序开发提供了一个非常好的基础系统平台,但是,如何在这个系统平台上构建自己的应用系统,还需要我们针对应用系统的特点,构建自己的应用系统框架(Framework)。笔者在应用.Net 开发系统的过程中,结合多年的开发经验,设计了一套.Net下的应用系统开发框架,以及相应的中间件和开发工具,已经在多个项目中和软件产品中应用,取得了很好的效果。

系统的基本结构

对于典型的三层应用系统来说,通常可以把系统分成以下三个层次:

a.数据库层

b.用户界面层

c.应用服务层

对于应用系统来说,在这三个层次中,系统的主要功能和业务逻辑在应用服务层进行处理,对于系统框

架来说,主要处理的也是这个层次的架构。

对于应用服务层来说,需要处理以下几个方面的问题:

数据的表示方式,也就是实体类的表示方式,以及同数据库的对应关系,即所谓的O-R Map的问题。在框架中,这个部分位于数据实体层

数据的存取方式,也就是实体类的持久化问题,通常采用数据库来永久存储数据实体,这就需要解决同数据库的交互问题。在框架中,这个部分位于实体控制层

业务逻辑的组织方式。在面向对象的系统中,业务逻辑是通过对象间的消息传递来实现的。在这个部分,为了保证逻辑处理的正确性和可靠性,还必须支持事务处理的能力。在框架中,这个部分位于业务规则层 业务服务的提供方式。为了保证系统的灵活性和封装性,系统必须有一个层来封装这些业务逻辑,向客户端提供服务,同时作为系统各个模块间功能调用的接口,保证系统的高内聚和低耦合性。这里的客户指

的不是操作的用户,而是调用的界面、其他程序等。Web层(页面)通常只同这个部分交互,而不是直接调用业务逻辑层或者数据实体的功能。在框架中,这个部分位于业务外观层。

将系统划分成这么多层次,其好处是能够使得系统的架构更加清晰,并且,系统的层次划分的清晰,就意味着每个层次完成的功能就比较单一,也就意味着这些功能的代码是有规律可循的,也就意味着我们可

以开发一些工具来生成这些代码,从而减少代码编写的工作量,使得开发人员可以将更多的精力放到业务

逻辑的处理上。正是基于这个想法,我们开发了针对这个框架的开发工具,在实际的使用,能够减少很多

代码的编写量,效果非常好。同时,为了应用服务层更好的工作,我们设计了一个支持这个框架的应用系

统中间件,现在,除了本公司,也已经有多家其他公司在试用这个中间件系统。

数据库服务层

数据库用于对象的持久化储存,也即数据的存放。数据库层采用关系型数据库。系统可以支持各种主流

的关系型数据库系统,包括SQL Server7.0以上版本和Oracle8以上版本的数据库。

框架提供了一套类库,作为客户端同数据库之间交互的中介,很大一部分功能就是要对两者之间的交互

进行控制,并提供一系列提高性能和安全性的服务。

用户界面层

用户界面层用于同用户的交互,可以是Web浏览器用户或传统客户端,但是从系统的可维护性等方面考

虑,一般使用Web浏览器为客户端。利用这套框架和开发工具,可以构建纯Web客户端的应用系统,大大方便系统的维护和部署。

数据实体层

这个层用于封装实体类的数据结构,用于映射数据库的数据,表现实体类的类结构和数据。在开发过程中,我们充分感觉到了.Net中DataSet数据对象的强大功能,因此,在O-R Map上,我们实际上是通过DataSet来实现的。

数据实体层包含三个方面的内容:

1) 核心类库定义了EntityData类,这个类继承了DataSet作为所有实体类的框架类,定义了各个实体类的一般结构,至于每个实体类具体的结构,在运行时刻由下述办法确定:

2) 实体类的定义通过XML文件来确定,该XML文件符合JIXML对象实体描述语言的规范(注:JIXML 是迪讯开发的 对象—实体 映射语言),用于确定实体类的结构。例如,一个关于订单的实体类的定义可能类似于下面的结构:

3) 实体类的结构由一系列的类构造器在运行时刻,根据上述规范制定的XML来生成。这些类构造器实现IClassBuilder接口。系统核心类库预定义了一些标准的Builder,一般情况下,直接使用这些标准的Builder就可以了。

类构造器采用的类构造工厂的设计模式,如果使用者觉得标准的Builder不能满足要求,也可以扩展IClassBuilder接口,编写自己的类构造器,然后在系统配置文件中指明某各类的类构造器的名称即可。

系统同时提供了实体对象缓存服务。通过上述方式产生的实体对象可以被缓存,这样,在第二次调用该对象时,可以从缓存中读取,而不用从头重新生成,从而大大提高了系统的性能。

数据实体层采用这种设计模式具有以下优点:

1.实体类定义XML文件可以通过工具来自动生成,减轻开发工作量。

2.在修改实体类的定义时,如果修改的部分不涉及到业务逻辑的处理,只需要修改XML文件就可以了,不用修改其它程序和重新编译。

3.系统提供的实体对象缓存服务可以大大提高了系统的性能。

4.类构造工厂的设计模式大大提高了系统的灵活性。

数据访问层

这个层次提供对数据库操作的服务,通常执行以下一些操作:

1.连接数据库

2.执行数据库操作

3.查询数据库,返回结果

4.维护数据库连接缓存

5. 数据库事务调用

框架的类库中包含了数据访问服务,封装了常用的对各种数据库的操作,可以访问不同类型的数据库,使得应用系统在更换数据库时,不用修改原有的代码,大大简化了开发和部署工作。

数据访问服务还维护数据库连接缓存,提高系统性能,以及对数据库事务调用的服务。

数据访问服务在核心类库中主要通过DBCommon类来提供对数据访问功能调用的服务。

实体控制层

实体控制层用于控制数据的基本操作,如增加、修改、删除、查询等,同时为业务规则层提供数据服务。

业务规则层

业务规则层包含各种业务规则和逻辑的实现业务规则层的设计通常需要进行很好的建模工作。业务规则的建模,一般采用UML来进行。可以使用UML的序列图、状态图、活动图等来为业务规则建模。这个部分的工作,通常通过一系列的类之间的交互来完成。例如,在一个库存系统的入库单入库操作中,除了需要保存入库单外,在这个之前,还必须对入库单涉及的产品的数量进行修改

业务外观层

业务外观层为 Web 层提供处理、浏览和操作的界面。业务外观层用作隔离层,它将用户界面与各种业务功能的实现隔离开来。

业务外观层只是将已经完成的系统功能,根据各个模块的需要,对业务规则进行高层次的封装。

框架没有规定采用在业务外观层采用何种实现方式,但是建议使用Web Service来提供服务。采用IIS 为Web服务器,可以很方便的部署Web Service。

Web层

Web 层为客户端提供对应用程序的访问。Web 层由 Web 窗体和代码隐藏文件组成。Web 窗体只是用 HTML 提供用户操作,而代码隐藏文件实现各种控件的事件处理。

通常,对于数据维护类型的 Web 窗体和控件事件处理代码,我们提供了工具来生成,减轻开发工作量。

除了上述6个逻辑层以外,系统通常还包括一个系统配置项目,提供应用程序配置和跟踪类。 框架中间件提供的主要服务

框架中间件提供一系列的服务,以实现对构筑其上的应用软件的支持。

O-R Map:对象—关系数据库映射服务

这部分完成应用程序中的实体对象同关系型数据库的映射,主要为数据实体层提供服务。

在这个部分中,定义了JIXML实体—对象映射语言。这是我们开发的一种使用XML来描述对象—实体间的映射关系的规范语言,开发者可以使用它来描述对象—实体间的映射关系。开发者也可以直接扩展IClassBuilder接口,手工完成对象—实体间映射关系的代码。系统在运行时刻,会根据配置文件的设置,调用实体类的构造器,动态构造出实体对象的结构。

Database Access:数据库访问服务

这个部分提供对数据库访问的服务。在这个框架上构建的应用软件系统,不直接操纵数据库,而是通过类库提供的数据访问服务来进行。数据库访问服务作为应用程序同数据库之间的中介者,能够有效防止对数据库的不安全操作。

数据库访问服务同时提供了对数据库库事务处理的调用方法,开发者可以很方便的通过数据库访问服务调用数据库的事务处理功能。