MVC的观点在目前信息系统设计非常盛行,严格来讲,MVC(Model-View-Controller)实际上是上述多层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程序中网页与数据访问是稠浊在一起的,在MVC中逼迫哀求表示层(视图)与数据层(模型)代码分开,而掌握器(如Servlet)则可以用来连接不同的模型和视图去完成用户的需求。

从分层体系的角度来讲,MVC的层次构造如图6-6所示,掌握器与视图常日处于Web做事器一层,而根据“模型“有没有将业务逻辑处理分离成单独做事处理,MVC可以分为三层或四层体系。
● 对分层标准的磋商
以上所讲各种C/S构造,包括两层、三层、四层乃至多层的观点,在IT界目前非常盛行,绝大多数的信息处理系统与门户网站,都会将自己运用的构造宣扬为多少多少层C/S架构。但究竟该当是属于多少层,两层还是三层?目前的实际状况是比较混乱的。
例如上面所说B/S构造,有人说是三层,也有不少人说是两层,各有道理;又比如MVC,有人说是四层,又有人说是三层,同时在很多宣扬中它确实被归结到J2EE宣扬的四层架构中;其余,还有许多运用系统在某一层采取主从模式的集群做事器构造,有时也会使分层的观点稠浊。
本文在这里给出一个分层问题的判断标准,即该当将运用系统的分层与做事分级差异开来。即某个运用架构到底分多少层,该当由其纵向深度上有多少个不同种类的(做事器集群显然打消在外)、两两相互通信的独立运行单元组成来决定;而做事分级该当由其纵向深度上以其由多少个不同类型的做事实例以两两双向通信的模式组成?也便是说,一共由多少对大略客户机/做事器组成。
于是,B/S该当是三层架构,但是由两级不同类型的做事组成:Web做事与数据库做事;而四层架构则常日该当是由三级做事组成的。还有,在有些J2EE框架(如JSF+Spring+Hibernate),除了Web做事器与浏览器的通信以外,再没有其他的分布式运用了(没有用到EJB,RMI或JMS),而有些人将HibernateDAO等的数据持久化层单独举措看成一层,称之为四层,这也是欠妥当的,由于数据持久化层与数据层毕竟不是一组客户机/做事器的关系,因此,统一举措看成数据层,以是该当还是归为三层架构;
前面所说“做事”的观点,无论在Windows平台还是UNIX平台,都该当是很清楚的:做事是主机供应的功能,它以被动等待旗子暗记或定期启动的办法来实现。在UNIX-LIKE的系统中,做事一样平常是由Daemon来实现的。
而这里须要指出的是,上面所说的“做事”与6.2.2.3节要讲的“多做事构造SOA”中提出的“做事”涵义是不同的:多层构造的软件系统,无论其本身由多少层级的做事组成,对外都是一个完全的单点运用系统,对应SOA中的一个“做事”。
3. 多做事构造(SOA)
以上所讲,无论多少层的C/S软件构造,对外来讲,都只是一个单结点运用(无论它由多个不同层的“做事”相互合营来完成其功能),详细表现为一个门户网站、一个运用系统等。下面我们讲多个单点运用相互通信的多做事构造。
● 多做事构造
如果两个多层C/S构造的运用系统之间须要相互进行通信,那么,就产生了多做事构造,称为Service Oriented Architecture。如图所示:
在SOA的观点中,将由多层做事组成的一个结点运用看作是一个单一的做事。在SOA的定义里,对“做事”的观点进行的广义化,即它不是指打算机层面的一个Daemon,而是指向外供应一组整体功能的独立运用系统。所谓独立运用系统是指:无论该运用系统由多少层做事组成,去掉任何一层,它都将不能正常事情,对外可以是一个供应完全功能的独立运用。这个特色便可以将多做事体系与多层单做事体系完备区分开来。
两个运用之间一样平常通过来进行通信,可以相互调用对方的内部做事、模块或数据交流、驱动交易,等等。在实践中,常日借助中间件来实现SOA的需求,如中间件、交易中间件,等等。
多做事构造可以在实践中又可以详细分为异构系统集成、同构系统聚合、联邦体系构造等,不才面我们对此会作一先容。
● Web Service
多做事构造表示在Web运用之间,就成为了Web Service,即两个互联网运用(如门户网站)之间可以相互向对方开放一些内部“做事”(可以理解为功能模块、函数、过程等)。现阶段,一个Web运用对外开放其内部做事的协议紧张是SOAP与WSDL,其资料很多,本书不对其做详细先容。
Web Service是多做事体系构造的一个最范例、最盛行的运用模式,但除了其由Web运用为主而组成的特点以外,Web Service最紧张的运用是一个Web运用向外供应内部做事,而不像传统意义上SOA那样有更加丰富的运用类型。
● 多做事构造的本色
多做事构造的本色是机制或远程过程调用(RPC)。虽然其详细的实现底层并不一定是采取了我们所熟习的RPC编程技能,但两个运用之间的相互合营确实是通过某种预定义的协议来调用对方的“过程”实现的,这与我们6.2.2.2节所讲多层架构的单点运用系统中,两个处于不同层的运行实例相互之间通信的协议类型基本是相同的。
4. 企业数据交流总线
实践中,还有一种较常用的架构,即企业数据交流总线,即不同的企业运用之间进行信息交流的公共通道,如图所示:
这种架构在大型企业不同运用系统进行信息交流时利用较普遍,在海内,紧张发生在银行或电信等信息化程度较高的行业。其他的许多行业虽然也有类似的需求,但大多都是手工或半自动化来实现该项需求的,并没有达到“企业数据交流总线”的层次。
关于数据总线本身,其本色该当是一个可称之为连接器的软件系统(Connector),它可以基于中间件(如中间件或交易中间件)构建,也可以基于CORBA/IIOP协议开拓,紧张功能是按照预定义的配置或头定义,进行数据(data)、要求(request)或回答(response)的吸收与分发。
从理论上来讲,企业数据交流总线可以同时具有实时交易与大数据量传输的功能,但在实践中,成熟的企业数据交流总线紧张是为实时交易而设计的,而对可靠的大数据量传输需求每每要单独设计。如果采取CORBA为通信协议,交流总线便是工具要求代理(ORB),也有一些资料中将这种架构称为“代理体系”。其余,在交流总线上挂接的软件系统,有些也可以实现代理的功能,各代理之间可以并行或串行的办法进行事情,通过挂接在同一交流总线上的掌握器来折衷各代理之间的活动。