软件中间件技术_第1页
软件中间件技术_第2页
软件中间件技术_第3页
软件中间件技术_第4页
软件中间件技术_第5页
已阅读5页,还剩170页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软件中间件技术中间件技术简介

引言

中间件(Middleware)是处于操作系统和应用程序之间的软件,也有人认为它应该属于操作系统中的一部分。在使用中间件时,往往是一组中间件集成在一起,构成一个平台(包括开发平台和运行平台),但在这组中间件中必需要有一个通信中间件,即中间件=平台+通信,这个定义也限定了只有用于分布式系统中才能称为中间件,同时还可以把它与支撑软件和实用软件区分开来。第2页,共175页,2024年2月25日,星期天中间件技术简介

引言

中间件屏蔽了底层操作系统的复杂性,使程序开发人员面对一个简单而统一的开发环境,减少程序设计的复杂性,将注意力集中在自己的业务上,不必再为程序在不同系统软件上的移植而重复工作,从而大大减少了技术上的负担。中间件带给应用系统的,不只是开发的简便、开发周期的缩短,也减少了系统的维护、运行和管理的工作量,还减少了计算机总体费用的投入。第3页,共175页,2024年2月25日,星期天中间件技术简介

引言

中间件具有标准的程序接口和协议,可以实现不同硬件和操作系统平台上的数据共享和应用互操作。在具体实现上,中间件是一个用API(ApplicationProgrammingInterface,应用程序接口)定义的分布式软件管理框架,具有强大的通信能力和良好的可扩展性。

第4页,共175页,2024年2月25日,星期天中间件技术简介

引言

第5页,共175页,2024年2月25日,星期天中间件技术简介

引言

中间件的工作机制如下:

客户端上的应用程序需要从网络中某个节点处获取一定的数据或者服务,这些数据和服务可能处于一个运行着和客户端不同的操作系统的服务器上,客户/服务器应用程序中负责查找数据的那一部分只要通过调用中间件API访问一个中间件系统,由中间件完成到网络中查找目标数据源或者服务的任务,进而传输客户请求,重组答复信息,最后将结果送回给应用程序。第6页,共175页,2024年2月25日,星期天中间件技术简介中间件的发展历程中间件分类

对象中间件

对象中间件技术COM+

对象中间件技术CORBA

点评主流中间件技术平台

中国中间件市场发展趋势与预测第7页,共175页,2024年2月25日,星期天中间件的发展历程

早期

对于中间件的早期需求产生于同行业公司之间的通信.(20世纪60年代)

金融业之间的国际货币划拨需要的SWIFT(SocietyforWorldwideInterbankFinancialTelecommunication,全世界银行间金融电信学会)

航空工业需要的IATA(InternationalAirTransportAssociation,国际航空运输协会)

航空公司已经拥有多节点网络

第8页,共175页,2024年2月25日,星期天中间件的发展历程

早期(20世纪70年代)大多数主要的IT硬件商推出了“网络体系结构”,以支持分布式计算机的大型网络。

IBM(系统网络体系结构)Sperry(分布式通信体系结构)Burroughs(网络体系结构)DEC(分布式网络体系结构)这些产品为程序提供了发送和接收消息的功能,还有一些基础的服务。(文件传输、远程打印、终端传输、远程文件访问)第9页,共175页,2024年2月25日,星期天中间件的发展历程

早期

为了使一个组织使用多个商家的IT产品成为可能,开放系统运动应运而生。(实现同样的标准)电气接口(RS232)

网络协议(X.25)

国际标准化组织(InternationalOrganizationforStandardization,ISO)OSI(OpenSystemInterconnect,开放系统互连)系列标准.第10页,共175页,2024年2月25日,星期天中间件的发展历程

早期

最流行的是OSI基本参考模型,即著名的七层模型(1980.12)。好几年以后才被正式认可。(太慢/太复杂)第11页,共175页,2024年2月25日,星期天中间件的发展历程

早期Unix诞生于1969年,是贝尔实验室员工KenThompson的个人项目。由于贝尔实验室是AT&T(美国电话电报公司)的下属机构,所以Unix的版权归AT&T所有。加州大学伯克利分校得到源码后,为Unix添加了许多功能。然后在1979年,推出了一个自家的Unix版本,取名为BerkeleySoftwareDistribution(伯克利软件套件),简称BSD。

第12页,共175页,2024年2月25日,星期天中间件的发展历程

早期

UNIX的特点:十分有价值意识:便宜;提供产品无限制:不断地修补该OS。以至当时UNIX有许多不同的版本。

(Berkeley版本和AT&T版本)第13页,共175页,2024年2月25日,星期天中间件的发展历程

早期

TCP/IP伴随UNIX产生。

TCP/IP是为美国的军事应用于20世纪70年代中期开发的,在1983年部署于ARPAnet。军事的影响力和财力是TCP/IP成功的关键。

1983年ARPAnet分解为一个军事和一个非军事网络。非军事网络是由学术机构和研究机构组成的,UNIX在其中居于统治地位。第14页,共175页,2024年2月25日,星期天中间件的发展历程

早期

几年以后,ARPAnet演化为互联网(Internet)。互联网的爆炸(很大程度上是由Web引起的)已使得TCP/IP成了主导的网络互联标准。TCP/IP是一组标准。

IP(InternetProtocol,网络协议)是网络标准,它确保消息可以从一台机器发送到另一台机器。

TCP(TransmissionControlProtocol,传输控制协议)是程序之间通过IP通信的会话标准。第15页,共175页,2024年2月25日,星期天中间件的发展历程

互联网的应用

互联网是人类的一次革命,没有任何厂商能够垄断这一技术。在IT界,互联网改变了许多东西。它加速了TCP/IP作为一个通用网络标准的统治地位;它导致了工作站上大量自由互联网软件发展;它激发“瘦”客户的概念;它产生了一种新风格(即HTML、XML和SOAP等);它改变了我们对安全性的认识;它把我们从特定的终端有特定的功用的观念中解放出来;第16页,共175页,2024年2月25日,星期天中间件的发展历程

