DCOM 揭秘

原创 2001年08月24日 08:57:00
DCOM 揭秘之四 
8/21/2001 9:0:32· ·QQ新人类··Yesky

1 2  下一页


  我们已经讨论了DCOM的基本要点,了解了如何创建一个简单的DCOM服务器和一个相关的客户端。你也可以看到这个基本的过程是非常简单的---ATL向导处理了服务器端的大部分细节,要激活服务器,你只需要在客户端写10行左右的代码就可以了。

  接下来我们将讨论两个相关的主题。首先是创建你自己的COM客户和服务器,结合第一部分我们所学到的,让你了解要在自己的代码中集成一个DCOM服务器,确实需要做哪些事情。然后我们将快速地看一下由ATL向导产生的代码。

  本文的最后将会讲解要创建一个分布式的COM服务器,你需要经过的步骤。所谓分布式的COM服务器,是指该服务器可以处在网络的别处,并且可通过网络非常简单和透明地激活。

  创建自己的COM客户和服务器

  在第一部分的DCOM介绍中,你可以看到要创建COM客户和服务器是非常简单的。只要在客户和服务器端写入几行代码就可以产生一个完整的COM应用。你现在明白到为什么许多的开发者在创建一个DLL时会使用COM了--因为仅需要大概5分钟,就可以设置好一个进程内的COM DLL,并且令它工作。

  本部分的目的是讨论如何创建自己的COM服务器,并且在你创建的真正应用中使用它们。你也会记得,第一部分介绍的客户端代码是非常少的。我们将介绍要创建服务器需要进行的基本步骤,然后看看要正确地激活服务器,你需要在客户端写入哪些代码。

  服务器端

  ATL向导令COM服务器的创建变得非常的简单。创建一个COM coclass的第一步是要分离出一个或者多个的功能函数,你要从一个应用的代码主体中分离出这些功能函数。至于分离出来的目的,可以是多样的,你可能是想让该函数可以跨越多个应用重新使用,也可能是让一个队伍的编程者更容易地分离出各个独立的工作组,或者是让代码的开发和维护变得更加的简单。不论是出于什么原因,定义功能是第一步。

  有一点可能令定义这些边界变得更为简单,这就是COM服务器的运作和一个普通的C++类是几乎一样的。象一个类,你实例化一个COM类,然后可以开始调用它的方法。COM的实例化和方法调用的句法和C++是有点不同的,不过它们的想法是一样的。如果一个服务器仅有一个接口,它事实上的用法就相当于一个类。(不过在访问对象时,你仍然需要遵守COM的规定)

  一旦你已经定义了功能和访问它的方法,就可以建立自己的服务器。在第一部分中,我们已经知道,要创建一个服务器,有4个基本的步骤:

  1。使用ATL向导来创建你的COM服务器的外壳。你选择该服务器是一个DLL、一个EXE或者是一个服务。

  2。在服务器的外壳中创建一个新的COM对象。你将要选择线程的模式,这将会创建可装入方法的接口。

  3。在你的对象中加入方法,并且声明它们的参数

  4。为你的方法写代码

  上面的这些步骤已经在第一部分中的“理解一个简单的COM服务器”中详细介绍过了。

  经过第一部分的介绍后,一个常见的问题是关于线程模式,也就是COM对象的独立线程(apartment-threade)和自由线程(free-threaded)之间的区别?要理解它们之间的区别的最简单方法是将独立线程看成为单线程,而将自由线程想象为多线程。

  在独立线程中,多个服务器客户的方法调用在服务器端的COM对象中被串行化,也就是说,每个独立的方法调用完成后,才会开始下一个的方法调用。因此独立线程的COM对象天生就是线程安全的,而自由线程的COM对象可同时在COM对象上有多个的方法调用执行。每个客户的方法调用都在一个不同的线程中运行。因此,在一个自由线程的COM对象中,你必须要注意多线程的问题,例如同步。

  开始的时候你将更趋向于使用独立的线程,因为它更加简单,不过以后最好转向到自由线程,因为它有着更多的优点。

