跳到主要内容

中间件技术

概述

在一个分布式系统环境中处于操作系统和应用程序之间的软件,可以在 不同的技术之间共享资源,将不同的操作系统、数据库、异构的网络环境以及若干应用 结合成一个有机的协同工作整体。

  • 中间件一般都是应用在分布式系统。

中间件位于 客户机/服务器的操作系统之上,管理计算机资源和网络通信,有如下特点

  • 中间件是 一类软件,而非一种软件。
  • 中间件不仅仅实现互联,还要实现应用之间的互操作
  • 中间件是 基于分布式处理的软件最突出的特点是其网络通信功能

中间件的任务是 使应用程序开发变得更加容易,通过提供统一的程序抽象,隐藏异构系统和分布式系统下低级别编程的复杂度。

中间件分类

数据库访问中间件

通过一个抽象层访问数据库,从而 允许使用相同或相似的代码访问不同的数据库资源。典型的技术如 Windows 平台的 ODBC 和 Java 平台的 JDBC 等

过程远程调用 RPC

是一种广泛使用的 分布式应用程序处理方法。一个应用程序 使用 RPC 来“远程”执行一个位于不同地址空间内的过程,从效果上看和执行本地调用相同。

面向消息的中间件(MOM)

利用高效可靠的消息传递机制进行平台无关的数据交流,并可基于数据通信进行分布式系统的集成。通过提供消息传递和消息排队模型,可在 分布式环境下扩展进程间的通信,并 支持多种通信协议、语言、应用程序、硬件和软件平台。典型的产品如 IBM 的 MQ Series

分布式对象中间件

随着 对象技术和分布式计算技术的发展,两者相互结合形成了分布式对象技术,并发展成为当前软件技术的主流方向。典型的产品如 OMG 的 CORBA、Sun 的 RMI/EJB、Microsoft 的 DCOM 等

事务中间件

也称事务处理监控器(TPM),最早出现在大型机上。事务处理监控程序 位于客户和服务器之间,完成事务管理与协调、负载均衡、失效恢复等任务,提高系统的整体性能。

J2EE核心技术

J2EE 平台采用了 多层分布式应用程序模型,实现不同逻辑功能的应用程序被封装到不同的构件中,处于不同层次的构件分别被部署到不同的机器中

  • 客户端组件:J2EE应用程序可以是基于 web 方法的,也可以是基于传统方式的静态的 HTML (标准通用标记语言下的一个应用)页面和 Applets 是客户端组件。
  • web层组件:J2EE web层组件可以是 JSP 页面或 Servlet。
  • 业务层组件:业务层代码的逻辑用来满足特定领域的业务逻辑处理。
  • 信息系统层:企业信息系统层处理企业信息系统如啊年包括企业基础建设系统。例如企业资源计划 ERP,大型机事务处理,数据库系统,和其它的遗留信息系统。例如,J2EE 应用组件可能为了数据库连接需要访问企业信息系统。

JSP+Servlet+JavaBean+DAO

  • JSP : 用于显示、收集数据的部分。作为 MVC 中的视图 V

  • Servlet: 作为业务逻辑层,用于处理复杂的业务逻辑,如验证数据、实例化JavaBean、调用 DAO 连接数据库等。作为 MVC 中的控制器 C。在其中会调用 Service 方法处理服务。

  • JavaBean: 用于数据的封装,方便将查询结果在 servlet 与 jsp 页面之间进行传递。

  • DAO:用于连接数据库及进行数据库的操作如:增删改查。DAO与JavaBean合在一起作为MVC中的模型M

  • 基本流程,JSP发一个数据到Servlet,servlet接收到后做解析再根据数据调用相应的 service 服务。service 如果有调用数据库就通过 DAO 跟数据库交互,使用 JavaBean 完成封装,返回结果给 servlet servlet 再返回给 JSP。

重量级与轻量级之争

  • 重量级框架占用资源过多,在开发过程中效率很低;大部分时间花在配置、运行的过程上,修改复杂;单元测试也很麻烦。但在大量运行过程中会表现出优异的效果。也即 开发麻烦、运行性能高
  • 轻量级框架提高了开发的速度;立即可以看到结果;做单元测试非常简单;大量的现成可供参考的开源代码。开发简单,但运行性能低。

.NET平台

.NET 框架处于操作系统和 .NET 应用程序之间,只适用于微软系统,而 J2EE支持跨平台,任何安装了JVM 的平台。

.NET和J2EE之争

  1. JVM(将所有JAVA代码都编译为字节码,由JVM解释执行)和CLR(.NET核心技术,类似于JVM,生成中间代码CLR,编译执行)。

  2. 对多层分布式应用的支持,二者都支持多层分布式应用程序的开发:在表示层的平台支持上,J2EE客户端支持多个平台,.NET只能在微软系统上运行,也因此,.NET会对微软系统上的应用进行优化;在业务层,J2EE占优势,因为有许多开源的项目和代码供参考,开发就变得简单;在数据层,二者都支持多种数据库,都非常优秀。

  3. 安全性,由于JAVA在.NET之后出来,借鉴了.NET优点,JAVA在运行时动态验证,.NET是静态全面验证,二者都非常优秀,不分上下。

  4. 应用程序的部署,J2EE的部署相对来说较复杂,针对不同的系统要特别布置。