互联网的应用在IT界,互联网改变了许多东西。它导致了集中式计算机应用的回归;它使我们更好地认识到目录的作用,特别是DNS(DomainNameServer,域名服务器)的作用是把Web(即URL)名称翻译成网络(即IP)地址;它促进了企业网(intranet)和外部网(extranet)的成长。

从某种程度上讲,它使人们意识到一个有效的解决方案未必是复杂的。第17页,共175页,2024年2月25日,星期天中间件的发展历程

互联网的应用

互联网应用与传统应用的不同主要有四点:

用户发出指令。键入命令;链接、返回命令、个人收藏夹以及显示的URL地址设备(显示器,移动设备,连接介质)。识别用户(网络地址)DHCP,动态主机配置协议(DynamicHostConfigurationProtocol)安全性。第18页,共175页,2024年2月25日,星期天中间件分类

中间件的要素

对于一个完整的解决方案来说,需要考虑至少8个要素:通信链路中间件协议应用程序的编程接口(API)一个公共的数据格式服务器处理控制命名/目录服务安全性管理第19页,共175页,2024年2月25日,星期天中间件的要素

通信链路通信链路(Link)。多数中间件被限制使用一种或几种网络标准,现行的主要标准是TCP/IP和SNA(SystemsNetworkArchitecture,系统网络体系结构

)。第20页,共175页,2024年2月25日,星期天中间件的要素

中间件协议2.中间件协议。常称为“WireProtocol”(线路协议)。该协议定义了一些标准,这些准则使两个过程有效地通信成为可能。中间件协议像所有协议一样,被定义为:在通信链路上(Link)的消息格式在每个终端上实体状态的传输框图中间件的一个显著特征是它允许程序通信。第21页,共175页,2024年2月25日,星期天中间件的要素

应用程序的编程接口3.应用程序的编程接口(API)一个API是一组过程调用,程序用它来驱动中间件。API之间的巨大的差异是可能存在的:

API可以是面向对象的或者是传统的。对一个特殊的应用来说,API可以被修改(ODBC)或者被编译。

API可以是基于操作的也可以是基于语言的。例如,CORBA的解释性接口是基于操作的,而远程数据库访问是基于语言的(SQL)。

API调用可以锁住、也可以解释处理中的线程,直到服务器应答。第22页,共175页,2024年2月25日,星期天中间件的要素

一个公共的数据格式4.一个公共的数据格式具有某种结构的消息的接收方将消息分解为单独的字段,并把每个字段的数据的值转换成某种接收者可以理解的东西。发送方和接收方必须清楚地知道消息的结构。不同的机器有不同的数据表示标准,发送方和/或接收方可能需要转换数据的值。多数但不是全部的中间件产品都能够实现这些消息的聚集/分解和数据格式的转换。XML作为一个通用的数据表示标准正被越来越多地使用。第23页,共175页,2024年2月25日,星期天中间件的要素

服务器控制5.服务器处理控制

服务器进程控制分解成3个主要任务。进程与线程的控制;资源管理;对象管理。第24页,共175页,2024年2月25日,星期天中间件的要素

命名/目录服务6.命名/目录服务一个中间件服务器的网络访问点是一个定义网络地址(IP地址)的典型的32位数以及一个允许操作系统将消息发送到正确程序的端口号。命名服务把这些数字映射到我们可以明白的名称。最著名的命名服务是在Internet上使用的DNS(DomainNameService)。目录服务前进了一步,提供了一个通用的查找功能;一个中间件等价于电话目录,目录服务倾向于成为中间件连接的单独产品。第25页,共175页,2024年2月25日,星期天中间件的要素

安全性7.安全性只有合法用户才允许使用服务器资源,而且当他们连接时,也只能给定有限的有选择的服务。安全渗透到系统的每一部分。加密需要协议层级别的支持,访问控制需要服务器控制功能的支持,授权可能需要一个专门安全管理系统的支持。第26页,共175页,2024年2月25日,星期天中间件的要素

管理8.管理

为了对所有这些软件进行操作控制、调试、监控以及配置控制,我们需要一个人机界面。第27页,共175页,2024年2月25日,星期天中间件的特点中间件具有以下特点:满足大量应用的需要;运行于多种硬件和OS(OperatingSystem)平台;支持分布式计算,提供跨网络、硬件平台和OS平台的透明性的应用或服务的交互功能;支持标准的协议,支持标准的接口。第28页,共175页,2024年2月25日,星期天中间件的十大优越性(1)应用开发:从分析了100个关键应用系统中的业务逻辑程序、应用逻辑程序及基础程序所占的比例;业务逻辑程序和应用逻辑程序仅占总程序量的30%,而基础程序占了70%,使用传统意义上的中间件一项就可以节省25%~60%的应用开发费用。如是以新一代的中间件系列产品来组合应用,同时配合以可复用的商务对象构件,则应用开发费用可节省至80%。

第29页,共175页,2024年2月25日,星期天中间件的十大优越性

(2)系统运行:没有使用中间件的应用系统,其初期的资金及运行费用的投入要比同规模的使用中间件的应用系统多一倍。

(3)开发周期:基础软件的开发是一件耗时的工作,若使用标准商业中间件则可缩短开发周期50%~75%。

(4)减少项目开发风险:研究表明,没有使用标准商业中间件的关键应用系统开发项目的失败率高于90%。企业自己开发内置的基础软件是得不偿失的,项目总的开支至少要翻一倍,甚至会十几倍。

第30页,共175页,2024年2月25日,星期天中间件的十大优越性

(5)合理运用资金:借助标准的商业中间件,企业可以很容易地在现有或遗留系统之上或之外增加新的功能模块,并将它们与原有系统无缝集合。依靠标准的中间件,可以将老的系统改头换面成新潮的Internet/Intranet应用系统。

(6)应用集合:依靠标准的中间件可以将现有的应用、新的应用和购买的商务构件融合在一起进行应用集合。

第31页,共175页,2024年2月25日,星期天中间件的十大优越性

(7)系统维护:需要一提的是,基础软件的自我开发是要付出很高代价的,此外,每年维护自我开发的基础软件的开支则需要当初开发费用的15%~25%,每年应用程序的维护开支也还需要当初项目总费用的10%~20%左右。而在一般情况下,购买标准商业中间件每年只需付出产品价格的15%~20%的维护费,当然,中间件产品的具体价格要依据产品购买数量及哪一家厂商而定。

