UML软件工程组织

用MS.NET开发三层结构应用程序
作者: 孙运动  
  传统两层结构

  在过去应用系统开发过程中,CLIENT/SERVER体系结构得到了广泛的应用 。其特点是,应用程序逻辑通常分布在客户和服务器两端,客户端发出数据资源访问请求,服务器端将结果返回客户端。但CLIENT/SERVER结构存在着很多体系结构上的问题,比如:当客户端数目激增时,服务器端的性能会因为负载过重而大大衰减;一旦应用的需求发生变化,客户端和服务器端的应用程序都需要进行修改,给应用维护和升级带来了极大的不便;大量的数据传输增加了网络的负载等等。

  三层结构介绍

  所谓三层体系结构,是在客户端与数据库之间加入了一个"中间层",也叫组件层。这里所说的三层体系,不是指物理上的三层,不是简单地放置三台机器就是三层体系结构,也不仅仅有B/S应用才是三层体系结构,三层是指逻辑上的三层,即使这三个层放置到一台机器上。

  三层体系的应用程序将业务规则、数据访问、合法性校验等工作放到了中间层进行处理。通常情况下,客户端不直接与数据库进行交互,而是通过COM/DCOM通讯与中间层建立连接,再经由中间层与数据库进行交互。



  ASP.net只是.net中的一部分。它最大的优点除了是编译执行速度快外,我觉得最大的优点是页面和代码分离的编写方式(效果就象DELPHI里的FORM设计界面和处理代码分离一样),对我们这些惯使RAD工具的人来说不啻是个福音。再加上.net库提供的支持事件的各种WEB控件,和以前编写网页方式相比可谓是一场革命。随着分布式对象技术的逐渐成熟,多层分布式应用体系结构得到了越来越多的应用。应用系统只有向多层分布式转变,才能最终解决CLIENT/SERVER结构存在的问题。在多层架构下,应用可以分布在不同的系统平台上,通过分布式技术实现异构平台间对象的相互通信。将应用系统集成于分布式系统之上,能极大地提高系统的可扩展性。

  在多层分布式应用中,在客户端和服务器之间加入了一层或多层应用服务程序,这种程序称为"应用服务器"。开发人员可以将应用的商业逻辑放在中间层应用服务器上,把应用的业务逻辑与用户界面分开。在保证客户端功能的前提下,为用户提供一个简洁的界面。这意味着如果需要修改应用程序代码,只需要对中间层应用服务器进行修改,而不用修改成千上万的客户端应用程序。从而使开发人员可以专注于应用系统核心业务逻辑的分析、设计和开发,简化了应用系统的开发、更新和升级工作。

  Microsoft.NET 为三层结构做的准备

  Microsoft .NET Framework是微软推出的一套下一代开发平台。.NET 基于开发人员的角度来说它是一个公共平台的类库(FCL),包含了近100 个命名空间(namespace)的近5000个类,想想看这是多的强大,还包括一个公共语言运行库(CLR)。因为只要符合.NET的公共运行规范(CLS的语言都可以 使用它提供的强大的类,并编译为微软的中间语言(MSIL),在其他的应用中就可以当作一个组件来调用。同时享受公共运行库带来的一切好处: 垃圾自动回收(GC)、实时编译(JIT)、跨语言互动、跨平台。 .NET 还可比喻是操作系统提供给开发人员的面向对像的API。 ASP.net是.net中的一部分。它最大的优点除了是编译执行速度快外,我觉得最大的优点是页面和代码分离的编写方式,再加上.net库提供的支持事件的各种WEB控件,以及.NET公共平台的类库(FCL),和以前编写网页方式相比可谓是一场革命。

  用ASP.NET部署三层架构

  ASP.NET可以使用.NET平台快速方便的部署三层架构。ASP.NET革命性的变化是在网页中也使用基于事件的处理,可以指定处理的后台代码文件,可以使用C#,VB,J#作为后台代码的语言。.NET中可以方便的实现组件的装配,后台代码通过命名控件可以方便的使用自己定义的组件。显示层放在ASP页面中,数据库操作和逻辑层用组件来实现,这样就很方便的实现了三层架构。



  下面分别就各层的实现举个制作留言簿的小例子。

  我们首先在sqlserver数据库中建一个数据库GestDB,在GestDB中建表:Guestbook



  Create table Geustbook(id int(4) unique not null,name varchar(20),
    content text, Primary key id);


  第一步:打开VS.NET,点击文件-》新建-》空白解决方案,在弹出的新建项目中选择Visal C#项目,模板选择ASP.NET Web应用程序.在位置处给本方案命名为geustbook.如下图所示。



  第二步:建数据库访问控件。单击上图的"确定"。在窗口右边的 "解决方案资源管理器"中右击"解决方案"guestbook""选择"添加"->"新建项目",弹出如下窗口,如图模板选择类库,填写名称,位置。注意该类库理论上与留言簿的工程是没有关系的,所以存储位置可以任意。



  第三步:建立逻辑处理层。同第二步,建立另一个控件BusinessLayer。此控件用来调用数据库控件,封装留言簿所有的逻辑处理。如下图所示。



  第四步:关于引用。因为BUSINESSLAYER要用到系统的WEB控件和刚才建的DBLayer,所以必须把二者添加引用。右键点击BUSINESSLAYER的"引用",选择.NET的"System.web.dll"双击选中



  然后再点项目的"DBLayer"双击选中。



  第五步:把GUESTBOOK ASP.NET项目跟逻辑层联系起来,同样使用添加引用。注意:在BUSINESSLAYER已经引用过DBLAYER,在GUESTBOOK处只需引用BUSINESSLAYER就可以了。



  现在你的GUESTBOOK解决方案资源管理器应该是如下图所示:



  如果不是的话,请检查一下上面的步骤哪里是否出错。

  通过上述步骤,就已经成功部署了ASP.NET的三层架构。在guestbook这一层我们放置应用显示的ASP页面,在BusinessLayer层,我们把所有的业务逻辑代码在该层实现。DataLayer层主要处理数据库的操作,供BusinessLayer层调用。

  只要在各个层中实现具体的类就可以成功实施三层结构的应用程序了。



  总结:

  本文简要描述了三层架构的软件体系思想,通过一个留言簿的例子主要介绍了用MS.NET部署三层结构的具体实现方法。

版权所有:UML软件工程组织