1.单机应用模式(Standalone)
单机应用系统是最简单的软件结构,是指运行在一台物理机器上的独立应用程序。这些软件系统,从今天的软件架构上来讲,是很简单,是标准的单机系统。当然至今,这种复杂的单机系统也有很多,它们大多都是专业领域的产品,如CAD/CAM领域的CATIA、Pro/Engineer,Autodesk的AutoCAD,还有熟悉的Photoshop、Coreldraw,等等。
2.客户机/服务器(Client/Server)模式
客户机/服务器模式是信息系统中最常见的一种。C/S概念可理解为基于TCP/IP协议的进程间通信IPC编程的“发送”与“反射”程序结构,即Client方向Server方发送一个TCP或UDP数据包,然后Server方根据接收到的请求向Client方回送TCP或UDP数据包,目前C/S架构非常流行下面四种常见的客户机/服务器的架构。
2.1两层C/S
两层C/S,其实质就是IPC客户端/服务端结构的应用系统体现。两层C/S结构通俗地说就是人们常说的“胖客户端”模式。在实际的系统设计中,该类结构主要是指前台客户端+后台数据库管理系统,如图1所示。
图1 典型的两层客户机/服务器架构
在两层C/S结构中,图1前台界面+后台数据库服务的模式最为典型,传统的很多数据库前端开发工具(如Power Builder、Delphi、VB)等都是用来专门制作这种结构的软件工具。两层C/S结构实际上就是将前台界面与相关的业务逻辑处理服务的内容集成在一个可运行单元中了。
2.2三层C/S与B/S结构
三层C/S结构如图2(a)所示,其前台界面送往后台的请求中,处理数据库存取操作意外,还有很多其他业务逻辑需要处理。三层C/S的前台界面与后台服务之间必须通过一种协议(自开放或采用标准协议)来通信(包括请求、回复、远程函数调用等),通常包括以下7种:
(1)基于TCP/IP协议,直接在底层Socket API基础上自行开发。这样做一般只适合需求与功能简单的小型系统。
(2)首先建立自定义的消息机制(封装TCP/IP与Socket编程),然后前台与后台之间的通信通过该消息机制来实现。消息机制可以基于XML,也可以基于字节流(Stream)定义。虽然是属于自定义通信,但是,它可以基于此构件大型分布式系统。
(3)基于PRC编程。
(4)基于CORBA/IIOP协议。
(5)基于JAVA RMI。
(6)基于J2EE JMS。
(7)基于HTTP协议。比如浏览器与Web服务器之间的信息交换。这里需要指出的是HTTP不是面向对象的结构,面向对象的应用数据会被首先平面化后进行传输。
目前最典型的基于三层C/S结构的应用模式便是我们最熟悉、较流行的B/S(Browser/Server,浏览器/服务器)模式,如图2(b)所示。
图2 三层C/S与B/S架构
图2(b)的B/S结构中,Web浏览器是一个用于文档检索和显示的客户应用程序,并通过超文本传输协议HTTP(Hyper Text Transfer Protocol)与Web服务器相连。该模式下,通用的、低成本的浏览器节省了两层结构C/S模式客户端软件的开发和维护费用。这些浏览器大家都很熟悉,包括MS Ineternet Explorer、Mozilla FireFox、NetScape等。
Web服务器是指驻留与因特网上某种类型计算机的程序。当Web浏览器(客户端)连到服务器上并请求文件或数据时,服务器将处理该请求并将文件或数据发送到该浏览器上,附带的信息会告诉浏览器如何查看该文件(即文件类型)。服务器使用HTTP进行信息交流,可称为HTTP服务器。
应该强调的是B/S模式的浏览器与Web服务器之间的通信仍然是TCP/IP,只是将协议格式在应用层进行了标准化。实际上B/S是采用了通用客户端界面的三层C/S结构。
2.3多层C/S结构
多层C/S结构一般是指三层以上的结构,在实践中主要是三层与四层,四层即前台界面(如浏览器)、Web服务器、中间件(或应用服务器)及数据库服务器,典型的客户机/服务器软件结构如图3所示。
图3 典型多层客户机/服务器架构
多层客户机/服务器模式主要用于较有规模的企业信息系统建设,其中中间件一层主要完成以下几个方面的工作:
(1)提高系统可伸缩性,增加并发性能。在大量并发访问发生的情况下,Web服务器可处理的并发请求数可以在中间件一层得到更进一步的扩展,从而提高系统整体并发连接数。
(2)中间件/应用层这一层专门完成请求转发或一些与应用逻辑相关的处理,具有这种作用的中间件一般可以作为请求代理,也可作为应用服务器。中间件的这种作用在J2EE的多层结构中比较常用,如BEA WebLogic、IBM WebSphere等提供的EJB容器,就是专门用以处理复杂企业逻辑的中间件技术组成部分。
(3)增加数据安全性。在网络结构设计中,Web服务器一般都采用开放式结构,即直接可以被前端用户访问,如果是一些在公网上提供服务的应用,则Web服务器一般都可以被所有能访问与联网的用户直接访问。因此,如果在软件结构设计上从Web服务器一般就可以直接访问企业数据库是不安全的,因此,中间件的存在,可以隔离Web服务器就可以直接访问请求:Web服务器将请求先发给中间件,然后由中间件完成数据库访问处理后返回。
2.4MVC
MVC(Model-View-Controller)的概念在目前信息系统设计中非常流行,严格来讲,MVC实际上是上述多层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的实现模式。
MVC主要是要求表示层(视图)与数据层(模型)的代码分开,而控制器则可以用于连接不同的模型和视图来完成用户的需求。从分层体系的角度来讲,MVC的层此结构如图4所示,控制器与视图通常处于Web服务器一层,而根据“模型”有没有将业务逻辑处理分离策划功能单独服务处理,MVC可以分为三层或四层体系。
图4 MVC架构的分层体系