




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、几种常见架构模式本文转自:http:/www.51test in n-viewspace-itemid-218882在实践中,人们总结出了一些常用的软件系统结构高层模式,以供应用系统设计时参考。这些模式包括:单服务两层/多层C/S ; MVC结构;面向服务的SOA与多服务集合;数据交换总线等。1. 单机应用系统(Standalone)准确地讲,单机应用系统是最简单的软件结构,是指运行在一台物理机器上的独立应用程序。当然,该应用可以 是多进程或多线程的。在信息系统普及之前的时代,大多数软件系统其实都是单机应用系统。这并不意味着它们简单,实际情况是,这 样的系统有时更加复杂。这是因为软件技术最初普
2、及时,多数行业只是将软件技术当做辅助手段来解决自己专业 领域的问题,其中大多都是较深入的数学问题或图形图像处理算法的实现。有些系统非常庞大:笔者早年曾经参与的一个大型纯软件系统开发,多达160万行程序!要知道,这些程序当时可都是一行行写出来的。这应该算是一个超大型的软件系统了,共有十多个子系统集成在一个图形界面上执行, 并可在多行UNIX/DOS平台下运行,其中很多算法的复杂困难程度,可以说,如果讲给今天这些所谓的架构高 手与计算机高手听,他们会感觉如听 天书”一般深奥;有些系统则算法非常复杂:我的一个同学,在他们专业领 域内编制的软件程序,在当时最高级的专业 工作站上(应该要比今天的最快的微
3、机性能还好些),一敲回车键运 行,就往往要等待一个星期的时间才能得到结果。而这些软件系统,从今天的软件架构上来讲,却很简单,是标准的单机系统。即便是今天,复杂的单机系统也有很多,它们大多都是专业领域的产品,如 CAD/CAM领域的CATIA、ProEngineer,Autodesk的AutoCAD,还 有我们熟悉的Photoshop、CoralDraw,等等(这些系统的高级版本可能提供了一些网络化的功能,但改变不了 其单机系统的实质)。所以这里笔者要说的是,软件架构复杂并不代表软件系统复杂,其实,软件架构设计较为重要的领域只有一个, 那就是信息系统领域,即以数据处理(数据存储,传输,安全,查询
4、,展示等)为核心的软件系统。其他行业的软件应用对该概念其实并不是那么强调。所以,读者应该明白,后面几节介绍的所谓流行软件架构,都是指在信息系统的领域内。2. 客户机/服务器(Client/Server)结构客户机/服务器结构是软件系统中最常见的一种。 笔者认为该概念应该来源于基于 TCP/IP协议的进程间通信IPC 编程的 发送”与反射”程序结构,即Client方向Server方发送一个TCP或UDP包,然后Server方根据接收到 的请求向Client方回送TCP或UDP数据包(这里是指建立 TCP/IP连接以后的应用程序逻辑,不涉及如 TCP 建立连接的三方握手过程),IPC编程的客户端/
5、服务器概念图如图6-2所示。1客户端:socketcoimcct >< 丿服务器<socket, bind, listen, accpei 丨v丿VA叮反射图6; IPC編程的客户端/服务器概念1诚然,上述IPC编程中的客户与服务,在过去只是一个再普通、传统不过的标准程序结构与编程方法,不会有人 将其提高到软件架构的高度。但其实,现代流行的各种C/S架构,其本质却正是如此:即 TCP/IP IPC编程中的客户机/服务器。目前为止,还没有任何一种客户机/服务器架构的软件超出了这个范围。所以,准确地讲,现代各种客户机/服务器模式的软件架构实际上是对IPC编程中客户/服务程序结构更
6、加产品化 与成熟化的结果。让我们来看看几种常见的客户机/服务器的软件结构。两层C/S两层C/S,其实完全是IPC客户端/服务器结构的应用系统体现。两层 C/S其实就是人们所说的 胖客户端”模式。在实际的系统设计中,该类结构主要是指前台客户端 +后台数据库管理系统,如图6-3所示。在两层C/S结构中,图6-3前台界面+后台数据库服务的模式最为典型,前文所说的很多数据库前端开发工具(如PowerBuilder、Delphi、VB)等都是用来专门制作这种结构的软件系统的。有人也许要问,上述典型的两层C/S模式应该没有你所说的TCP/IP通信呀?怎么你前面讲所有的 C/S模式都脱 离不了这个范围呢?其
7、实,每一种数据库都提供了其专用的访问API或通用的ODBC/JDBC接口,如果这个数据库的开发支持从不同的机器上以网络方式连接,则笔者相信其在客户端与数据库后台的通信大多情况下是TCP/IP的客户机/服务器模式!如果这个数据库不支持网络连接方式 (如以前基于FoxBase的开发,或现在基于 MS Access的开发),则我们不能称这个软件是 C/S模式。另外,如图6-3所示,两层C/S实际上是将前台界面与相关的业务逻辑处理服务的内容集成在一个可运行单元中 了。图&3典型的两层客户机/服务器软件结构丨I三层C/S结构与B/S三层C/S结构如图6-4(a)所示,其前台界面送往后台的请求中,
8、 除了数据库存取操作以外,还有很多其他业务逻 辑需要处理。三层C/S的前台界面与后台服务之间必须通过一种协议(自开发或采用标准协议)来通信(包括请 求、回复、远程函数调用等),通常包括以下几种:(1)基于TCP/IP协议,直接在底层socket api基础上自行开发。这样做一般只适合需求与功能简单的小型系 统;(2)首先建立自定义的消息机制(封装 TCP/IP与socket编程),然后前台与后台之间的通信通过该消息机制 来开发。消息机制可以基于 XML,也可以基于字节流(Stream )定义。虽然是自开发,但可以基于此构建大型 分布式系统;(3)基于RPC编程;(4)基于 CORBA/IIOP
9、 协议;(5)基于 Java RMI ;(6)基于 J2EE JMS ;(7) 基于HTTP协议。如浏览器与 Web服务器之间的交流便是如此。需要指出的是,HTTP不是面向对象的, 所以面向对象的应用数据会被首先平面化后进行传输。目前最典型的基于三层C/S结构的应用模式便是我们最熟悉、较流行的B/S ( Brower/Server,浏览器/服务器)模式,如图6-4 (b)所示。W品浏览器J 丿Wwb服务器J八丿数据冲(b)图&4 三层C/S与B/S软件结构图6-4 (b )的B/S结构中,Web浏览器是一个用于文档检索和显示的客户应用程序,并通过超文本传输协议HTTP(HyperTex
10、t Transfer Protocol )与Web服务器相连。该模式下,通用的、低成本的浏览器节省了两层结构的C/S模式客户端软件的开发和维护费用。这些浏览器大家都很熟悉,包括MS In ternet Explorer、Mozilla FireFox、 NetScape 等。Web服务器是指驻留于因特网上某种类型计算机的程序。当Web浏览器(客户端)连到服务器上并请求文件或数据时,服务器将处理该请求并将文件或数据发送到该浏览器上,附带的信息会告诉浏览器如何查看该文件(即 文件类型)。服务器使用HTTP (超文本传输协议)进行信息交流,这就是人们常把它们称为HTTPD服务器的原因。我们每天都在W
11、eb浏览器上进行各种操作,这些操作中绝大多数其实都是在 Web服务器上执行的,Web浏览 器只是将我们的请求以HTTP协议格式发送到 Web服务器端或将返回的查询结果显示而已。当然,驻留 Web 浏览器与服务器的硬件设备可以是位于 Web网络上的两台相距千里的计算机。应该清楚,B/S模式的浏览器与 Web服务器之间的通信仍然是TCP/IP,只是将协议格式在应用层标准化了而已。 实际上B/S是采用了通用客户端界面的三层 C/S结构。多层c/s多层C/S结构一般是指三层以上的结构,在实践中主要是三层与四层,四层即前台界面(如浏览器)、Web服务器、中间件(或应用服务器)及数据库服务器,典型的客户机
12、/服务器软件结构如图6-5所示。丽台Webl 务/|中间件/界面N/器7V应用层数据库图6-5典型多层客户机/服务翠软件结构多层客户机/服务器模式主要用于较有规模的企业信息系统建设,其中中间件一层主要完成以下几个方面的工作:(1) 提高系统可伸缩性,增加并发性能。在大量并发访问发生的情况下,Web服务器可处理的并发请求数可以 在中间件一层得到更进一步的扩展,从而提高系统整体并发连接数;(2)中间件/应用层一层专门完成请求转发或一些与应用逻辑相关的处理,具有这一作用的中间件一般可以作为请求代理,也可作为应用服务器。中间件的这种作用在 J2EE的多层结构中比较常用,如 BEA WebLogic、I
13、BM WebSphere等提供的EJB容器,就是专门用以处理复杂企业逻辑的中间件技术组成部分。(3) 增加数据安全性。在网络结构设计中,Web服务器一般都处于非军事区,即直接可以被前端用户访问到,如果是一些在公网上提供服务的应用,则Web服务器一般都可以被所有能访问与联网的用户直接访问。因此,如果在软件结构设计上从 Web服务器就可以直接访问企业数据库是不安全的。因此,中间件的存在,可以隔离 Web服务器对企业数据库的访问请求:Web服务器将请求先发给中间件,然后由中间件完成数据库访问处理后返回。 MVCMVC的概念在目前信息系统设计非常流行,严格来讲,MVC( Model-View-Cont
14、roller )实际上是上述多层 C/S结构的一种常用的标准化模式,或者可以说是从另一个角度去抽象这种多层C/S结构。在J2EE架构中,View表示层指浏览器层,用于图形化展示请求结果;Controller控制器指Web服务器层,Model 模型层指应用逻辑实现及数据持久化的部分。目前流行的J2EE开发框架,如JSF、Struts、Spring、Hibernate等及它们之间的组合,女口 Struts+Spring+Hibernate (SSH)、JSP+Spring+Hibernate 等都是面向 MVC 架构的; 另外,PHP、Perl、MFC等语言都有MVC的实现模式。在以前传统JSP程
15、序中网页与数据访问是混合在一起的,在 MVC中强制要求表示层(视图)与数据层(模型)代码分开,而控制器(如Servlet)则可以用来连接不同的模型和视图去完成用户的需求。从分层体系的角度来讲,MVC的层次结构如图6-6所示,控制器与视图通常处于 Web服务器一层,而根据 模型有没有将业务逻辑处理分离成单独服务处理,MVC可以分为三层或四层体系。Web浏览器丿HTTPlidiiHTTP涓求数抑;或业务处理诘求r A3 视图 (view)<_丿控制器(Controller)y处理结衆返回厂模愛(ModvJ)或业J务逻轲丿数据库 ?服务器图MVC架构的分层体系对分层标准的探讨以上所讲各种C/S
16、结构,包括两层、三层、四层甚至多层的概念,在 IT界目前非常流行,绝大多数的信息处理 系统与门户网站,都会将自己应用的结构宣传为多少多少层 C/S架构。但究竟应该是属于多少层,两层还是三层? 目前的实际状况是比较混乱的。例如上面所说B/S结构,有人说是三层,也有不少人说是两层,各有道理;又比如MVC,有人说是四层,又有人说是三层,同时在很多宣传中它确实被归结到J2EE宣传的四层架构中;另外,还有许多应用系统在某一层采用主从模式的集群服务器结构,有时也会使分层的概念混淆。本书在这里给出一个分层问题的判断标准,即应该将应用系统的分层与服务分级区别开来。即某个应用架构到底 分多少层,应该由其纵向深度
17、上有多少个不同种类的(服务器集群显然排除在外)、两两相互通信的独立运行单 元组成来决定;而服务分级应该由其纵向深度上以其由多少个不同类型的服务实例以两两双向通信的模式组成? 也就是说,一共由多少对简单客户机/服务器组成。于是,B/S应该是三层架构,但是由两级不同类型的服务组成:Web服务与数据库服务;而四层架构则通常应该是由三级服务组成的。还有,在有些 J2EE框架(如JSF+Spring+Hibernate ),除了 Web服务器与浏览器的通 信以外,再没有其他的分布式应用了(没有用到EJB,RMI或JMS ),而有些人将HibernateDAO等的数据持久化层单独算做一层,称之为四层,这也
18、是不妥当的,因为数据持久化层与数据层毕竟不是一组客户机/服务器的关系,因此,统一算做数据层,所以应该还是归为三层架构;前面所说 服务”的概念,无论在 Windows平台还是UNIX平台,都应该是很清楚的:服务是主机提供的功能, 它以被动等待信号或定期启动的方式来实现。在 UNIX-LIKE的系统中,服务一般是由Daemon来实现的。而这里需要指出的是,上面所说的 服务”与6.223节要讲的 多服务结构SOA中提出的服务”涵义是不同的:多 层结构的软件系统,无论其本身由多少层级的服务组成,对外都是一个完整的单点应用系统,对应SOA中的一个服务”3. 多服务结构(SOA)以上所讲,无论多少层的C/
19、S软件结构,对外来讲,都只是一个单结点应用(无论它由多个不同层的服务”相互配合来完成其功能),具体表现为一个门户网站、一个应用系统等。下面我们讲多个单点应用相互通信的多服务 结构。多服务结构如果两个多层C/S结构的应用系统之间需要相互进行通信,那么,就产生了多服务结构,称为Service OrientedArchitecture。如图 6-7 所示:<多层c/s C应用1二消息消息二多层C/S地应用2V *图&7多服务结构示意图在SOA的概念中,将由多层服务组成的一个结点应用看作是一个单一的服务。在SOA的定义里,对服务”的概念进行的广义化,即它不是指计算机层面的一个Daemon
20、,而是指向外提供一组整体功能的独立应用系统。所谓独立应用系统是指:无论该应用系统由多少层服务组成,去掉任何一层,它都将不能正常工作,对外可以是一个 提供完整功能的独立应用。这个特征便可以将多服务体系与多层单服务体系完全区分开来。两个应用之间一般通过消息来进行通信,可以互相调用对方的内部服务、模块或数据交换、驱动交易,等等。在 实践中,通常借助中间件来实现 SOA的需求,如消息中间件、交易中间件,等等。多服务结构可以在实践中又可以具体分为异构系统集成、同构系统聚合、联邦体系结构等,在下面我们对此会作一介绍。Web Service多服务结构体现在 Web应用之间,就成为了 Web Service,即两个互联网应用(如门户网站)之间可以相互向 对方开放一些内部服务”(可以理解为功能模块、函数、过程等)。现阶段,一个 Web应用对外开放其内部服务 的协议主要是SOAP与WSDL,其资料很多,本书不对其做详细介绍。Web Service是多服务体系结构的一个最典型、最流行的应用模式,但除了其由 Web应用为主而组成的特点以 外,Web Service最主要的应用是一个Web应用向外提供内部服务,而不像传统意义上SOA那样有更加丰富的 应用类型。多服务结构的实质多服务结构的实质是
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 东北绿地苗圃管理办法
- 七年级生物下册 第四单元 生物圈中的人 第八章 人是生殖和发育 第二节 人的生长发育和青春期说课稿(4)(新版)苏教版
- 个人广告采购管理办法
- 2025年贵州省专业技术人员公需科目考试题及答案
- 全国河大音像版初中信息技术七年级下册第二章第七节《综合实践活动-学生周末时间分配调查表》说课稿
- 详细规划编制管理办法
- 2025年中西医结合临床技能操作指南与模拟题集
- 心内一科2025年上半年VTE理论考试试卷及答案
- 中农脱毒种苗管理办法
- 2025年二级建造师市政面试题库与答案解析
- 年产8万吨DN900-DN1600mm球墨铸管项目可行性研究报告
- 商家智能体产品手册和操作指南
- 幼儿园手工介绍课件
- 调试工上岗证考试题库及答案
- 电力营销考试题库及答案
- 监察法专题培训课件
- 人证网约车考试题目及答案
- 人教版五年级数学上册第三单元小数除法教学设计(表格式)和单元测试题
- 2025年湖南省中考地理试题(解析版)
- 宗教法律法规课件
- 肿瘤内科教学课件
评论
0/150
提交评论