小蜜锋 - 云代码空间
—— 技术宅拯救世界!
中间件是位于平台(硬件和操作系统)和应用之间的通用服务,这些服务具有标准的程序接口和协议。针对不同的操作系统和硬件平台,它们可以有符合接口和协议规范的多种实现。
IDL (Interface Definition Language) 接 口 描 述 语 言
中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件位于客户机/ 服务器的操作系统之上,管理计算资源和网络通讯。
中间件在分布式的客户和服务之间扮演着承上启下的角色,如事务管理、负载均衡以及基于Web的计算等。
中间件有助于减轻应用软件开发者的负担,利用现有的硬件设备、操作系统、网络、数据库管理系统以及对象模型创建分布式应用软件时更加得心应手。
由于中间件能够保护企业的投资,保证应用软件的相对稳定,实现应用软件的功能扩展;同时中间件产品在很大程度上简化了一个由不同硬件构成的分布式处理环境的复杂性,所以它的出现正日益引起用户的关注。
满足大量应用的需要 ;
运行于多种硬件和OS平台 ;
支持分布式计算,提供跨网络、硬件和OS平台的透明性的应用或服务的交互功能 ;
支持标准的协议 ;
支持标准的接口。
中间件屏蔽了低层操作系统的复杂性,使程序开发人员面对一个简单而统一的开发环境,减少程序设计的复杂性,将注意力集中在自己的业务上,不必再为程序在不同系统软件上的移植而重复工作,从而大大减少了技术上的负担。
中间件带给应用系统的不只是开发的简单、开发周期的缩短,也减少了系统的维护、运行和管理的工作量,还减少了计算机总体费用的投入。The Standish Group的调查报告显示,由于采用了中间件技术,应用系统的总建设费用可以减少50%左右。在网络经济大发展、电子商务大发展的今天,从中间件获得利益的不只是IT厂商,IT用户同样是赢家,并且是更有把握的赢家。
中间件作为新层次的基础软件,其重要作用是将不同时期、在不同操作系统上开发应用软件集成起来,彼此像一个天衣无缝的整体协调工作,这是操作系统、数据库管理系统本身做不了的。中间件的这一作用,在技术不断发展之后,使以往在应用软件上的劳动成果仍然物有所用,节约了大量的人力、财力投入。
应用开发:The Standish Group 分析了100个关键应用系统中的业务逻辑程序、应用逻辑程序及基础程序所占的比例;业务逻辑程序和应用逻辑程序仅占总程序量的30%,而基础程序占了70%,使用传统意义上的中间件一项就可以节省25%~60%的应用开发费用。如是以新一代的中间件系列产品来组合应用,同时配合以可复用的商务对象构件,则应用开发费用可节省至80%。
系统运行:没有使用中间件的应用系统,其初期的资金及运行费用的投入要比同规模的使用中间件的应用系统多一倍。
开发周期:基础软件的开发是一件耗时的工作,若使用标准商业中间件则可缩短开发周期50%~75%。
减少项目开发风险:研究表明,没有使用标准商业中间件的关键应用系统开发项目的失败率高于90%。企业自己开发内置的基础(中间件)软件是得不偿失的,项目总的开支至少要翻一倍,甚至会十几倍。
合理运用资金:借助标准的商业中间件,企业可以很容易地在现有或遗留系统之上或之外增加新的功能模块,并将它们与原有统无缝集合。依靠标准的中间件,可以将老的系统改头换面成新潮的Internet/Intranet 应用系统。
应用集合:依靠标准的中间件可以将现有的应用、新的应用和购买的商务构件融合在一起进行应用集合。
系统维护:需要一提的是,基础(中间件)软件的自我开发是要付出很高代价的,此外,每年维护自我开发的基础(中间件)软件的开支则需要当初开发费用的15%~25%,每年应用程序的维护开支也还需要当初项目总费用的10%~20%左右。而在一般情况下,购买标准商业中间件每年只需付出产品价格的15%~20%的维护费,当然,中间件产品的具体价格要依据产品购买数量及哪一家厂商而定。
质量:基于企业自我建造的基础(中间件)软件平台上的应用系统,每增加一个新的模块,就要相应地在基础(中间件)软件之上进行改动。而标准的中间件在接口方面都是清晰和规范的。标准中间件的规范化模块可以有效地保证应用系统质量及减少新旧系统维护开支。
技术革新:企业对自我建造的基础(中间件)软件平台的频繁革新是极不容易实现的(不实际的)。而购买标准的商业中间件,则对技术的发展与变化可以放心,中间件厂商会责无旁贷地把握技术方向和进行技术革新。
增加产品吸引力:不同的商业中间件提供不同的功能模型,合理使用,可以让你的应用更容易增添新的表现形式与新的服务项目。从另一个角度看,可靠的商业中间件也使得企业的应用系统更完善,更出众。
数据访问中间件:是为了建立数据应用资源互操作的模式,对异构环境下的数据库实现联接或文件系统实现联接的中间件;
远程过程调用中间件:通过这种远程过程调用机制,程序员编写客户方的应用,需要时可以调用位于远端服务器上的过程;
消息中间件:用来屏蔽掉各种平台及协议之间的特性,进行相互通信,实现应用程序之间的协同;
交易中间件:是在分布、异构环境下提供保证交易完整性和数据完整性的一种环境平台;
对象中间件:在分布、异构的网络计算环境中,可以将各种分布对象有机地结合在一起,完成系统的快速集成,实现对象重用。
CORBA是Common Object Request Broker Architecture的缩写,简称公共对象请求代理结构。其目的是在分布和异构计算机环境下为应用软件的开发提供一个公共框架,使开发出来的软件即面向对象又具有可重用性、可移植性以及可操作性等特点。
当前支持服务器端中间件技术的平台
主要有OMG的CORBA、Sun的J2EE和Microsoft DNA 2000。
CORBA事件服务是将事件从事件提供者对象传送给事件消费者对象这样一种机制。
CCM拓展了CORBA对象模型,是面向服务器端的组件模型:
CCM支持CORBA组件的定义,代码生成,封装,组合,配置,可构建及配置CORBA应用;
CCM提供了服务器的公共服务;
CCM提供了CORBA容器用以实现与EJB的互操作;
线程是指在某个进程的上下文中执行的代码序列.
互斥锁用于保护多线程并行访问的共享资源的完整性;
读写锁
与互斥锁类似;允许对一个被保护的共享资源并发的读和独占的写。
计数信号量
用来跟踪共享程序的状态变换.
条件变量
提供了与互斥锁,读写锁和计数信号量不同特点的锁机制.
Push
在推模型中,事件的提供者起带头作用,发起事件的传送;
Pull
在拉模型中,事件的消费者起带头作用,向提供者请求事件数据。
事件信道(event channel)是一个既是事件提供者又是事件消费者的插入对象,它允许多个事件提供者和多个事件消费者异步地通信而不需要相互了解。事件信道又是一个标准的CORBA对象,驻留在对象请求中介上,断开提供者和消费者的通信。
负载均衡的应用程序可以有效地提高系统的性能、可靠性和可用性。
改善可伸缩性:通过结合复制和分区把应用程序的负载分布到多个可执行程序和多个主机上;
克服资源限制:修改CPU数量、内存、TCP连接、线程限制等设计;
限制故障所引起的危害:应用分布、组件分布及组件复制来限制单个服务器上的故障可能引起的危害。
所有的操作都包含在一对开始和结束事务的语句中间,这些操作属于同一级别,被认为是一个整体;
链式事务:事务的开始不要求AP显示调用tx_begin(),当前事务的结束隐含了新事务的开始,事务与事务像链条一样彼此相连;
嵌套事务:事务有不同级别,可以包含多个子事务,形成树状的事务结构,树的叶子是平坦事务,树根称为顶层事务.
涉及多个RM的协调工作;这些RM可以是分布的;全局事务最终映射到多个本地事务上去执行;
本地事务
每个RM自己负责的分支;一个事务分支可以使用XID唯一的标明;XID由GTRID和BQUAL组成,分别表示全局事务标识符和分支限定符;
传统中间件在移动网络中所面临的挑战
移动环境下TCP/IP需要解决的问题
无线信道的突发性错误
较大的延时变化
移动主机越区切换造成的TCP拥塞和丢包
移动环境下移动透明性问题
移动主机的地址变化要求消息必须发送到新的地址
客户端意识不到服务端的移动
服务设施提供移动代理的基本服务:
生命周期服务:实现代理的创建,移动,持久化存储和执行环境分配;
事件服务:包括代理传输协议和代理通信协议,实现代理间的事件传递;
目录服务:提供定位代理的信息,形成路由选择;
安全服务:提供安全的代理执行环境;
应用服务:任务相关的服务,提供面向特定任务的服务接口.