第32页,共175页,2024年2月25日,星期天中间件的十大优越性

(8)质量:基于企业自我建造的基础软件平台上的应用系统,每增加一个新的模块,就要相应地在基础软件之上进行改动。而标准的中间件在接口方面都是清晰和规范的。标准中间件的规范化模块可以有效地保证应用系统质量及减少新旧系统维护开支。

(9)技术革新:企业对自我建造的基础软件平台的频繁革新是极不容易实现的(不实际的)。而购买标准的商业中间件,则对技术的发展与变化可以放心,中间件厂商会责无旁贷地把握技术方向和进行技术革新。第33页,共175页,2024年2月25日,星期天中间件的十大优越性

(10)增加产品吸引力:不同的商业中间件提供不同的功能模型,合理使用,可以让你的应用更容易增添新的表现形式与新的服务项目。从另一个角度看,可靠的商业中间件也使得企业的应用系统更完善,更出众。

第34页,共175页,2024年2月25日,星期天中间件的十大优越性中间件屏蔽了低层操作系统的复杂性,使程序开发人员面对一个简单而统一的开发环境,减少程序设计的复杂性,将注意力集中在自己的业务上,不必再为程序在不同系统软件上的移植而重复工作,从而大大减少了技术上的负担。

中间件带给应用系统的不只是开发的简单、开发周期的缩短,也减少了系统的维护、运行和管理的工作量,还减少了计算机总体费用的投入。由于采用了中间件技术,应用系统的总建设费用可以减少50%左右。在网络经济大发展、电子商务大发展的今天,从中间件获得利益的不只是IT厂商,IT用户同样是赢家,并且是更有把握的赢家。

第35页,共175页,2024年2月25日,星期天中间件的一个技术性的分类

什么是通信

根据参与通信的实体来分类。演变过程:终端与主机通信——实体是硬件盒;进程与进程通信;客户程序和/或对象与对象通信;消息与消息队列通信。通信实体演变得越来越小、越来越抽象、越来越多。第36页,共175页,2024年2月25日,星期天中间件的一个技术性的分类

什么是通信

可以看出这是分层。对象位于进程之中,进程位于硬件盒内,支撑整个体系的是硬件层到硬件层的通信。这也反映在网络协议中:IP是硬件与硬件的通信,TCP是进程与进程的通信,IIOP是对象与对象的通信。第37页,共175页,2024年2月25日,星期天中间件的一个技术性的分类

什么是通信

对于建立一个分布式系统来说,分层是一个基本的概念。TCP/IP基本上有4层:物理层——线路、无线电波以及各种各样的在网络上连接两个硬件盒的“绳子”。数据链路层——在网络上相邻盒之间的协议。网络层——允许通过多种硬件盒发送消息以到达在网络上的任何机器的协议。IP。传输层——允许一个硬件盒中的进程创建和使用与另一个硬件盒中的进程的一个网络会话的协议。TCP。第38页,共175页,2024年2月25日,星期天中间件的一个技术性的分类

什么是通信

分层的基本思想是,每一层使用它的下一层发送和接收消息。每一层都有一个协议。因为每一层都有一个定义十分规范的行为,所以系统工作良好。典型的中间件软件开始于TCP/IP层之上。第39页,共175页,2024年2月25日,星期天中间件的一个技术性的分类

它们如何通信

每一层都有一个协议,中间件功能的本质是它们的协议。协议分为两个主要的类型:会话协议和非会话协议。多数中间件协议是会话协议,会话协议可以根据谁是会话的发起者分类。可以分为三种情形,分别是多对一、一对一、一对多会话协议。第40页,共175页,2024年2月25日,星期天中间件的一个技术性的分类

它们如何通信

第41页,共175页,2024年2月25日,星期天中间件的一个技术性的分类

它们如何通信

客户/服务器:客户端发起对话,可以有多个客户对一个服务器对话。通常客户继续控制对话。客户发送一个消息,得到一个或者多个应答。服务器不做任何事情,直到下一个客户消息到达。这就是客户问而服务器答的情形。第42页,共175页,2024年2月25日,星期天中间件的一个技术性的分类

它们如何通信

在对等(peertopeer)协议中双方的地位是平等的。任何一方都可以发起一个会话。TCP就是一个对等协议。对等协议也被用于E-mail和相互间通信的目录服务器。第43页,共175页,2024年2月25日,星期天中间件的一个技术性的分类

它们如何通信

推协议除了是服务器发起消息外,有点像客户/服务器协议。可以被称作服务器/客户技术。最著名的“推”协议的例子位于发布和订阅工具之中。第44页,共175页,2024年2月25日,星期天中间件的一个技术性的分类

它们如何通信

基层的协议是非会话网络协议,如IP,它们具有极小完整性。这些协议的设计理念就是快,它们必须依赖于高层提供的完整性。对于语音与视频通信,与数据质量相比,时效性更重要。而对于数据传输来说,恰恰相反,完整性就是一切。第45页,共175页,2024年2月25日,星期天中间件的一个技术性的分类

它们如何通信

事务和信息检索中间件一定要:无消息丢失无消息接收顺序错误无消息讹误无消息重复第46页,共175页,2024年2月25日,星期天中间件的一个技术性的分类

它们如何通信

如果没有任何会话的概念,就不能检测到消息的丢失或者重复,这就意味着中间件协议几乎肯定是基于会话的。有些网络技术不满足这样的要求,必须用中间件弥补这些不足。如网络协议不能适应客户或者服务器方事务的完整性,对此需要一些附加的协议,如两阶段提交(准备阶段和提交阶段)或者消息队列。

第47页,共175页,2024年2月25日,星期天中间件的一个技术性的分类

它们如何通信

中间件协议真正的特征是协议与应用的集成。这有两层意思:中间件应有一个对于应用结构使用很方便的协议——如:客户/服务器或者队列。中间件可以实现附加的应用层集成,如两阶段提交。第48页,共175页,2024年2月25日,星期天中间件的一个技术性的分类

什么是接口

