软考-13.6中间件
前言
内容:
- 中间件
中论
中间件
中间件:在一个分布式系统环境中处于操作系统和应用程序之间的软件,可以在不同的技术之间共享资源,将不同的操作系统、数据库、异构的网络环境以及若干应用结合成一个有机的协同工作整体。 中间件位于客户机/服务器的操作系统之上,管理计算机资源和网络通信,有如下特点
- 中间件是一类软件,而非一种软件;
- 中间件不仅仅实现互连,还要实现应用之间的互操作;
- 中间件是基于分布式处理的软件,最突出的特点是其网络通信功能。
中间件的任务是使应用程序开发变得更容易,通过提供统一的程序抽象,隐藏异构系统和分布式系统下低级别编程的复杂度。
中间件分类
-
**数据库访问中间件:**通过一个抽象层访问数据库,从而允许使用相同或相似的代码访问不同的数据库资源。典型的技术如Windows平台的ODBC和Java平台的JDBC等。
-
**远程过程调用(RPC):**是一种广泛的使用的分布式应用程序处理方法。一个应用程序使用RPC来“远程”执行一个位于不同地址空间内的过程,从效果上看和执行本地调用相同。
-
面向消息中间件(MOM): 利用高效可靠的消 息传递机制进行平台无关的数据交流,并可基于数据通信进行分布系统的集成。通过提供消息传递和消息排队模型,可在分布环境下扩展进程间的通信,并支持多种通信协议、语言、应用程序、硬件和软件平台。典型的产品如IBM的MQSeries。
-
**分布式对象中间件:**随着对象技术与分布式计算技术的发展,两者相互结合形成了分布式对象技术,并发展成为当今软件技术的主流方向。典型的产品如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之争HUA
- JVM(将所有JAVA代码都编译为字节码,由JVM解释执行)和CLR(.NET核心技术,类似于JVM,生成中间代码CLR,编译执行)。
- 对多层分布式应用的支持,二者都支持多层分布式应用程序的开发:在表示层的平台支持上,J2EE客户端支持多个平台,.NET只能在微软系统上运行,也正是因此,.NET会对微软系统上的应用进行优化;在业务层,J2EE占优势,因为有许多开源的项目和代码供参考,开发就变得简单;在数据层,二者都支持多种数据库,都非常优秀。
- 安全性,由于JAVA在.NET之后出来,借鉴了.NET优点,JAVA在运行时动态验证,.NET是静态全面验证,二者都非常优秀,不分上下。
- 应用程序的部署,J2EE的部署相对来说较复杂,针对不同的系统要特别布置。
- 可移植性,显然J2EE占优势,一次开发,到处运行。
- 外部支持:J2EE占优势,得到了很多厂家的支持,.NET只是微软一家。
后记
画凌烟,上甘泉,自古功名属少年。