DCOM的分布式体系结构及实现机制分析_第1页
DCOM的分布式体系结构及实现机制分析_第2页
DCOM的分布式体系结构及实现机制分析_第3页
DCOM的分布式体系结构及实现机制分析_第4页
全文预览已结束

下载本文档

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

文档简介

1、第六讲 DCOM的分布式体系结构及实现机制分析本讲从远程调用角度,将DCOM体系结构分成基本编程构架、远程构架和线路协议构架三层,并分析了它们的工作机制和实现策略。1引言DCOM(Distributed Component Object Model)是微软提出的一种分布式组件对象模型,它是COM在分布式计算方面的扩展,使COM跨越机器的边界,进一步应用于局域网、广域网,以及Internet上。为了适应网络环境,DCOM主要的任务是在COM的基础上,实现远程调用,并采取一些策略,以适应和优化网络环境。2DCOM的体系结构DCOM在标准的分布式计算环境(DCE)RPC引擎之上,拥有DCE提供的通用

2、服务集,如远程过程调用(RPC:Remote Procedure Calls),命名,线程管理,以及安全性等。DCOM对DCE RPC进行面向对象的扩展,故又称对象RPC(ORPC)。DCOM运行于网络的最高层,相当于ISO OSI中的应用层,它具有协议无关性,可以使用TCP/IP、UDP、IPX/SPX,以及NetBIOS等底层面向连接或无连接协议。从远程调用角度,将该层网络协议细分成三层,分别为基本编程构架、远程构架和线路协议构架,三层紧密结合形成一个完整的体系结构(如图1所示)。2.1基本编程构架虽然DCOM组件与客户是跨机器通信,但对于客户程序而言,服务组件所处的位置是透明的。因此,编

3、程者不必编写任何处理远程调用的代码,也就是说客户程序不必知道服务组件运行于本地或远程机器上,只须在配置的组件信息中加入或在程序代码中指定远程组件所在服务器的名字;而且可以充分利用基于COM的应用、组件、开发工具以及知识来创建DCOM组件。当客户创建组件对象时,只要知道对象的CLSID,并调用CoCreateInstance或CoGetClassObject函数,COM运行库就会根据组件配置信息中提供的远程服务器名字,通过下面的两层构架,在远程服务组件中创建类工厂对象,进而创建所要的组件对象。2.2远程构架DCOM将COM的进程透明性拓展为位置透明性,该层结构沿袭了COM中的代理/存根和列集/散

4、集机制。当客户程序调用组件对象的成员函数时,它实际上是调用了本进程内代理对象的对应成员函数。代理对象负责把客户的参数从堆栈中读出,并写到一块内存缓冲区中,以便送到下一层进一步封装成为可在网络上传输的数据包,这也就是所谓的列集。与列集过程相对应的过程是散集,当服务器存根从下层网络中接收到列集的数据包之后,将包中的参数解译出来并用这些数据在本地内存中建立一个新堆栈,使其工作环境与客户端的工作环境相一致。这样,一旦堆栈被建立起来,存根代码就可以利用这些参数直接在进程内调用组件对象成员函数。当调用返回时,存根从堆栈中将需要输出的参数进行列集处理,通过下层网络传输到客户端,而客户的代理对象则把结果通过散

5、集之后返回给客户程序。2.3线路协议构架这一层提供了从服务端到客户端之间数据传输的通路,使基于DCOM的分布式远程调用得以实现,并且这种基于DCOM的客户/服务器结构具有对等性。231 服务控制管理器(SCM)SCM是COM库的部分,其程序名为rpcss.exe。在基本编程结构中,编程者表面上通过调用对象创建函数创建远程对象,但实际上,创建函数得到远程对象的位置信息后,就把对象创建以及建立客户与对象的连接任务交给了SCM。客户SCM与服务SCM之间通过RPC连接。例如,当客户SCM想激活远程组件时,它首先检查本机注册表中的HKEY_CLASSES_ROOTCLSID<CLASS ID G

6、UID>键的APPID命名值,如果找到了APPID命名值,就在注册表中的HKEY_CLASSES_ROOTAPPID<App ID GUID>部分寻找相同的GUID。在这里可以获得指定组件在何处并如何激活的命名值信息,当请求远程计算机上的对象时,客户SCM通过RPC通道访问由RemoteServerName值指定的远程服务器SCM。服务SCM根据服务器注册表上的有关信息,在本机上定位并加载组件。232 RPC通道RPC通道是客户程序与服务组件相互传递数据(包括参数和有关辅助信息)的真正通道。它属于DCERPC规范中的内容,其工作过程可用图2来表示。从图中可以看出客户应用程序并