接口分为两个基本类型,分别称为基于API(ApplicationProgramInterface)和基于IDL(Interface

Description

Language)。一个API对使用中间件来说,是一组固定的过程调用。IDL是一个独立的语言,它独立于程序的其余部分定义接口。基于IDL的应用有编译时的灵活性;基于API的中间件有运行时的灵活性。第49页,共175页,2024年2月25日,星期天中间件的一个技术性的分类

什么是接口

在基于API的中间件中,有许多不同的接口风格。一种可能的分类方法是:基于消息的:API有一个消息和消息类型。服务器根据消息类型决定路由消息的路线。基于命令语言的:命令被编码成语言。典型的例子是远程数据库访问,命令语言是SQL。基于操作调用的:操作调用的建立是通过一系列中间件过程调用来实现的。CORBA和COM的解释性接口就是这样。第50页,共175页,2024年2月25日,星期天中间件的一个技术性的分类

根据在系统中所起的作用和采用的技术不同分类中间件

大致划分为以下五种:数据库中间件(DM,DatabaseMiddleware)远程过程调用中间件(RPC,RemoteProcedureCall)面向消息中间件(MOM,MessageOrientedMiddleware)事务处理中间件(TPM,TransactionProcessingMonitor)基于对象请求代理(ORB,ObjectRequestBroker)的中间件

第51页,共175页,2024年2月25日,星期天数据访问技术(数据库中间件)

提供直接访问不同数据源的手段,而不必改变应用层的程序,譬如大家熟悉的ODBC、JBDC、JDO、ADO这些数据标准接口。数据库中间件在所有的中间件中是应用最广泛,技术最成熟的一种。第52页,共175页,2024年2月25日,星期天数据访问技术(数据库中间件)

数据访问技术迫使在网络上以大的开销去执行最简单的命令。对事物处理来说,这不是一个好的解决方案。大多数数据库供应商支持一个称为存储过程的功能,可以使用远程数据库访问技术调用存储过程,这样就把远程数据库访问转换为一个RPC形式,但是,两者之间有显著的不同之处。第53页,共175页,2024年2月25日,星期天远程过程调用(RPC,RemoteProcedureCall)

第54页,共175页,2024年2月25日,星期天远程过程调用(RPC,RemoteProcedureCall)IDL(InterfaceDefinitionLanguage,接口定义语言)

IDL产生客户占位程序(stub)和服务器构架(skeleton),它们是程序块,被编译和连接到客户机和服务器程序。占位程序的用途是将参数转换为一个比特串,并在网络上发送消息。构架获得消息,把消息又转换回参数,并调用服务器。

第55页,共175页,2024年2月25日,星期天远程过程调用(RPC,RemoteProcedureCall)

远程过程调用是另外一种形式的中间件,它在客户/服务器计算方面,比数据库中间件又迈进了一步。

RPC的灵活特性使得它有比数据访问技术更广泛的应用,它可以应用在更复杂的客户/服务器计算环境中。远程过程调用的灵活性还体现在它的跨平台性上面,它不仅可以调用远端的子程序,而且这种调用是可以跨不同操作系统平台的,而程序员在编程时并不需要考虑这些细节。第56页,共175页,2024年2月25日,星期天远程过程调用(RPC,RemoteProcedureCall)

RPC也有一些缺点,主要是因为RPC一般用于应用程序之间的通信,而且采用的是同步通信方式,因此对于比较小型的简单应用还是比较适合的,因为这些应用通常不要求异步通信方式。但是对于一些大型的应用,这种方式就不是很适合了,因为此时程序员需要考虑网络或者系统故障,处理并发操作、缓冲、流量控制以及进程同步等一系列复杂问题。第57页,共175页,2024年2月25日,星期天基于消息的中间件技术(MOM)MOM提供一个异步消息传送机制。并且在任何时刻都可以将消息进行传送或者存储转发,这也是它比远程过程调用更进一步的原因。另外消息中间件不会占用大量的网络带宽,可以跟踪事务,并且通过将事务存储到磁盘上实现网络故障时系统的恢复。当然和远程过程调用相比,消息中间件不支持程序控制的传递,不过这种功能和它的优势比起来却是无关紧要的。

消息中间件适用于需要在多个进程之间进行可靠的数据传送的分布式环境。随着JMS(JavaMessageService)的兴起,MOM产品的应用也变得更为广泛。第58页,共175页,2024年2月25日,星期天基于消息的中间件技术(MOM)

MOM的发送机制

第59页,共175页,2024年2月25日,星期天基于消息的中间件技术(MOM)

消息队列是程序与队列之间的通信。中间件负责将消息从一个队列传递到另一个队列。它确保无论网络发生了什么,消息最终到达目的地,而且,仅有一个消息拷贝放入目标队列中。第60页,共175页,2024年2月25日,星期天基于消息的中间件技术(MOM)

队列有名字队列独立于程序消息可以在队列中等待队列可以存放到磁盘上队列可以是一个资源管理程序和一个事务管理程序的合作。有些消息队列系统可跨越不同类型的网络第61页,共175页,2024年2月25日,星期天基于消息的中间件技术(MOM)

消息队列是一个端到端的中间件,而不是客户机/服务器中间件。一个消息管理器可以容纳许多队列,其中一些是发送队列,另一些是接收队列。第62页,共175页,2024年2月25日,星期天交易处理监控器(事务处理中间件)

TP监控器(TransactionProcessingMonitors)作为一个中间件,是现代应用服务器的锥形。交易(Transaction),又称之为事务。事务处理中间件是一种复杂的中间件产品,是针对复杂环境下分布式应用的速度和可靠性要求而实现的。它给程序员提供了一个事务处理的API,程序员可以使用这个程序接口编写高速而且可靠的分布式应用程序——基于事务处理的应用程序。交易处理中间件的核心作用是保证分布式计算环境中各节点交易处理结果的一致性,及时的交易响应时间,使整个系统达到高吞吐率,7×24小时的不间断运行。常见的功能包括全局事务协调、事务的分布式两段提交、资源管理器支持、故障恢复、高可靠性、网络负载平衡等等。第63页,共175页,2024年2月25日,星期天应用服务器

