文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络程序开发数据结构DCOM揭秘之六
精品推荐
特别推荐
·网游外挂编写完全攻略
·开发WDM型的USB设备驱动程序
·数据库设计范式深入浅出
·理解软件保护技术之序列号方式
·大型网站必鉴:分销渠道的结构
·你的代码真的很健壮吗
·利用HOOK拦截封包原理
·四种网络游戏外挂的设计方法
热点TOP10
·Spring Integration 1.0 正式发布
·使用 Abbot 框架自动化测试 Eclipse 插件的用户界面 1
·sqldatasource控件处理image类型数据
·使用Spring框架轻松解决数据访问和配置问题
·PrideORM框架设计---数据访问层的设计
·委托(delegate)在自定义控件的应用
·Visual Basic里与Print有关的函数
·DataGrid控件中如过有四列,想去删除一列,怎么办

DCOM揭秘之六

日期:2008年6月12日 作者: 查看:[大字体 中字体 小字体]


  
Distributed COM --跨网络工作


  DCOM代表的是“Distributed(分布式)”COM。在前面的部分中,我们已经讲解了运行在同一部计算机的COM客户和服务器。在这一部分,我们将讨论如何将它扩展到DCOM的领域和分布式计算。

  大多数的COM编程者仅使用本地的“进程内”服务器,作为DLL运行。DLL载入到客户程序的处理空间,因此很可靠和有效。我们打算使用一个基于EXE的服务器。这意味着服务器和客户端作为分开的程序运行。这个想法很有意义,特别是考虑到两个程序运行在不同的计算机上。当然,它带来了新的难点。

  好消息是将COM转换为DCOM是简单的。坏消息是连接客户和服务器时可出现很多的错误。在这里,重点是帮助你避免这些问题。

  COM和DCOM的区别

  COM和DCOM应用之间的大部分区别都被开发者隐藏起来。客户和服务器端的程序可以一样地编写,而不管程序在哪里运行。这个概念被称为本地/远程透明。

  当然,分布和本地COM的内部工作是有着一些区别的。本地的通信可通过许多的方式来完成,包括简单的Windows信息,而连接到一个远程的计算机需要一个全新的对象层和网络传输。除了这些大的区别外,你的程序需要做的改动并不大。

  与所有的COM通信一样,只有在客户请求一个服务器的接口时才会开始。在DCOM中,客户端调用CoCreateInstanceEx(),传送服务器计算机的一个描述和请求一个类标识器(CLSID)和接口。该请求由服务控制管理器处理(Service Control Manager,SCM),它是Windows的一部分。SCM负责在服务器计算机上创建和激活COM对象。在DCOM中,SCM将尝试启动远程计算机上的服务器。

DCOM揭秘之六(图一)

*************图一*******************

  一旦创建了远程的COM服务器,所有的调用将通过proxy和stub对象配置。proxy和stub使用RPC(Remote Procedure Calls,远程过程调用)进行通信,RPC处理所有网络交互。在服务器端,stub对象负责配置,而客户端则由proxy负责。

  跨网络的数据传送由RPC负责。实际上,DCOM使用一个扩展类型的RPC,称为对象RPC(Object RPC)或者ORPC。RPC可以运行在多种不同的协议上,包括有TCP/IP,UDP,NetBEUI,NETBIOS和命名管道。标准的RPC协议是UDP(用户数据报协议)。UDP是一个无连接的协议,看来与DCOM这种面向连接的系统配合并不是一个好主意。不过这并不是一个问题,DCOM自动负责管理连接。

  你也知道,分布式的COM是通过不同硬件、操作系统和软件组件这样一个复杂的交互完成的。你应该认识到:

   a)COM在后面做了很多工作;

   b)有许多地方可能出错

  在编写时,如果使用Windows95/98系统,仅可使用TCP/IP协议进行DCOM数据传输。这是一个有点讨厌的限制,即使有其它的网络协议,你仍然需要在所有的Windows系统上安装TCP/IP协议。

  服务器的改动不大

  作为一个程序(EXE)运行的服务器将能够在网络上工作。实际上,将一个服务器转为DCOM方式工作,要做的改动并不大。不过,你要为该服务器加入一些安全性,这需要作一些努力。为了简单,在这里我忽略了安全性。

  如果你以前使用的是进程内的服务器,你将需要作一些改变。进程内的服务器是一个DLL,它不可以跨网络载入。一个DLL载入到客户程序的地址空间中,它不可以通过远程连接工作。有一个称为surrogate的工作区,可以将DLL封装为一个可执行的程序,不过,更好的是将服务器转变为一个EXE,要将一个DLL转换为一个EXE,最简单的方法是重新使用ATL向导创建服务器,并且将代码由DLL传送到EXE中。

  在我们的例子中,我提供了RemoteServer.exe的源代码,它实现了一个基于EXE的简单DCOM服务器。如果你查看其中的代码,你将发现它是由向导产生的。不过,我在其中加入了两个方法--一个是得到服务器的名字,另一个是得到服务器的系统时间。(若需要源代码,请与我联系)

[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] 下一页 



上一篇:软件体系结构和工具的选择

下一篇:DCOM揭秘之三
相关文章:
·无废话C#设计模式之六:Builder
·Asp组件初级入门与精通系列之六
·VBScript基础教程之六VBScript运算符
·WAP中的ASP技术之六
·Sonic Foundry Vegas 4.0新手宝典 之六 调色详解
·Maya4.0 初级教程之六
·Authorware 6.0技巧与实例之六
相关软件:
·怪叔叔WII游戏教程之六-勇者斗恶龙
·英语口语高级之六(有声e书)
·英语口语中级之六(有声e书)
·6级英语听力之六
·时空逆转之六岁的大老爷们
·DCOMbobulatorV2.01
·《DCOM白皮书》

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.viphot.com
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.viphot.com All Rights Reserved. 鄂ICP备05000083号Powered by:viphot