7、非真正调用服务进程,而是调用本地代理,它能从客户的地址空间中取得请求参数,将参数转换为能在网络上传输的NDR(Network Data Representing)格式,最后调用运行库中的相应功能将请求以及参数通过网络送往服务器。而在服务器端,服务器运行库从网络中接收从客户端发来的请求,并调用服务存根的相应功能;接着服务存根从网络缓冲区中获得参数,并将参数转换为服务器能理解的格式;最后在服务进程内调用真正过程,到此远程过程就开始运行。当过程运行结束后,服务端以相同的方式将程序运行的结果传回客户端,一个完整的远程过程调用就完成。233 对象管理标识符解析器(OXID Resolver)OXID解析

8、器也象SCM一样,是COM库提供的一项服务,每一个支持DCOM的机器上都拥有OXID解析器。它的主要功能有:1) 存储本地客户连接到远程对象所需要的RPC绑定字符串。在这种特殊类型的字符串中包含诸如底层网络协议或运行组件所在服务器的网络地址等安全子系统信息。2) 负责发送和接收ping消息,客户端的OXID解析器向远程对象发送ping消息,通知远程对象本地还存在客户。而在服务端OXID解析器为本地运行的对象接收ping消息。在每台机器上,OXID解析器维护一个本地OXID表和同它们相关的RPC绑定字符串,当客户OXID解析器调用一个OXID时,OXID解析器首先检查本地OXID表,如果发现了这

9、个OXID,它立刻返回与之相关的RPC绑定字符串;如果没有发现这个OXID,它将通过RPC连接到服务器的OXID解析器,请求得到与该OXID相关的RPC绑定字符串,并返回客户端。客户OXID解析器将该串信息存入本地OXID表中,这样OXID解析器就能快速地为后来的其它客户解析该OXID。假设一个客户要从一个新的OXID得到相应的接口指针,其OXID的解析过程可归纳如下:1) 如果客户程序运行时发现目前的服务对象OXID是新的,它将请求本地OXID解析器为它解析该OXID。2) 如果客户OXID解析器也查不到该OXID,它将调用IOXIDResolver:ResolveOxid,请求服务OXID

10、解析器返回与该OXID相关的绑定字符串。3) 如果服务OXID解析器在本地OXID表中查到该OXID,则返回与之相关的绑定字符串,否则,它将访问服务进程,产生一个新的OXID表项以及相关的绑定字符串,并返回给客户OXID解析器。4) 客户OXID解析器在本地OXID表中储存了该OXID表项和相关的绑定字符串,以备后用,并返回该绑定字符串给客户进程。5) 客户进程将该绑定字符串与对象绑定起来,客户就可以调用对象成员函数了。234 pinging 机制客户端、服务端、网络的软硬件出错都可能导致远程调用的失败,甚至更严重的后果,DCOM为了确定客户是否存活,定义了pinging机制。它的方法是:服务

11、器周期性地复审它的远程连接表并向客户发一消息,询问客户是否还存活。如果客户仍旧正常操作,它就返回一个确认。如果服务器在设定时间周期内没有收到确认消息,则认为该客户已“死亡”,并将其引用释放。ping消息的发送将占用一定的带宽,导致太多不必要的网络通信。可以设想,在一个包含有成千上万个客户和组件的分布式环境中,网络容量很可能被要传输的ping消息所占据。为了减少这种网络通信,在Windows NT 4.0以上版本的环境中,可以利用客户端的OXID解析器来检测本地所有客户程序是否存活,然后每一台机器而不是每一个客户向服务器发送一个ping消息,这样客户OXID解析器就只发送一个ping消息给每一个

12、为本地客户服务的机器。为了进一步减少这种网络通信,DCOM程序员提出了ping集合的概念。DCOM不是给每一个客户程序使用的每一个对象都发一个单独的ping消息,它标识出在被ping的对象并将它们放入一个集合中。服务器第一次发送ping消息的时候,它将整个集合名单连同消息一并发出。然后,接下来的ping消息只发出ping集合的ID,连同一个加减原始ping集合的列表。这也就是所谓的delta pinging机制3、结束语以上从远程调用的角度将DCOM体系结构分成三层,并分别阐明了各层的工作机理。可见,DCOM远程调用机制为COM提供了一个分布式的计算环境,使得基于COM的应用系统具有更高的可伸缩性、可靠性、管理性、灵活性和健壮性。另一方面,DCOM使系统开发者不必关心网络协议等底层结构的细节,可以集中注意力在解决用户所需的问题上,而且还可以充分运用原有的面向COM的开发工具,开发环境以及概念、知识等,从而可以节约大

温馨提示

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

评论

0/150

提交评论