应用服务器是一个软件开发平台,除可以开发独立的应用系统外,服务器也集成了各种整合技术。此外,很多厂商还专门开发了许多特制的适配器或连接器,因此,利用应用服务器做整合平台,也是目前很多企业考虑的选项之一。第64页,共175页,2024年2月25日,星期天PortalServer

Portal:门户

不同于传统网站,是一种先进的具有全新整合方式的应用服务网站,用于从其他资源和服务系统中获取数据和服务,并整合在一个网页窗口中,统一展示给用户。而传统网站只能在网页中罗列一些数据的链接或提供服务网站的链接。PortalServer:门户服务器

PortalServer是一种用于构建具体新型门户网站的门户构建与服务平台。它通过其中含有的Portal组件为用户提供各种各样的信息和内容。它本身具有很强的二次开发能力,支持MVC开发模式。第65页,共175页,2024年2月25日,星期天对象中间件

对象中间件的概念

对象中间件是基于对象请求代理的中间件。对象请求代理是近年来才发展起来的一项新技术,它可以看作和编程语言无关的面向对象的RPC应用,被视为从面向对象过渡到分布式计算的强大推动力量。从管理和封装的模式上看,对象请求代理和远过程调用有些类似,不过对象请求代理可以包含比远过程调用和消息中间件更复杂的信息,并且可以适用于非结构化的或者非关系型的数据。第66页,共175页,2024年2月25日,星期天对象中间件

对象中间件的概念

对象中间件相当于软总线,能使不同软件交互访问。为软件用户及开发者提供一种即插即用的互操作性,就象现在使用集成块或扩展板装配计算机一样。随着对象技术与分布式计算技术的发展,两者相互结合形成了分布对象计算,并发展为当今软件技术的主流方向。第67页,共175页,2024年2月25日,星期天对象中间件

对象中间件的概念

对象请求代理(ObjectRequestBroker)是这个模型的核心组件。它的作用在于提供一个通信框架,透明地在异构的分布计算环境中传递对象请求。定义异构环境下对象透明发送请求和接收响应的基本机制,是建立对象之间client/server关系的中间件。ORB使得对象可以透明地向其他对象发出请求或接受其他对象的响应,这些对象可以位于本地也可以位于远程机器。ORB拦截请求调用,并负责找到可以实现请求的对象、传送参数、调用相应的方法、返回结果等。第68页,共175页,2024年2月25日,星期天对象中间件

对象中间件的概念

目前,工业级应用领域有三种请求代理结构:OMG的CORBA、Sun的EJB以及微软的COM+。这三种标准相互竞争,而且有很大的区别,这在一定程度上阻碍了对象请求代理中间件的标准化进程。第69页,共175页,2024年2月25日,星期天对象中间件技术COM+

1COM+技术概述

1.1COM+技术的发展历程

1.2微软分布式网络应用体系结构WindowsDNA

1.3COM+基本结构

1.4COM+主要特点

2构件对象模型COM/DCOM基础

2.1

COM基本概念

2.2

COM构件与客户机之间的通信机制

2.3

COM的实现

2.4

COM的动态激活机制

–自动化

2.5分布构件对象模型DCOM

第70页,共175页,2024年2月25日,星期天对象中间件技术COM+3COM+构件新特性

3.1COM+编程模型

3.2代理进程和对象周境

3.3即时激活机制(JustInTimeActivation,简称JITA)

3.4COM+构件的生成周期及IObjectControl接口

3.5COM+目录(COM+catalog)

3.6事务管理

3.7基于角色的安全模型

4COM+系统及其服务

4.1

COM+系统

4.2

COM+系统服务第71页,共175页,2024年2月25日,星期天对象中间件技术COM+

COM+技术概述(COM+技术的发展历程)COM(ComponentObjectModel)起源于OLE(ObjectLinkingandEmbedding,对象连接和嵌入);当时的OLE使用一种称为动态数据交换(DynamicDataExchange,简称DDE)机制来支持程序之间的通信,而DDE建立在Windows消息机制基础上,稳定性和效率都很差;COM定义了客户与构件之间互操作的标准,包括规约与实现两部分。

-规约部分定义了构件之间的通信机制,这些规约不依赖于任何特定的语言和操作系统。

-实现部分即COM库,为COM规约的具体实现提供一些核心服务。

以COM技术为基础的OLE后改名为ActiveX。第72页,共175页,2024年2月25日,星期天对象中间件技术COM+

COM+技术概述(COM+技术的发展历程)

随着NT4.0的发布,COM技术需要延伸到分布计算环境,这就产生了所谓的DCOM(DistributedCOM,分布构件对象模型)。

DCOM用网络协议来代替本地进程之间的通信,并针对分布环境提供了一些新的特性,例如位置透明、网络安全性、跨平台调用等。第73页,共175页,2024年2月25日,星期天对象中间件技术COM+

COM+技术概述(COM+技术的发展历程)

COM/DCOM技术为基于构件的软件开发提供了基础。但是,如果用它来开发企业级应用系统,显然还需要功能强大的基础设施,这些基础设施将为构件提供基本的运行和部署环境。为了满足企业级应用的需求,微软公司推出了一种微软事务服务器(MicrosoftTransactionServer,简称MTS)。

MTS把应用系统的客户程序、应用构件和各种资源有机结合起来,弥补了COM/DCOM的不足,为分布式企业应用提供了一种服务器端的构件运行和部署环境。

MTS是从NT4.0+SP4的OptionPack开始,随Windows操作系统免费提供的。

第74页,共175页,2024年2月25日,星期天对象中间件技术COM+

COM+技术概述(COM+技术的发展历程)随着因特网应用的日益广泛,企业级应用的体系结构越来越重要。为了使Windows真正成为企业应用平台,微软公司又推出了WindowsDNA(DistributedinterNetApplicationsArchitecture,分布式网络应用体系结构)。WindowsDNA是一个完整的、多层的新一代企业应用体系结构,它包含工具、数据库、操作系统、编程模型和应用服务等。第75页,共175页,2024年2月25日,星期天对象中间件技术COM+

COM+技术概述(COM+技术的发展历程)在新的企业应用体系结构下,微软公司希望进一步把COM、DCOM和MTS统一起来,形成真正适合于企业级应用的构件技术,这就是COM+。COM+仍然以COM/DCOM为基础,包含了MTS。

