小明的奶茶店要对接外卖平台、支付系统、会员系统——每个都不同厂家不同协议。怎么让它们协同工作?答案就是"中间件"——处于操作系统和应用软件之间的"翻译官"和"粘合剂"。本章讲中间件、应用服务器、J2EE、.NET、EAI、轻量级与重量级架构。
🎭 本章导读:中间件的定位
🧱 15.1 中间件技术
15.1.1 中间件的概念
IDC定义:独立的系统软件或服务程序,分布式应用借助它在不同技术间共享资源。有标准程序接口和协议。5特点:满足大量应用需要、运行多种硬件和OS、支持分布计算提供透明性、支持标准协议、支持标准接口。
Standish Group 10大优越性:缩短开发周期、节约开发成本、减少初期建设成本、降低失败率、保护已有投资、简化应用集成、减少维护费用、提高开发质量、保证技术进步连续性、增强应用生命力。总建设费用可减少50%。
15.1.2 中间件8类
| 类型 | 作用 | 代表产品 |
|---|---|---|
| 通信处理(消息)中间件 | 跨平台可靠高效实时数据传输 | BEA eLink/IBM MQSeries/TongLINK(销售额最大) |
| 事务处理(交易)中间件 | 大量事务并发+负载均衡+高可靠 | BEA Tuxedo(增长率最高) |
| 数据存取管理中间件 | 虚拟缓冲存取/格式转换/解压 | — |
| Web服务器中间件 | 扩充浏览器会话/数据写入 | SilverStream |
| 安全中间件 | 军事政府商务安全保密 | 国产产品 |
| 跨平台和架构中间件 | 集成不同平台构件 | CORBA(最强但庞大)/JavaBeans(灵活)/COM+(Windows) |
| 专用平台中间件 | 特定领域参考模式 | 电子商务/网站 |
| 网络中间件 | 网管/接入/测试/虚拟社区 | 最热门研发 |
15.1.3 两大产品
IBM MQSeries:消息处理中间件。确保信息可靠传输(网络不可靠也不丢不阻塞)。异步消息处理。支持所有主要平台+Internet+Java+LotusNotes/SAP R3接口。
BEA Tuxedo:交易中间件。电子商务交易平台。保证不间断访问(监视故障+逻辑排除+恢复)。负载均衡(自动开关服务)。DDR数据依赖路由。LLE安全机制。ATMI为50+硬件平台提供一致API。
🖥️ 15.2 应用服务器技术
15.2.1 应用服务器概念
应用服务器=企业级应用的"操作系统"。提供开发/部署/运行/管理/维护平台。可实现"软件集群",让多异构服务器协同工作。
4大作用:
- 合理分工企业级开发(系统功能与业务功能分开),加快开发速度,减少开发量(模块化+ORM等)
- 应用设计/开发/部署/运行/管理/维护的平台
- 使应用与底层平台无关,便于商业逻辑实现与扩展(三层结构,中间层独立)
- 提供现成稳定强健灵活成熟的基础架构(分布式+无单点故障)
15.2.2 五大应用服务器
| 产品 | 厂商 | 特点 |
|---|---|---|
| WebLogic | BEA | Java Web应用服务器,EJB Deployer Tool,ZAC发布向导 |
| WebSphere | IBM | 强调集成(Studio+VisualAge+DB2+MQSeries),多平台 |
| iPlanet | SUN+Netscape | 满足J2EE规范,事务监控+负载平衡+集群故障转移 |
| iAS | Oracle | Apache为入口,插件盒(PL/SQL/Jweb/Perl/C/ODBC),支持CORBA/IIOP+EJB |
| EAServer | Sybase | Jaguar CTS+PowerDynamo,WebOLTP+动态发布,支持多构件模型 |
☕ 15.3 J2EE
15.3.1 表示层
客户端可基于Web(HTML/Javascript/XML)或Java(Applet/独立程序)。HTML首选;HTML不足则用Java客户端。当客户端是HTML时,JSP/Servlet组合是真正客户端;Java程序可直接访问业务逻辑。
15.3.2 应用服务层6技术
1. Servlet:扩展Web服务器功能的程序。类似CGI但用Java类+流,更易写,编译为字节码驻留内存,每用户请求生新线程,速度快。
2. JSP:基于文本的Servlet。与JavaBeans结合可分开内容和显示逻辑。比CGI广(平台无关+资源少)。
3. EJB 3类:
| 类型 | 代表 | 特点 |
|---|---|---|
| 实体Bean | 数据库数据 | 持久性,数据在库中Bean就存在。容器管理持久性(CMP)或Bean管理持久性(BMP) |
| 会话Bean | 与客户短暂对话 | 有状态(含对话状态,不表示持久数据)/无状态(资源少,通用服务) |
| 消息驱动Bean | 处理JMS异步消息 | EJB2.0规范,不由应用直接调用,监听JMS队列 |
4. JMS:Java程序间信息交换。2模式:点到点(队列,一个消费者)+出版/订阅(话题,多消费者)。
5. JNDI:Java命名和目录接口,查找用户定义对象(如EJB)和环境实体。
6. 事务处理:JTA(高级API,事务接口+XA资源接口两步提交)+JTS(低级API,映射到OMG对象事务服务)。Bean管理或Container管理事务处理。
🪟 15.4 .NET
15.4.1 .NET平台
目的:任何地方任何时间任何设备访问所需信息。软件以Web服务形式出现,通过WSDL描述+DISCO查找+SOAP调用。
XML作为应用间无缝接合手段,定义SOAP(简单对象访问)、WSDL(服务描述)、Web服务发现协议。
15.4.2 .NET框架6部分
1. 通用语言运行时(CLR):框架最底层基础。统一运行环境,多语言交互,自动内存管理。受控代码:源代码→MIL微软中间语言+元数据→JITC生成机器码。
2. 基础类库:命名空间点号分隔(如System.Data),统一面向对象可扩展接口。
3. ADO.NET:数据访问。强大XML支持(XMLReader/Writer/Navigator/Document),引入DataSet(内存数据缓冲区,关系型视图),替代Recordset。
4. ASP.NET:网络编程。Web表单(快速开发+代码内容分开+服务器端控件)+Web服务(.ASMX文件)+应用框架(编译运行+复制文件即发布)。
5. WinForms:传统Windows应用,可利用CLR+ADO.NET+Web服务。
6. 开发语言:VB/C++/C#/Jscript,C#是全新面向对象语言。Visual Studio.NET集成开发环境。
COM开发被简化(引用计算/接口描述/注册自动化)。COM+=COM+MTS+DCOM,提供中间层服务(进程管理+连接池)。
其他:安全系统(基于事实的细化权限)+配置系统(并行配置消除"DLL地狱")。
🔗 15.5 企业应用集成(EAI)
3种集成(按深度):①应用集成(A2A实时,代码/API/RPC/中间件/Web服务) ②业务过程集成(交互式流程/多步流程,含工作流) ③数据集成(数据库间数据移动,切入点多,批量/实时同步)。
EAI通过中间件连接企业级应用4好处:兼容开放硬件/OS/网络/数据库、平台透明性、交易一致完整性、缩短开发周期50-75%。
⚖️ 15.6 轻量级架构和重量级架构
15.6.1 Struts框架
基于J2EE的MVC框架(Servlet+JSP)。模型=JavaBean/EJB,控制器=ActionServlet+Action,视图=JSP。Front Controller模式统一入口。工作流程:JSP发.do请求→ActionForm封装验证→ActionServlet据struts-config.xml获Action→调model→返view。
15.6.2 Spring框架
Rod Johnson创立,轻量级J2EE应用框架。核心概念:控制反转(IoC),又称依赖注入(DI)——不必在程序码维护物件依赖关系,只需构件设定,Spring容器自动注入。
核心容器=BeanFactory(Factory模式实现)。模块:Core+DAO(JDBC抽象)+ORM(Hibernate/JDO/Ibatis/JPA)+Context(EJB/JNDI/Mail)+Web+MVC。
15.6.3 Hibernate框架
对象关系映射(ORM)框架,Java应用和关系数据库的桥梁。将数据库资源映射为POJO。核心是XML映射文件*.hbm.xml。用HQL(类似SQL但对象和字段代替表和列)检索。支持主流数据库+父表子表+事务+继承多态。只是工具不是J2EE服务器。
15.6.4 SSH轻量级架构3层
表示层(Struts):管理请求响应+控制器代理+异常处理+数据模型+Web层验证。
持久层(Hibernate):HQL检索+存储/更新/删除+支持主流数据库+事务+继承多态。
业务层(Spring):延时注入提扩展性+插件式编程+AOP集中处理业务逻辑+封装Hibernate会话工厂和事务管理。
15.6.5 轻量级 vs 重量级
重量级:依赖庞大容器(EJB),开发效率低,配置等待久,单元测试难,但大规模运行性能优异。
轻量级:不用庞大容器,开发迅速,单元测试简单,但大规模运行性能与重量级有差异。
新选择:JPA标准(持久化与框架无关,开发用Hibernate测试,上线部署EJB实体Bean)+事务注解(开发用Spring映射,上线用EJB会话Bean)。解决两者矛盾。
🏆 本章总结:中间件开发全栈
- 中间件:5特点+10优越性+8类(消息/交易/数据存取/Web/安全/跨平台/专用/网络)+2产品(MQSeries/Tuxedo)
- 应用服务器:3阶段演变+4作用+5产品(WebLogic/WebSphere/iPlanet/iAS/EAServer)
- J2EE:4构件+表示层+应用服务层6技术(Servlet/JSP/EJB3类/JMS2模式/JNDI/事务JTA+JTS)
- .NET:4特点+框架6部分(CLR/类库/ADO.NET/ASP.NET/WinForms/语言)+COM+与安全
- EAI:3种集成(应用/过程/数据)+4好处
- 轻量级vs重量级:MVC+SSH三层(Struts/Spring核心IoC/Hibernate ORM)+轻重量级对比+JPA新选择