您好,欢迎来到好走旅游网。
搜索
您的当前位置:首页基于.NET的Web应用三层结构设计技术

基于.NET的Web应用三层结构设计技术

来源:好走旅游网
第29卷第8期 计算机工程 2003年5月 May 2003 VoL29 脑8 Computer Engineering 开发研究与设计技术· 文章编号:l000__-3428(2003)08—0l7 3 文献标识码:A 中圈分类号:TP393.02 基于.NET的Web应用三层结构设计技术 胡迎松,彭利文,池楚兵 摘(华中科技大学计算机科学与技术学院,武汉430074) 要:分析了传统3层体系结构的不足,给出了一种基于.NET技术的3层体系结构Web应用的设计方法,并示例说明了如何构建3层体系结 构的Web应用系统。 关健词:3层体系结构;NET;Web service;ASP.NET;ADO.NET;类 Design Technology 0f Three—tier Architecture 0n Web Application Based 0n.NET HU Yingsong,PENG Liwen,CHI Chubin (Computer Science and Technology Institute,Huazhong University of Science and Technology,Wuhan 430074) [Abstract]The paper discusses some limitations in traditional three-tier architecture.Then it gives a design method ofthree-tier archiecturte in Web application based on.NET,and illustaters how to build Web application system using such echnoltogy. [Key wordsl Three-tier architecture;.NET;Web service;ASP.NET;ADO.NET;Class Web体系结构的发展经历了两层体系结构和3层体系结 构阶段。目前,流行的3层Web体系结构主要有基于OMG的 CORBA、基于微软的COM+和基于SUN公司的RMI的分布 式3层Web体系结构。3层体系结构将应用程序分成3个不同 的逻辑层次:表示层,应用逻辑层和数据层。这样的3层结 l基于.NET技术的web应用 ET NFramework是新一代基于Intrnet的分布式计算应 e用开发平台。其大体层次结构如图l所示。 回田圈匝圃[二二] 构存在着许多缺陷: (1)互操作性能差。目前,大量的应用程序是使用c斗_卜、 Java、Visual Basic和其他各种各样的语言开发完成的。如果 这些应用程序要同其他语言开发的应用程序集成且进行数据 交换,则必须采用特殊的方法,如文件传输和分析,消息队 列,还有仅适用于某些情况的API,如IBM的高级程序到程 序交流(APPC)等来完成的。因此互操作性差,开发人员要 想开发不同类型的应用程序必须使用各种语言的编程工具, 使得开发周期很长。 (2)难以跨平台运行。目前OS平台有:WindoWS, Unix,Linux以及很多的嵌入式OS系统,开发人员在一种平 台下开发的程序要移植到其他平台上去运行,是非常困难的 事情。尽管分布式组件对象技术,使得传统的应用程序在互 操作性以及跨平台运行有很大的提高,但并没有从根本上解 决问题。 通用语言规范(Common Language Specification) 统一类库(c1ass Li brary) 通用语言库(Common Language Runtime) 图1.Net Framework的层次结构 NE1框架由3个主要部分组成:通用语言运行库CLR、 统一类库(Clssa Library)和一个被称为AsP.NET的高级AsP版 本。 (1)通用语言运行库CLR CLR是.NET框架的运行环 境。运行库对于编程语言来说并不新鲜,实际上每一种编程 Microsoft.NET是创建可互操作的分布式应用程序的新 平台,客户端和服务器间能够自由地用HTTP进行通信,不 论两个程序的平台和编程语言是什么,应用程序间通信不受 现有Proxy和防火墙的,真正做到了能跨平台、跨语言 运行。.NET平台内建了对web Service的支持。Web Service 与现在的组件技术不同之处在于它使用普遍存在的、于 平台、于软件供应商的标准的网络协议和数据格式(如 岍P和XML)进行通信,主要目标是跨平台的可互操作 性。.NE1技术的实质是建构在.NET CLR(Common Language Runtime:通用语言运行库)和Assembly(装配)技术上。CLR 允许对已经用通用语言运行库支持的编译过的任何代码进行 紧密的交互作用,如开发者用C}f创建的对象,可在Visual Basic中通过继承功能对它们进行扩展。 语言都已包含一个运行库。但是关键在于,Cu暹行环境为 基于.ET平台的一切提供一个跨所有编程语言的统一的运 N行环境。CLR通过中间语言(IL)等机制实现基于.ET的编程 N语言的无关性。另外,cLR也为.NET框架带来潜在的平台 无关性。 (2).NET类库.ET类库为开发人员提供了一套可以使 N用的统一的面向对象、异步、层次结构的可扩展类库。它包 含许多高度可重用的接口、类型。它不仅支持面向过程语 言,还为面向对象语言提供了完美的支持。.ET类库统一 N了Vc抖的MFC、Java的WFC和VB APIs这些不同的基础类 作者倚介:胡迎松(1968一),男,副教授,主研方向:计算机网络 应用研究;彭利文、池楚兵,硕士生 收稿日期:2002.07.10 l73— 库。通过创建一套跨编程语言的通用API,.NET类库可以实 现跨语言继承、纠错处理以及程序调试。开发人员可以自由 地选择他们想使用的任何语言。他们同样可以使用第3方厂 商提供的类库,只要提供的类库能符合CLS(Common Language Speciifcation)规范。类库是以NameSpace组织的, 可以很容易地避免命名冲突,充分保证了.ENT的可扩展 性。 (3】ASP.NET ASP.ENT是使用.ENT框架提供的类库构 建而成的,它提供了一个Web/ ̄用程序模型,该模型由一组 控件和一个基本结构组成。它使得Webb ̄-用程序的构建变得 非常容易。开发人员可以直接使用ASP.ENT控件集。在服务 器上,控件负责将面向对象的编程模型呈现给Web开发人 员,这种编程模型能提供面向对象的编程技术拥有的丰富功 能。ASP.ENT还提供一些基本结构服务(诸如会话状态管理 和进程循环),通过使用ASP.ENT Web]ll ̄务功能,ASP.ENT 开发人员只需进行简单的业务逻辑编程,而由ASP.NE1基本 结构负责通过SOAP传送服务。 1.1表示层 在表示层中,.ENT是由ASP.NET Web Forms来实现 的。Web Forms是CLR的程序模型。基于服务器端的动态页 面技术,可以在服务器端根据客户端请求和提交的信息,动 态地生成与客户端浏览器类型无关的通用HTML页面,也可 以根据客户端浏览器类型,生成特定的数据表现形式(因此 这里的表示层是指面向DNA体系结构中的表示层,即是面 向浏览器的)。Web Forms控件负责生成用户接13。它提出了 种将应用程序代码和用户接口内容分离的更加结构化的方 法,使ASP.ENT网页能动态地编译到受控类中,用以提高性 能。每个引入的HTTP请求都被传递到一个新的网页实例, 因此开发人员不需要关心代码中的线程安全性。ASP.ENT Web Forms ̄架的设计,解决ASP模式的不足。它提供了: (1)建立和使用可重用的用户界面控件,封装常用的功 能,减少页面书写代码的工作量; (2)给开发者提供结构清晰、风格井然的页面逻辑; (3)强大的所见即所 ̄-(WYSIWYG)的页面开发工具; (4)使用任何cLR支持的编程语言(例如现阶段支持的c VB、JScript)进行开发,由-y-CLR的支持,因此不同语言 的ASP.NET代码将是可以互操作的。 1.2应用逻辑层 在应用逻辑层,分布式业务组件负责企业应用的商业逻 辑部署。由于这些业务组件经常负责处理数据库连接、网络 资源、线程等高昂的资源,因此一直是3层/多层架构的关键 和企业应用的核心。.ENT平台内建了对Web Service的支 持。Web Service是基于网络、分布式的模块化组件,它执 行特定任务,遵守具体的技术规范,这些规范使得Web Service能与其他兼容的组件进行互操作。 Web Service体系结构是面向对象分析与设计(0OAD)的 种合理发展。和面向对象系统一样,封装、消息传递、动 态绑定、服务描述和查询也是Web Services中的基本概念。 而且,Web Service另外一个基本概念就是:所有东西都是 服务,这些服务发布一个API供网络中的其他服务使用,并 且封装了实现细节。它的体系结构——面向服务的体系结构 (SOA),如图2所示。 I74一 服务请求者 · 一—--f服务提供者 图2 Web Service面向服务的体系结构(SOA) SOA体系结构定义了3种角色和角色之上的3种操作: 服务提供者角色:发布自己的服务,并且对使用自身服务 的请求进行响应; 服务代理者角色:注册已经发布的服务提供者,对其进行 分类,并提供搜索服务; 服务请求者角色:利用服务代理者查找所需的服务,然后 使用该服务; ·publish操作:使服务提供者可以向服务代理者注册自己的功 能及访问接IZl; ifnd操作:使服务请求者可以通过服务代理者查找特定种类 的服务; bind操作:使服务请求者能够真正使用服务提供者。 Web srevice体系结构的一个基本原则就是使用标准的技 术,包括服务描述、通信协议以及数据格式等。Web Service ̄用的相关技术规范有: (1)SOAP(Simple Object Access Protoco1)。即简单对象访 问协议。它是用于交换XML编码信息的协议。SOAP用XML 将消息编码,因此在调用过程的任何一步都极易处理消息。 调试SOAP消息的方便性使各种SOAP执行能快速聚合在一 起,达到大范围的协同工作。 (2)WSDL(Web Service Description Language)。它是用来 描述Web Service或终端的一种XML语言,它用于定义Web Service以及如何调用它们。WSDL文档可用于动态发布web Service、查找已发布的Web Service以及绑定Web Service。 WSDL将Web]ll ̄务定义成一系列的端口,每个端口用来表示 从抽象端口类型到用于调用Web]ll ̄务的具体通信协议的一个 映射。端口类型由一组与Service Provider交换信息的操作组 成,它支持对包含消息的数据类型的定义。 (3)UDDI(Universal Description,Discovery and Integration)。UDDI通过服务注册,以及使用SOAP访问这些 注册信息的约定来实现在Web上描述并发现商业服务。 UDDI计划的核心组件是UDDI商业注册,它使用一个XML 文档来描述企业及其提供的Web服务。 借助XML和SOAP,集成和交互的问题将从层次上被简 化。XML提供了跨平台的数据编码和组织方法,而SOAP建 立在XML之上,定义了一种跨系统平台的信息交换的简单 包装方法。绑定于HT1]P之上的SOAP协议,可以跨语言、跨 操作系统进行远程过程调用,实现了编程语言和系统平台的 无关性,大大简化了不同企业系统之间的交互问题。 图3描述了这些协议的层次关系。 统一服务互操作协议(这些协议尚未定义) 统一描述、发现和集成协议(UDDI) 互操作协议栈 I简单对象访问协议(SOAP 扩展标注语言(XML) 通用Internet ̄议(H1rrP,TCP/IP 图3协议的层次关系 1.3数据层 ENT框架使用ADO.NET完成对数据库的访问。ADO. NE1技术是一个基于标准的、面向创建分布式数据共享应用 程序的编程模型,是ADO技术延伸和发展,带来了比ADO 技术更为优越的互操作性、可维护性、可编程性和更出色的 lnitializeComponent0;} [WebMethod] public Components.UserDetails GetPersonlnfo(slring sNo) { Components.User user=new Components.User(); rctum user.GetPersonlnfo( N0); } [WebMethod] 性能。ADO.NET包含了众多的类,程序员通过使用这些类 来获得数据访问服务。这些类位于.NET Class Library中,可 以被任何基于.ET设计的应用程序使用,包括前端的数据 N库客户程序、中间层的各种应用程序、工具、语言或者浏览 器调用的商业逻辑对象。 为了将数据的访问和操纵分离,ADO.NET使用两种组 public Components.BormwDetails1]CretPerBorBooldnfo(string sNo){ 件:DataSet和Data Providers对象,给我们对数据库的操作 提供了强有力的支持。它把数据看成是松散的、的和面 向对象的,为处理数据提供了便利。并且使用XML作 为一般的数据传输格式,因此只要接收数据方使用一个 XML解析器便可以解析出数据,具有更优越的互操作性。 Components.User user=new Components.User 0; mtum user.GetPerBorBooklnfo(sN0):} [WebMethod】 public void UserManage(string 0p,sritng inputstr) Administrator() admin.UserManag ̄(op,inputstr);l}} { Components.Administrator admin=new Components 2 Web应用开发实例 我们用一个图书资料管理系统中用户管理部分,来说明 利用.ET实现3层结构的web应用(图4)N。 这里有3个逻辑层:表示层,应用逻辑层以及数据层。 这3层结构将分布式应用程序的不同方面清楚地分开。业务 逻辑被封装到一个.NET部件(实现为一个 类库)内。据库访 问通过一个处理所有和SQL Server管理的提供者交互的类实 现。该类采用ADO.NET提供的对象对数据库进行操作。通 过存储过程访问存储在数据库中的数据。 2.2数据层 对于分布式应用程序来说,在数据层使用存储过程是一 种最好的实施手段。它提供了与中间层更为清楚的分离,还 有助于阐明事务上下文和范围。在存储过程中只封装了基本 的查询,业务逻辑放在中间层.ET类以及XML NWeb service 中。把所有的数据库逻辑封装到了存储过程内。采用如下几 个存储过程: UpGetPersonlnfo:得到个人信息 UpGetPerBorBooklnfo:得到个人借阅信息 UpUserAdd:增加用户 UpUserDelete:删除用户 UpUserUpdate:更新用户信息 回 A2 、、 IS 5.0 \ 前端服务器 2000防火墙 NET l I Web Forms I ASP, / 画sQ 曙 ISA Server l ADO’ NETfor I DalaAccess I NET框架 / 数据层 2.3表示层 Web服务器和应用服务嚣 使用ASP.ET Web NForm结合用户控件写的。由于使用 Visual Studio.ET创建该站点,因此使用Code-Nbehind的方 图4图书资料管理系统逻辑体系结构 2.1应用逻辑层 Library.ET中间层应用逻辑封装到单个.NET集合内。N 名为Library.Components的命名空间。包括以下几个类: (1)Database.CS:这是在中间层中封装了的一个类,专 门处理调用数据库的存储过程;数据库的连接信息在web. config中设定。 (2)Error.CS:处理出错信息类; (3)User.CS:用户类; (4)Adminstrator.CS:系统管理员类,继承用户类; (5)UsrDeteails.CS:用户详细信息类; (6)BorrorlnfoDetails.CS:借阅详细信息类。 最后,用一个XML Web Service对类进行封装,通过指 定该类的某些成员函数是服务的接口,来暴露给XML Web 式,在此每个.spx页面的代码封装在一个单独的文件内。a 而且调用XML Web Servie提供的服务,完成页面的功能。c 将封装的XML Web Servie添加到当前的应用程序中,并在 ccode-behind中将其实例化: localhost.Servicel WS=new loealho ̄t.Servieel(); 调用Web Service提供的方法,例如: DataGrid I DataSource=ws.Userlnfomation(userid); //丰艮据用户id号得到用户信息 从这里可以看出,页面中投有出现和数据库交互的代 码,很好地把数据操作封装起来。而且通过调用Web service 提供的方法,就能完成既定的功能。 3结束语 Web应用是当今分布式应用最广泛的应用形式。基于 NET的3层结构在Web中的应用显著提高了应用程序的跨平 台性和互操作性,增强了系统的灵活性、开放性。作为一项 新兴技术,不久的将来必定得到广泛的应用。 参考文献 Service的请求者,从而完成请求者所需的用户管理的某些 功能。Web Service ̄l下: using System; using System.Web.Services; 1陈英学.ASP.NET深入编程【M】.北京:北京希望电子出版社2.001 2王超,张鹏.ASP/XML深入编程技术【M】.北京:北京希望电子出版 社.2001 namespace Library f //完成图书资料管理系统中用户管理功能。 public class Servicel:System Web.Services.WebService f public Service10 f 3曾宇,张海盛.基于CORBAtlf件技术的三层数据库访问【J1.计算机 应用,2001,21(5) l75一 _1『 

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- haog.cn 版权所有 赣ICP备2024042798号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务