COM+是一种中间件技术的规约,其要点是提供建立在操作系统上的、支持分布式企业级应用的“服务”。

COM+是在20世纪末随着Windows2000发布才面世的。第76页,共175页,2024年2月25日,星期天对象中间件技术COM+

COM+技术概述(微软分布式网络应用体系结构WindowsDNA)WindowsDNA是一个服务器端的开发平台,包含了以下产品:WindowsNT/2000:操作系统,为所有微软公司技术提供运行环境和支持。DCOM:支持分布式构件的核心技术。MSMQ(MicrosoftMessageQueue):消息队列产品,支持构件间的异步通信。MTS(MicrosoftTransactionServer):管理构件的应用服务器。MicrosoftWolfpack:支持集群服务器的软件。MicrosoftSQLServer:一个关系型数据库管理系统。MicrosoftIIS(InternetInformationServer):Web服务器。MicrosoftManagementConsole:部署和管理工具。COM+技术是以上产品(尤其是DCOM、MTS、还有MSMQ的一部分)的相互结合。第77页,共175页,2024年2月25日,星期天对象中间件技术COM+

COM+技术概述(COM+基本结构

)COM+COM+目录负载平衡驻留内存数据库对象池新的事件模型构件管理和部署JIT激活MTS基于接口的编程模型基本的构件服务远程支持分布式构件服务DCOM事务支持资源分发管理安全模型易于管理第78页,共175页,2024年2月25日,星期天对象中间件技术COM+

COM+技术概述(COM+基本结构

)COM+的核心是改进的COM/DCOM和MTS的集成,但是COM+增加了一些非常重要的构件服务,比如负载平衡、驻留内存数据库、事件模型、队列服务等。COM+还提供了一个比MTS更好的构件管理环境COM+Explorer,用来设置COM+应用和COM+构件的属性信息。另外,COM+还支持所谓的申述式编程模型(declarativeprogrammingmodel),它允许开发人员以较通用的方式开发构件,而一些细节则留到部署时再确定。第79页,共175页,2024年2月25日,星期天对象中间件技术COM+

COM+技术概述(COM+主要特点

)(1)真正的异步通信

COM+底层提供了队列构件服务,允许客户和构件进行异步通信。

(2)事件服务新的事件机制利用系统服务简化了事件模型,避免了COM可连接对象机制的琐碎细节,使事件源和事件接收方实现事件功能更加灵活。(3)灵活性动态负载平衡以及驻留内存数据库、对象池等系统服务为COM+的灵活性提供了技术基础。(4)可管理和可部署性

COM+的申述式编程模型和构件管理环境支持应用系统在开发完成后的管理和部署。(5)易于开发

COM+开发模型比以前的COM构件开发更为简化。

第80页,共175页,2024年2月25日,星期天对象中间件技术COM+

COM/DCOM基础(COM基本概念)(1)全局唯一标识符(GloballyUniqueIdentifier,简称GUID)

GUID是一个128位整数,可用来唯一地标识COM对象或接口。GUID来源于开放软件基金会(OpenSoftwareFoundation,简称OSF)采用的通用统一标识符(UniversallyUniqueIdentifier,简称UUID),UUID被定义为分布式计算环境(DistributedComputingEnviorment,简称DCE)的一部分,主要用于标识远程过程调用(RemoteProcedureCall,简称RPC)通信的双方。(2)COM对象和COM构件在COM规约中,“构件”和“对象”经常混淆,所谓COM对象是指符合COM规则的CoClass(ComponentClass,构件类)的实例。每一个COM对象都有一个GUID,称为CLSID(CoClassID)。

COM构件是指一组以编译后的形式提供一组功能的COM对象。COM构件独立于具体编程语言,以二进制形式(DLL或EXE)发布,可以独立升级,可以透明地在网络上被重新分配。第81页,共175页,2024年2月25日,星期天对象中间件技术COM+

COM/DCOM基础(COM基本概念)(3)COM接口

COM接口是COM对象显示出来的所有信息,是一组逻辑上相关的函数集合。每一个接口都有一个GUID,称为接口标识符(InterfaceIdentifier,简称IID)。

COM接口具有不变性。COM接口只允许单继承。一个COM对象可实现多个COM接口,这体现了COM对象多态性,这些接口由IUnknown接口来管理。(4)IUnknown接口

IUnknown是所有COM对象都必须实现的接口,其他接口都直接或间接继承IUnknown接口,它包含AddRef、Release和QueryInterface三个操作。

QueryInterface负责向客户提供接口查询功能。Addref和Release相结合,通过引用计数(referencecounting)的方法,提供对COM对象的生存周期进行管理的功能。第82页,共175页,2024年2月25日,星期天对象中间件技术COM+

COM/DCOM基础(COM基本概念)(5)接口定义语言

微软接口定义语言MIDL(MicrosoftInterfaceDefinitionLanguage)是定义COM接口的申述式语言,其目标是通过独立于具体编程语言的方式来定义接口。MIDL是基于开放软件基金会分布式计算环境中的远程过程调用的接口描述语言,常简称为IDL。

第83页,共175页,2024年2月25日,星期天对象中间件技术COM+

COM/DCOM基础(COM构件与客户机之间的通信机制)

客户机程序与进程内构件可通过直接函数调用进行交互。

COM采用了本地过程调用(LocalProcedureCall,简称LPC)作为进程间通信机制。本地对象本地构件桩stubCOM本地服务器进程客户机进程客户机

应用进程内对象进程内构件本地对象代理COMLPC第84页,共175页,2024年2月25日,星期天对象中间件技术COM+

COM/DCOM基础(COM的实现

)

(1)COM库

(COMlibrary)

COM库是COM标准的系统级实现,为COM对象的标识和创建、内存管理、构件程序的卸载等提供了一组标准接口和辅助函数。在Windows系统中,COM库主要包含在OLE32.DLL和RPCSS.exe文件中,COM库很多地方直接用到了Windows系统的一些特性,例如系统注册表、动态连接库等。

(2)系统注册表(windowsregistry)

系统注册表是一个全操作系统范围公用的信息仓库,它可用作客户程序、构件程序和COM库三者交换有关COM对象信息和接口信息的场所。第85页,共175页,2024年2月25日,星期天对象中间件技术COM+

