13.6其他架构评估方法-中间件
中间件
在一个分布式系统环境中处于操作系统和应用程序之间的软件,可以在不同的技术之间共享资源,将不同的操作系统、数据库、异构的网络环境以及若干应用结合成一个有机的协同工作整体。
中间件位于客户机/服务器的操作系统之上,管理计算机资源和网络通信,有如下特点:
中间件是一类软件,而非一种软件。
中间件不仅仅实现互连,还要实现应用之间的互操作。
中间件是基于分布式处理的软件,最突出的特点是其网络通信功能。
中间件的任务是使应用程序开发变得更容易,通过提供统一的程序抽象,隐藏异构系统和分布式系统下低级别编程的复杂度。
主要的中间件有五类
数据库访问中间件
通过一个抽象层访问数据库,从而允许使用相同或相似的代码访问不同的数据库资源。典型的技术如 Windows 平台的 ODBC 和 Java 平台的 JDBC 等。
远程过程调用(RPC)
是一种广泛使用的分布式应用程序处理方法。一个应用程序使用 RPC 来“远程”执行一个位于不同地址空间内的过程,从效果上看和执行本地调用相同。
面向消息中间件(MOM)
利用高效可靠的消息传递机制进行平台无关的数据交流,并可基于数据通信进行分布系统的集成。通过提供消息传递和消息排队模型,可在分布环境下扩展进程间的通信,并支持多种通信协议、语言、应用程序、硬件和软件平台。典型的产品如 IBM 的 MaSeries。
分布式对象中间件
随着对象技术与分布式计算技术的发展,两者相互结合形成了分布式对象技术,并发展成为当今软件技术的主流方向。典型的产品如 Sun 的 RMI/EJB、Microsoft 的 DCOM 等。OMG 的 CORBA。
事务中间件
也称事务处理监控器(TPM)最早出现在大型机上。事务处理监控程序位于客户和服务器之间,完成事务管理与协调、负载平衡、失效恢复等任务,提高系统的整体性能。
J2EE核心技术
J2EE体系结构
J2EE 平台采用了多层分布式应用程序模型,实现不同逻辑功能的应用程序被封装到不同的构件中,处于不同层次的构件被分别部署到不同的机器中。四层结构:
客户层组件
J2EE应用程序可以是基于web方式的也可以是基于传统方式的静态的HTML(标准通用标记语言下的一个应用)页面和Applets是客户层组件
Web 层组件
J2EEweb层组件可以是JSP 页面或Servlet.
业务层组件
业务层代码的逻辑用来满足特定领域的业务逻辑处理。
信息系统层
企业信息系统层处理企业信息系统软件包括企业基础建设系统例如企业资源计划(ERP),大型机事务处理,数据库系统,和其它的遗留信息系统。例如,J2EE应用组件可能为了数据库连接需要访问企业信息系统。
典型应用架构
JSP+Servlet+JavaBean+DAO
JSP:用于显示、收集数据的部分。作为MVC中的视图V。
Servet:作为业务逻辑层,用于处理复杂的业务逻辑,如验证数据、实例化IavaBean、调用DAO连接数据库等。作为MVC中的控制器c。在其中会调用Service方法处理服务。
JavaBean:用于数据的封装,方便将查询结果在servlet与jsp页面之间进行传递等。
DAO:用于连接数据库及进行数据库的操作如:查询、删除、更改等。DA0与JavaBean合在一起为MVC中的模型M。
基本流程:JSP发一个数据到servlet,servlet收到后做下解析再根据数据调用相应的service去服务,service如果有要调用数据库就通过DA0跟数据库交互,使用iavaBean完成封装,返回结果给servlet,servlet再返回给JSP。
重量级与轻量级之争
- 重量级框架占用资源过多,在开发的过程中效率很低;大部分时间花在配置、运行的过程上修改复杂;单元测试也比较麻烦。但在大量运行过程中会表现出优异的效果,也即开发麻烦,运行性能高。
- 轻量级框架提高了开发的速度;立即可以看到结果;做单元测试非常简单;大量线程可供参考的开源代码。开发简单,但运行性能低。
.NET平台
.NET框架处于操作系统和.NET应用语言之间,只适用于微软系统,而 J2EE 支持跨平台,任何安装了 JVM 的平台。
.NET的体系结构
CLR的体系结构
.NET公共语言运行库与类库、应用程序及整个系统之间关系示意图
.NET和J2EE之争
- JVM(将所有 JAVA 代码都编译为字节码,由 JVM 解释执行)和 CLR(.NET 核心技术,类似于IM生成中间代码 CLR,编译执行)
- 对多层分布式应用的支持:二者都支持多层分布式应用程序的开发:在表示层的平台支持上J2EE 客户端支持多个平台,.NET 只能在微软系统上运行,也正是因此,NET 会对微软系统上的应用进行优化;在业务层,J2EE 占优势,因为有许多开源的项目和代码供参考,开发就变得单:在数据层,二者都支持多种数据库,都非常优秀。
- 安全性:由于 JAVA 在 .NET 之后出来,借鉴了 .NET 优点,JAVA 在运行时动态验证,.NET 是静态全面验证,二者都非常优秀,不分上下。
- 应用程序的部署:J2EE 的部署相对来说较复杂,针对不同的系统要特别布置。
- 可移植性:显然 J2EE 占优势,一次开发,到处运行。
- 外部支持:J2EE 占优势,得到了很多厂家的支持,.NET只是微软一家。
转载请注明来源,欢迎大家进行交流讨论。还可通过邮箱联系:youngdream365##qq.com (##替换为@)。