中间件知识
1,常见应用系统开发构架:
传统的两层结构:表示层(Presentation Layer):用于处理人机交互。
目前最主流的两种表示层是Windows桌面和IE浏览器方式。
它主要责任是处理用户请求,例如鼠标点击、输入、HTTP请求等,实际部分业务逻辑。
数据层(Data source Layer):处理数据库、消息系统、事务系统。
实际部分业务逻辑。
经典的三层结构:表示层(Presentation Layer):用于处理人机交互。
目前最主流的两种表示层是Windows桌面和IE浏览器方式。
它主要的责任是处理用户请求,例如鼠标点击、输入、HTTP请求等。
业务层(Business Layer):模拟了企业中的实际活动,也可以认为是企业活动的模型。
数据层(Data source Layer):处理数据库、消息系统、事务系统。
通用的四层结构:表示层(Presentation Layer):用于处理人机交互。
目前最主流的两种表示层是Windows桌面和IE浏览器方式。
它主要的责任是处理用户请求,例如鼠标点击、输入、HTTP请求等。
业务层(Business Layer):模拟了企业中的实际活动,也可以认为是企业活动的模型。
数据层(Data source Layer):处理数据库、消息系统、事务系统。
安全层(Security Layer):管理系统身份验证、授证、日志等。
主要产品:应用中间件、平台中间件、工作流中间件、数据传输中间件等。
2,什么是中间件
中间件(middleware):是基础软件的一大类,属于可复用软件的范畴。
顾名思义,中间件处于操作系统软件与用户的应用软件的中间。
中间件在操作系统、网络和数据库之上,应用软件的下层,总的作用是为处于自己上层的应用软件提供运行与开发的环境,帮助用户灵活、高效地开发和集成复杂的应用软件。
在众多关于中间件的定义中,比较普遍被接受的是IDC表述的:中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。
IDC对中间件的定义,中间件是一类软件,而非一种软件;中间件不仅仅实现互连,还要实现应用之间的互操作;中间件是基于分布式处理的软件,最突出的特点是其网络通信功能。
3,为什么要中间件
Internet及WWW的出现,使计算机的应用范围更为广阔,许多应用程序需在网络环境的异构平台上运行。
这一切都对新一代的软件开发提出了新的需求。
在这种分布异构环境中,通常存在多种硬件系统平台(如PC,工作站,小型机等),在这些硬件平台上又存在各种各样的系统软件(如不同的操作系统、数据库、语言编译器等),以及多种风格各异的用户界面,这些硬件系统平台还可能采用不同的网络协议和网络体系结构连接。
如何把这些系统集成起来并开发新的应用是一个非常现实而困难的问题。
4,中间件的主要作用
为解决分布异构问题,人们提出了中间件(middleware)的概念。
中间件是位于平台(硬件和操作系统)和应用之间的通用服务,如图1所示,这些服务具有标准的程序接口和协议。
针对不同的操作系统和硬件平台,它们可以有符合接口和协议规范的多种实现。
5,数据库中间件(DM,Database Middleware)
数据库中间件在所有的中间件中是应用最广泛,技术最成熟的一种。
一个最典型的例子就是ODBC,ODBC是一种基于数据库的中间件标准,它允许应用程序和本地或者异地的数据库进行通信,并提供了一系列的应用程序接口API,当然,在多数情况下这些API都是隐藏在
开发工具中,不被程序员直接使用。
有过实际编程经验的朋友都知道,在写数据库程序的时候,只要在ODBC中添加一个数据源,然后就可以直接在自己的应用程序中使用这个数据源,而不用关系目标数据库的实现原理、实现机制,甚至不必了解ODBC向应用程序提供了哪些应用程序接口API。
不过在数据库中间件处理模型中,数据库是信息存贮的核心单元,中间件完成通信的功能,这种方式虽然是灵活的,但是并不适合于一些要求高性能处理的场合,因为它需要大量的数据通信,而且当网络发生故障时,系统将不能正常工作。
所谓有得必有失,就是这个道理,系统的灵活性提高是以处理性能的降低为代价的。
6,远程过程调用中间件(RPC, Remote Procedure Call)
远程过程调用是另外一种形式的中间件,它在客户/服务器计算方面,比数据库中间件又迈进了一步。
它已经存在了相当长的时间,而且沿用了大多数程序员都非常熟悉的编程模式-程序员就像调用本地过程一样在程序中调用远程过程。
启动远程过程的运行,然后将运行结果返回给本地程序。
不但如此,远过程调用还可以将程序的控制传递到远端的服务器当中去。
RPC的灵活特性使得它有比数据库中间件更广泛的应用,它可以应用在更复杂的客户/服务器计算环境中。
远过程调用的灵活性还体现在它的跨平台性上面,它不仅可以调用远端的子程序,而且这种调用是可以跨不同操作系统平台的,而程序员在编程时并不需要考虑这些细节。
RPC也有一些缺点,主要是因为RPC一般用于应用程序之间的通信,而且采用的是同步通信方式,因此对于比较小型的简单应用还是比较适合的,因为这些应用通常不要求异步通信方式。
但是对于一些大型的应用,这种方式就不是很适合了,因为此时程序员需要考虑网络或者系统故障,处理并发操作、缓冲、流量控制以及进程同步等一系列复杂问题
7,面向消息中间件(MOM,Message Oriented Middleware)
消息中间件的优点在于能够在客户和服务器之间提供同步和异步的连接,并且在任何时刻都可以将消息进行传送或者存储转发,这也是它比远程过程调用更进一步的原因。
另外消息中间件不会占用大量的网络带宽,可以跟踪事务,并且通过将事务存储到磁盘上实现网络故障时系统的恢复。
当然和远程过程调用相比,消息中间件不支持程序控制的传递,不过这种功能和它的优势比起来却是无关紧要的。
消息中间件适用于需要在多个进程之间进行可靠的数据传送的分布式环境。
8,事务处理中间件(TPM,Transaction Processing Monitor)
事务处理中间件是一种复杂的中间件产品,是针对复杂环境下分布式应用的速度和可靠性要求而实现的。
它给程序员提供了一个事务处理的API,程序员可以使用这个程序接口编写高速而且可靠的分布式应用程序-基于事务处理的应用程序。
事务处理中间件向用户提供一系列的服务,如应用管理,管理控制,已经应用程序间的消息传递等。
常见的功能包括全局事务协调、事务的分布式两段提交、资源管理器支持、故障恢复、高可靠性、网络负载平衡等等
9,工作流中间件
目前的工作流模型主要分为以下几种类型:
1. 管理型工作流:在这类工作流中活动可以预定义并且有一套任务协调规则。
用于执行简单可重复和可预测的流程,流程在实例化之前需要定义,流程所需的全部信息,流程实例化后,流程的定义很少修改,不要求控制复杂流程和访问多个信息系统。
2. 设定型工作流:与管理型工作流相似,但一般用来处理异常情况。
3. 消息型工作流:主要通过一些消息中间件通过消息传递实现消息流的流转。
4. 集成型工作流:实现重要的业务过程的工作流。
与管理型工作流相比,集成型工作流一般应用在大规模复杂的和异构的环境下,整个过程会涉及多个分布式系
10,消息传输中间件
为保障信息交换的可靠性和应用接口的简单性,中间件技术可以为应用提供简单的消息传输接口,并在接口内部实现了断电续传、消息路由、消息转发、传输监控和数据加密等功能。