1-21一.分布式计算概述1分布式计算技术。1.RPC2.CORBA3.XML4.WEB服务5.J2EE6.NET7.消息队列8.目录服务2COM1.COM历史2.COM结构3.COM特性2-211主流的分布式计算技术及规范3-211.1RPC第一个获得广泛认可的分布式计算技术是远程过程调用(RemoteProcessCallRPC)。使用RPC,客户应用程序可以调用在远程计算机上实现的C语言函数。对于远程过程调用的体系结构来说,ONCRPC(OpenNetworkComputingRPC)和DCE(OpenGroup’sDistributedComputingEnvironment)是主流标准。在RPC机制下,为了实现跨进程甚至跨机器的通讯,它采用了一种称为列集(marshaling)的方法,数据传输之前,先进行列集,然后通过网络协议传到通讯的另一端,读取数据时,先对数据进行散集(unmarshaling),它是列集的相反过程。Sun公司于1985年发行了它的RPC软件包的第一个版本。使用SunRPC最广泛流行的是NFS,即Sun的网络文件系统。在分布式计算领域,RPC更多地被用作其他高层的分布式计算技术的通讯基础,而不是单独地使用,但是,RPC所提出的一些概念,比如数据的列集与散集、认证与加密等,都被其他的技术所继承和发展。4-211.2CORBA分布式对象.OMG(ObjectManagementGroup)1991年1.01994年2.098年3.0ORB,OMGIDL,语言映射,存根与架构(stub&skeleton),动态调用接口(DynamicInvocationInterface),接口存储库(InterfaceRepository),实现存储库(ImplementationRepository),对象适配器(ObjectAdapter),ORB之间的互操作,(InteroperabilityBetweenORB)。客户stub服务器skeleton基本对象适配器BOAGIOPIIOPDSIDIIORBORB接口库实现库5-21ORB功能:(类比SCM)确定服务器位置,转换不同数据格式。为异构环境中的客户和服务器提供互操作性。它屏蔽了以下内容:1。对象位置2。对象的实现3。对象的状态(动态激活)4。对象的通讯机制(TCP/IP,管道,共享内存,LPC等)5。数据表示语言映射(类比COMIDL)OMG为IDL到C,C++,SmallTalk、Ada、Cobol,Java语言映射制订了标准。存根与架构(类比代理与存根)存根代表客户创建并发出请求,架构则把请求转交给CORBA实现。被静态地连接到客户和服务器上。动态调用(类比晚绑定,自动化接口)动态调用接口DII(DynamicInvocationInterface)动态架构接口DSI(DynamicSkeletonInterface)。支持动态调用过程,不是在编译时刻,而是在运行时刻。由ORB直接提供。接口存储库(类比类型库):负责对象的IDL接口定义的存储、分布和管理。客户在运行时用来获得所有注册过的组件的接口描述,它们所支持的方法以及参数。(方法签名)。是运行时的分布式数据库,包含了IDL定义的机器可读版本。6-21对象适配器:位于ORB的核心通讯服务之上,是ORB与对象实现之间的接口。代表服务器接受客户的服务器请求。它为实例化服务器对象,传递请求提供运行环境,它向实现存储库注册它所支持的类及其运行实例。实现存储库:是一个运行存储库,提供有关服务器支持的类,实例化的对象及其标识等。同时存储ORB的附加信息(安全,审计、等)2.0.标准。不同的ORB之间如何协作、通讯GIOP:GeneralInter-ORBProtocal:规定了ORB之间通讯的一组报文格式和公用数据表示(CDR)(二进制格式)IIOP:InternetInter-ORBProtocal:规定了GIOP消息如何在TCP/IP网络上交换。CORBA服务:命名服务,事件服务,通知服务,交易服务,事务服务。此部分内容参见《基于C++CORBA高级编程》MichiHenningSteveVinoski著,清华大学出版社。《CORBA原理及应用》朱其亮,郑斌。北京邮电大学出版社。7-211.3XML1969年IBM公司发明了第一种现代标记语言“通用标记语言”GML(GeneralizedMarkupLanguage),发展成为标准通用标记语言SGML(StandardGeneralizedMarkupLanguage)。1986年SGML被ISO接受为国际性的数据存储和交换的标准。SGML功能非常强大,扩展性极强,但非常复杂。它要求对数据的每一个字节都要加以说明。1996年,w3c设计一种新的扩展标记语言,XMLeXtensibleMarkupLanguage可扩展的标记语言。结合SGML的灵活性和强大的功能与HTML语言的简单性。XML是一种简单的自我描述的标记语言。1998年2月成为w3c的推荐标准。8-21XML是一种界定文本数据的简便而标准的方法,XML的标记用来说明所描述的概念,而属性则用来控制他们的结构。XML的数据描述机制意味着它将成为一种在Internet上共享信息的强大途径。XML能够在不同的用户和程序之间交换数据,而不论其硬件、软件平台如何。使用XML无须事先协调,它的自描述特性使得对于企业内部网和B2B应用的解决方案是一种有效的机制。起初XML的类型说明是用DTD(DocumentTypeDefinition)文档进行的,DTD最大的优点就是简练。缺点:1.DTD文档本身不是XML,需要另外一套语法,2.无法从原有类型定义新的类型,扩展性差。3.它不支持命名空间,DTD只能是一个过渡性质的工具。9-21W3C在1999年2月发布了(XMLSchemaDefinition)XSD.XSD协议提供了一种使用XML语言来定义数据类型的方法.XSD是一种特殊的XML,也是XML的一种应用,将XML的DTD类型定义重新按照XML语言的规范来定义。优点:1.XSD本身也是XML,应用程序可以以统一的方式来处理、解析它。只需要一套解析器.2.它可以为所有的环境所理解,并在它和环境语言中建立类型映射。能在异构的环境下顺利实现数据交换3.XSD有命名空间,给企业应用在Internet上发布提供了保障。4.使用XSD可以定义任意复杂的数据类型,足以涵盖主流开发语言如C++所能表达的数据类型,而且可以对现有的类型进行继承和扩展,定义新的类型.缺点:篇幅较长,有效载荷低.1.带宽的扩展2.类型定义文件使用的频率,唯一的弱点也可忽略不计。使用XSD可以扩展。10-211.4Web服务2000年5月,在Microsoft,IBM,Ariba等公司的推荐下,SOAP(SimpleObjectAccessProtocol)成为万维网协会的工作草案。SOAP的最终目的是在异构环境下的应用程序之间实现通讯。没有发明任何新技术的技术.(新技术导致的不兼容性.)SOAP=XML+HTTP.1.借助于XSD来表达数据类型,2.使用XML文档来封装数据和远程调用(RPC).SOAP明确地规定了对RPC的调用方式,RPC的请求和响应都用XML语言包装在SOAP文档中。3.推荐使用HTTP协议来传输数据。通讯双方只要能解析XML文档、支持HTTP协议即可以实现双方的数据交换、远程调用。缺点:性能较低.DCOM或CORBA可以顺利地甚至效率更高地实现RPC,但是SOAP的意义在于其统一性。11-21WSDL是一种基于XML的Web服务描述语言。WSDL文档是对一个Web服务的详细且准确的说明。包括接口所使用的数据类型,输入输出参数,实现此接口的端口,协议,服务器主机地址等等。WSDL是一个为众多厂商支持的标准。只要客户能解析XML文档,就可以理解用WSDL语言描述的远程对象的接口。从而可以正确地调用服务。(使用SOAP)COM和CORBA都使用IDL来进行接口描述。虽然有多种语言支持IDL,但是不幸的是DCOM和CORBA的IDL是不兼容的。这也是阻碍他们之间的互操作的原因之一。12-211.5JavaJ2EE核心概念Java虚拟机JDBC数据库EJB服务器方组件的标准。JavaServletWeb应用服务器端对象JSP动态Web页面JMSJavaMessageServices消息队列JavaAPIJavaMail基于Java电子邮件JNDIJavaNamingandDirectoryInterface访问任何类型的目录。JAXPJavaAPIforXMLParsingWebLogicBEAWebsphereEclipseIBMJBuilderBorland13-211.6.NET.NET框架是一种新的计算平台,它简化了在高度分布式Internet环境中的应用程序开发。.NET框架旨在实现下列目标:提供一个一致的面向对象的编程环境,而无论对象代码是在本地存储和执行,还是在本地执行但在Internet上分布,或者是在远程执行的..NET框架具有两个主要组件:1.公共语言运行库。公共语言运行库是.NET框架的基础。我们可以将运行库看作一个在执行时管理代码的代理,它提供核心服务(如内存管理、线程管理和远程处理),而且还强制实施严格的类型安全以及可确保安全性和可靠性的其他形式的代码准确性。2..NET类库.它是一个综合性的面向对象的可重用类型集合,我们可以使用它开发包含从传统的命令行或图形用户界面(GUI)应用程序到基于ASP.NET所提供的最新创新的应用程序(如Web窗体和XMLWebservices)在内的应用程序。Windows上的MSJAVA虚拟机.14-211.7消息队列消息队列是由SystemV引入的进程间通讯(IPC)的一种机制,在1993年由IEEE在标准IEEEStd1003.1中进行了标准化而成为POSIX标准的一部分。POSIX消息队列在单机范围内已成为通用的通讯标准。在Windows操作系统下,微软把消息队列扩展到网络上,称为MSMQ(MicrosoftMessageQueue)。MSMQ由一个独立的服务器来管理。它提供了一个完整的通讯平台,使得具有一定权限的,能够访问服务器的客户可以访问平台上的队列,从而在网络上实现数据通讯。MSMQ有一组基于COM的API,同时有实现MSMQ的COM对象:MSMQ和Windows操作系统以及Windows平台下的DCOM有密切的联系。MSMQ对象模型包括九个对象。MSMQQueueMSMQMessageMSMQQueueInfo等。微软对分布式消息队列的扩充由于受限于Windows操作系统,很多功能要通过DCOM来实现,因此在其它系统上扩展性和交互性受到很大约束。其他的消息队列如IBMMQSeries等.15-211.8目录服务关系数据库.优缺点.当对速度的要求很高时,当数据结构呈树状时等等。目录服务在速度,冗余和协议的标准化几个方面相比关系数据而言具有相当的优势。在目录服务的框架下,数据呈树状分布。每一个节点称之为一个对象,每个对象都必须有其独一无二的名称“识别名”(DistinguishedName,简称dn)。LDAP树中的任何对象由树中它上面的对象的单一属性加上它自己的一个附加属性组成。这些独立部分称为相对识别名(RelativeDistinguishedName,简称为rdn)目录服务在处理搜索时速度非常快。它进行了相当的优化来处理网络的快速查询。1988年,国际标准化组织(ISO,InternationalStandardsOrganization)和国际电信联盟(ITU,InternationalTelecommunicationsUnion)联合创建了目录信息格式标准和目录访问协议X.500。此标准定义在OSI协议栈上,X.500未能完全实现1