COM/DCOM基础(COM的实现

)

(3)类工厂(classfactory)

类工厂是能够创建其他COM对象的特殊COM对象,支持一个特殊的接口IClassFacroty,为例化CoClass构件类提供了一种标准机制。显然,每一个COM对象类应该有一个相应的类工厂对象。IClassFactory接口中定义了两个重要的操作CreateInstance和LockServer。CreateInstance生成COM对象并返回所请求接口的指针。LockServer在内存中保持COM构件。

(4)COM服务器

COM服务器是指包含一个或多个COM对象类和相应的类工厂,能向客户提供服务的一个程序(EXE)或库(DLL)。第86页,共175页,2024年2月25日,星期天对象中间件技术COM+

COM/DCOM基础(COM的动态激活机制:自动化

)

(1)自动化对象

所谓自动化是一种允许高级语言(比如VBScript)使用构件的COM应用技术。自动化的核心是IDispatch接口,自动化对象就是实现了IDispatch接口的COM对象。(2)IDispatch接口

IDispstch是自动化对象必须实现的接口。IDispatch在IUnkown接口的基础上增加了GetIDsOfNames、GetTypeInfo、GetTypeInfoCount和Invoke等操作。第87页,共175页,2024年2月25日,星期天对象中间件技术COM+

COM/DCOM基础(COM的动态激活机制:自动化

)

(3)类型库和对象描述语言

对象描述语言(ObjectDescriptionLanguage,简称ODL)是IDL的扩充,用来描述COM对象的类型信息,一个COM对象的类型信息通常包括每个接口的类型信息(用interface或dispinterface关键字)和COM对象类的类型信息(用coclass关键字)。类型库(typelibrary)是IDL文件(*.idl)经编译后产生的一个二进制资源文件(*.tlb),包含COM服务器中COM对象和接口的信息。IDL文件中用library关键字描述类型库信息,包括类型库的全局唯一标识符(即LIBID)、类型库所使用的语言、版本等,也可用import关键字移入其他类型库信息。(4)ActiveX控件

ActiveX控件(ActiveXcontrol)是一种主要用于用户界面和Internet的轻量级COM构件,是一种自动化对象。ActiveX控件是从OCX(OLE控件)发展而来的。第88页,共175页,2024年2月25日,星期天对象中间件技术COM+

COM/DCOM基础(DCOM基础)

DCOM是COM的进一步扩展。DCOM用网络协议来代替本地进程之间的通信,并针对分布环境提供了一些新的特性,例如位置透明、网络安全性、跨平台调用等。DCOM的分布功能依靠远程过程调用实现。第89页,共175页,2024年2月25日,星期天对象中间件技术COM+

COM+构件新特性

(COM+编程模型

)简单地说,COM+构件就是COM构件加上一些规则和实现几个接口。COM+编程模型主要有三个原则:(1)COM+构件建成COMDLL。(2)COM构件要符合基本编程和资源分配规则。主要有:

-为单个独立客户机编程,不必考虑多用户,因为COM+会处理多用户。

-构件需要资源(如数据库连接)时,不要过早请求。

-尽早释放资源。

-构件本身不必保持状态,使COM+能更有效地管理资源。(3)COM+构件要利用COM+API与COM+交互。第90页,共175页,2024年2月25日,星期天对象中间件技术COM+

COM+构件新特性

(代理进程和对象周境

)(1)代理进程(surrogateexecutable)

MTS构件和COM+构件需要以DLL形式实现,DLL形式实现进程内构件,这样就很难生成多用途构件,既在MTS中运行,又作为独立服务器端进程外构件。为此,微软公司提出代理进程的概念,负责装载并提供COM+构件运行的周境(context)。(2)对象周境(objectcontext)

COM+的周境是指共享同一套运行要求的对象集合。由于不同的对象类可能使用了不同的部署信息,所以一个进程通常包含一个或多个周境,这些周境的部署互不兼容。所有无部署信息的对象都驻留在调用方的周境中。每一个周境都有一个对象,即对象周境,运行在此周境中的对象可通过CoGetObjectContextAPI函数得到此对象周境,利用对象周境的IObjectContext接口可以访问到周境的属性信息。第91页,共175页,2024年2月25日,星期天对象中间件技术COM+

COM+构件新特性

(代理进程和对象周境

)(3)对象周境的IObjectContext接口

每一个COM+构件对象都有相应的对象周境(或称对象描述表),对象周境提供IObjectContext接口(MtxAS.dll或ComSvcs.dll中实现),COM+构件对象通过该接口与COM+通信。

(4)截取(intercept)

COM+系统可以在创建COM+对象时为其分配一个对象周境,这种技术被称为截取。

第92页,共175页,2024年2月25日,星期天对象中间件技术COM+

COM+构件新特性

(即时激活机制JITA

)

即时激活:JustInTimeActivation,简称JITA。

JITA是COM+保持资源有效利用的一种动态对象激活机制,它是COM+的核心机制。对象只有在真正需要时才被激活,如果对象一旦不用,COM+就释放它,并在客户再次需要时由COM+重新激活。第93页,共175页,2024年2月25日,星期天对象中间件技术COM+

COM+构件新特性

(COM+构件的生成周期及IObjectControl接口)(1)COM+构件的生成周期

COM+构件的生成周期包括创建(create)、激活(activate)、去活(deactivate)、删除(destroy)。客户机创建对象时,COM创建但不激活对象,对象在第一次方法调用时被激活。对象去活的时间取决于对象是否支持事务。如果事务性对象调用SetAbort或SetComplete,则方法调用完成后立即去活,即使客户仍引用这个对象。下次客户调用这个对象时,COM+自动重新激活这个对象,对客户这是透明的。非事务性对象则保持活动状态,直到客户释放该对象的所有引用。第94页,共175页,2024年2月25日,星期天对象中间件技术COM+

COM+构件新特性

(COM+构件的生成周期及IObjectControl接口)(2)IObjectControl接口