1 2  下一页

■ 相关内容
 DCOM揭秘之六
 DCOM揭秘之五
 DCOM揭秘之三
 DCOM揭秘之二

《进军硅谷——程序员面试揭秘》

摘要:硅谷是绝大多数程序员梦想工作的地方,但你是不是真的做好进军硅谷的准备了?硅谷程序员面试有什么要求?本书作者从职位选择、公司选择、人际关系及求职渠道四个角度为广大IT从业人员揭密了硅谷程序员的求职...
  • alibo2008
  • alibo2008
  • 2014年04月17日 11:35
  • 2768

spring揭秘 读书笔记 六 bean的一生

我们知道,Spring容器具有对象的BeanDefinition来保存该对象实例化时需要的数据。 对象通过container.getBean()方法是才会初始化该对象。 BeanFactory 我们知...
  • dlf123321
  • dlf123321
  • 2015年08月24日 16:05
  • 1769

书评第001篇:《C++黑客编程揭秘与防范》

这是我的第一本计算机安全类的书籍。刚买回这本书的时候,因为自身水平的问题(当时对于计算机安全可谓是一窍不通,C++编程水平也仅仅停留在计算机二级的水平),基本上看不懂书中的内容。后来自学了汇编、PE文...
  • ioio_jy
  • ioio_jy
  • 2014年10月14日 15:07
  • 2117

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

介绍   对于许多人来说,学习COM和DCOM是一件吃力的事情。COM的用处很大,不少微软的产品和编程者工具都是基于COM,不过,COM是一门颇难掌握的技术,你可能曾经想去学习它,阅读过一些书,...
  • stypace
  • stypace
  • 2012年12月13日 11:55
  • 924

DCOM揭秘之六——远程COM调用(服务器端和客户端)

DCOM揭秘之六 2001-08-23 09:27作者:QQ新人类出处:Yesky责任编辑:方舟    Distributed COM --跨网络工作   ...
  • coolbear1027
  • coolbear1027
  • 2012年04月12日 20:29
  • 1928

DCOM揭秘之一

理解最简单的COM客户   要理解COM的最直接方法是通过一个客户应用来考察它。COM编程的目的是为了让客户应用可以得到有用的对象。一旦你理解了客户,要理解服务端就变得非常的简单。相反,同时直接...
  • stypace
  • stypace
  • 2012年12月13日 12:12
  • 856

DCOM 揭秘之三

Distributed COM --跨网络工作   DCOM代表的是“Distributed(分布式)”COM。在前面的部分中,我们已经讲解了运行在同一部计算机的COM客户和服务器。在这一部...
  • stypace
  • stypace
  • 2012年12月13日 21:06
  • 5628

OPC DCOM配置的一点经验

最近做了一个小项目,功能很简单,就是编写一个OPC客户端软件实现从OPC服务器上获取数据然后转存到DB中。项目虽小但是值得考虑的地方仍不少,所谓麻雀虽小,五脏俱全。...
  • rizhaolutong
  • rizhaolutong
  • 2014年03月03日 22:07
  • 3923

DCOM远程调用权限设置

最近几天被搞得焦头烂额,由于原先开发的DCOM客户端程序s
  • ervinsas
  • ervinsas
  • 2014年07月02日 16:25
  • 7489

【三层架构】——COM/DCOM初识

背景:在学习三层架构的时候,知道三层分为UI层(表现层)、BLL层(业务逻辑层)、DAL层(数据访问层),相对于传统的二层架构(客户端和数据库)来说,多了一个中间层BLL(业务逻辑层),处于UI层和D...
  • zt15732625878
  • zt15732625878
  • 2016年03月23日 16:08
  • 1446
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:DCOM 揭秘
举报原因:
原因补充:

(最多只允许输入30个字)