分布式组件对象模型dcom揭秘

分布式组件对象模型dcom揭秘

ID:30442610

大小:89.50 KB

页数:15页

时间:2018-12-30

分布式组件对象模型dcom揭秘_第1页
分布式组件对象模型dcom揭秘_第2页
分布式组件对象模型dcom揭秘_第3页
分布式组件对象模型dcom揭秘_第4页
分布式组件对象模型dcom揭秘_第5页
资源描述:

《分布式组件对象模型dcom揭秘》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、分布式组件对象模型DCOM揭秘传说中的COM,很难明,咬牙切齿…转载天极的一篇文章,说得稍微易懂点,但依然还是稀里糊涂,不懂…COM的基本要素首先要弄懂COM是怎样工作的。为什么这个工作是首要的呢?因为COM使用它自己专有的词汇。第二个原因是COM包含有不少的新概念。要掌握这些词汇和概念,最简单的其中一个方法是将COM对象和普通的C++对象作比较,并且比较它们的相似和不同之处。你还可以将COM的一些概念映射到标准的C++模型中去,这样就可以用你已经熟悉的东西来理解新概念。我们首先介绍一些COM的基本概念,接着,

2、你就可以很容易地理解后面的例子。一、类和对象假设你在C++中创建了一个称为xxx的简单类。它有几个成员函数,称为MethodA,MethodB和MethodC。每个成员函数可接收参数,并返回一个结果。该类的定义如下所示:classxxx{public:intMethodA(inta);intMethodB(floatb);floatMethodC(floatc);};在需要使用类的时候,你必须创建该对象的一个实例。实例是真实的对象;类只是定义。每个对象可作为一个变量(本地或者全局)创建,或者可使用new声明动态

3、地创建。new声明可动态创建变量并返回指向它的一个指针。你可通过该指针来调用成员函数,例如:xxx*px;//指向xxx类的指针px=newxxx;//创建对象px-MethodA(1);//调用方法deletepx;//释放对象你要明白到,COM使用相同的面向对象模型。COM拥有与C++对象一样的类、成员函数和实例。虽然你从来不会在一个COM对象上调用new方法,不过你必须在内存中创建它。你通过指针来访问COM对象,在你完成处理后,你必须释放它们。写COM的代码时,我们将不会使用上面的new和delete。虽

4、然我们将使用C++作为开发语言,不过我们将要使用全新的语法。COM是通过调用COMAPI来实现的,这些API提供创建和破坏COM对象的函数。以下就是一个用pseudo-COM代码写的COM程序例子:ixx*pi//指向toxxxCOM接口的指针CoCreateInstance(,&pi)//创建接口pi-MethodA();//调用方法pi-Release();//释放接口在这个例子中,我们将称类ixx是一个"接口"。变量pi是指向接口的一个指针。CoCreateInstance方法可创建一个ixx的实例。接口

5、的指针是用来作方法调用的。Release用来删除接口。为了突出该程序的要点,我故意忽略了CoCreateInstance的一些参数。CoCreateInstance可接收多个参数,每个参数都需要更深入的探讨才可以了解。现在,我们首先回过头来看看COM的一些主要方面。二、COM有什么不同在某种程度上,COM对象要比它们的同胞C++更复杂,从网络应用方面考虑,大多数的复杂性都是必要的。以下就是在设计COM时的4个基本要素:。C++对象通常都运行在同一进程空间中。COM对象可跨进程和跨计算机运行。COM方法可通过网络

6、调用。在一个进程空间中,C++方法的名字必须是唯一的,而COM对象的名字在整个世界中都是唯一的。COM服务器可以使用多种不同的语言和在不同的操作系统上编写,而C++对象通常都使用C++编写以下再谈一下COM和C++的这些不同对于编程者有何意义。COM可以跨进程运行在COM中,编程者可在其它的进程中或者网络中的任何机器上创建对象。虽然在许多情况下你都无需这样做,不过,这种可能性意味着你不能通过普通C++的new句法创建一个COM对象,通过本地的程序来调用它的方法也是不足够的。要创建一个COM对象,某些执行的实体(

7、一个EXE或者服务)将必须执行远程的内存分配和对象创建。这是一个非常复杂的任务。远程的含义是指在另一个进程内或者另一个进程上。这个问题是通过称为COM服务器的概念来解决的。它必须与客户端维持紧密的通信。COM方法可以通过网络调用如果你可以访问网络上某台机器,而你想要使用的某个对象的COM服务器已经被安装在该机器上,你就可以在那台机器上创建COM对象。当然,你必须要有相应的权限,并且那台机器上已经进行了正确的设置。由于你的COM对象并不一定在本机上,因此你需要一个方法来"指向"它,即使它存放在另一台机器的内存中。

8、在技术上,没办法做到这一点。不过它可以通过一个全新级别的对象来模拟。COM使用的其中一个方法是一个称为proxy/stub的概念,我们将会在后面更详细地讨论proxy/stubs。另一个重要的问题是在COM客户端和它的COM服务器间传送数据。数据在进程、线程之间或者一个网络上传送的时候,它就被称为"Marshalling"。proxy/stub负责为你维护Marshalling。COM

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。