COM+构件可实现IObjectControl接口,该接口有两个方法,即激活和去活,COM+分别在对象激活和去活时自动调用它们。因此,我们可以利用这两个方法做激活前的准备工作和去活前的扫尾工作,其作用相当于C++和Java的构造方法和析构方法。请注意,COM+构件不能访问IObjectControl接口,只有COM+运行时周境可以调用该接口的方法。

IObjectControl接口还有一个名为CanBePooled的方法,对象通过该方法通知COM+运行时周境,它是否放在对象池中供复用。

第95页,共175页,2024年2月25日,星期天对象中间件技术COM+

COM+构件新特性

(COM+目录)COM和MTS把构件的所有部署信息都保存在Windows的系统注册表中。而COM+则把大多数的构件信息保存在一个新的数据库中,称为COM+目录。

COM+目录统一了COM和MTS的注册模型,并提供了一个专门针对构件的管理周境。

COM+目录信息既可以通过COM+管理程序检查或设置,也可以在程序中通过COM+提供的一组COM接口来访问。

第96页,共175页,2024年2月25日,星期天对象中间件技术COM+

COM+构件新特性

(事务管理

)COM+构件可有以下几种事务特性:

1)要求事务。对象必须运行在一个事务周境中。

2)要求一个新的事务。每个事务都运行在一个单独的事务周境中。

3)支持事务。对象可以运行在一个客户的事务周境中,或者创建一个新的事务周境。

4)不支持事务。对象不运行在事务周境中。

COM+构件的事务特性可以由COM+管理程序来部署,并通过对象周境实现。通过对象周境,一个事务操作可以被提交、被取消或者禁止提交。第97页,共175页,2024年2月25日,星期天对象中间件技术COM+

COM+构件新特性

(基于角色的安全模型

)

COM+沿用MTS基于角色的安全模型。在开发阶段,开发人员负责定义各种角色,并且在实现构件功能时,只允许指定角色的用户才可以执行这些功能;在配置阶段,管理员负责为所有的角色指定有关的用户帐号,COM+允许达到方法级的安全控制。第98页,共175页,2024年2月25日,星期天对象中间件技术COM+

COM+系统及其服务(COM+系统)COM+系统是一个典型的分布式事务处理系统,主要由以下部分组成。

(1)COM+运行环境(COM+runtimeenvironment)即COM+构件容器,负责在服务器上执行、放置所有创建的COM+构件。

(2)COM+构件服务管理程序(COM+explorer)是Windows2000管理工具中的一部分,代替了MTS管理程序和DCOM配置程序,负责增加、删除COM+应用和COM+构件,设置COM+应用和COM+构件的属性信息,比如事务特性、安全特性等等。

第99页,共175页,2024年2月25日,星期天对象中间件技术COM+

COM+系统及其服务(COM+系统)

(3)COM+应用(COM+application)

对应于MTS中的包(package),COM+称之为COM+应用(COM+aApplication),每一个COM+应用包含一个或多个COM+构件以及有关的信息。同一个COM+应用中的COM+构件共享同一个进程,共享同一套安全角色定义。第100页,共175页,2024年2月25日,星期天对象中间件技术COM+

COM+系统及其服务(COM+系统)

(4)资源分配程序(resourcedispensers)资源分配程序分配数据库连接、网络连接、对象、内存块等资源。资源分配程序主要是通过提供资源池(resourcepool)功能来管理资源。最常用的有ODBC资源分配程序和共享属性管理程序(SharedPropertyManager,简称SPM)。(5)分布式事务协调程序分布式事务协调程序(DistributedTransactionCoordinator,简称DTC)是Windows的一个后台服务,它用两阶段提交的方式实现事务的功能,提供可伸缩、健全的分布式事务管理服务。第101页,共175页,2024年2月25日,星期天对象中间件技术COM+

COM+系统及其服务(COM+系统服务)

COM+封装了服务器端构件系统平台的复杂性,以系统服务的形式为多构件应用系统提供基本功能。

(1)COM+队列化构件(QueuedComponent,简称QC)

QC是COM+的关键特性,它基于微软消息队列服务

(MicrosftMessageQueueServer,简称MSMQ),提供了一种异步的,基于消息的运行方式。

(2)COM+事件模型

COM+事件模型改进了COM的可连接对象机制,它采用了多通道的发布/订阅(multicastingpublish/subscribe)事件机制,允许多个客户去“订阅”由各种构件对象“发布”的事件。第102页,共175页,2024年2月25日,星期天对象中间件技术COM+

COM+系统及其服务(COM+系统服务)(3)负载平衡(loadbalancing)负载平衡是分布式应用的一种高层次需求,使用DCOM和MTS的配置特性能实现初步的静态负载平衡,但是不能实现动态负载平衡,而COM+提供了一个负载平衡服务,它可以以透明方式实现动态负载平衡。(4)驻留内存数据库(InMemoryDataBase,简称IMDB)

IMDB是一个驻留在内存中的支持事务特性的数据库系统,它可以为COM+应用程序提供快速的数据访问。

(5)

COM+对象池。对象池是指把对象的实例保留在内存中,以便当客户请求创建对象时可以马上用到这些对象。对象池如同IMDB一样,完全是出于效率考虑,用于建立大型的应用系统。

第103页,共175页,2024年2月25日,星期天.NET

Microsoft.NET是微软新的因特网战略。.NET起初被称为NGWS。NGWS-下一代视窗服务(NextGenerationWindowsServices)第104页,共175页,2024年2月25日,星期天.NET

Microsoft.NET战略在2000年6月由微软官方正式发布:.NET是微软的新的因特网和Web战略.NET不是一个操作系统.NET是一个基于因特网和WEB的全新架构.NET将软件作为WebServices(提交给用户).NET是用于通用服务(universalservices)的一种构架.NET可运行于任何平台上的任何浏览器中.NET基于最新的Web标准第105页,共175页,2024年2月25日,星期天.NET

.NET因特网标准.NET被构建于以下因特网标准之上:HTTP,因特网应用程序之间的通信协议XML,用于在因特网应用程序之间交换数据的格式SOAP,用于请求WebService的标准格式UDDI,用于搜索和发现WebService的标准第106页,共175页,2024年2月25日,星期天.NET

.NET框架(.NETFramework).NET框架是为微软新的.net平台服务的基础结构。.NET框

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论