Com与Com+的区别

COM的产生   
    
   在以前程序设计过程中,程序员把它们的函数库放在一个叫做目标(Object)文件的单独文件中,在这些文件中,包含了编译过的代码。当程序员要使用一个特别的目标文件的时候,他们把客户程序编译成机器代码,然后依靠动态链接的手段把客户程序联接到目标文件上,最后变成一个单一的可执行文件。这种作法的唯一的好处在于它节省了编译函数库的时间。但是它有许多的缺点,比如由于在每个单独的可执行文件中都有一个程序库包括在里面,浪费了许多存储空间;对应用程序的维护也是非常困难的,如果在函数库中发现了一个bug,整个可执行文件都要被重新编译和分发。   
    
    
   还有不只一个的严重的限制在里头,一个客户应用程序必须要和用同一种语言编制的函数库在一起才能使用。比如说,一个用QuickBasic写的客户应用程序就不能引用一个用C++写的函数库。   
    
    
   因此,微软公司出品了COM,COM仅仅只是一个规范。不管组件用什么语言写成,只要符合这个COM规范,就能被用任何一种语言写成的客户程序调用。此外,程序员不必再担心要去建立一个单一的可执行文件,因为组件是以GUID(Global    Unique    Identifier全球唯一标识符)来标识的。GUID是一个128位的号码,和一些相关的信息一起被放在系统的注册表中,用来唯一标识组件。客户应用程序只在运行期间才动态地建立一个组件的实例,并使用这个组件的功能,因此,只需要一个函数库的拷贝。它的缺点就是大家常常提到?quot;DLL地狱"。这个问题在一个DLL要被一个新版本的DLL所取代时引发。开发者不得不通过关闭所有的客户应用程序的方法(如果不行,还要关闭WWW服务)来达到清除所用对这个组件的引用的目的。有时所有的方法都还起不了作用,那你只好重新启动服务器后才能替换掉老的DLL。   
   

COM+   
    
   为了让企业级的应用程序能使用上COM,它必需要有以下的特定的能力。   
   ·    验证能力     
   ·    对象池(Object    Pooling)   
   ·    事务处理     
   ·    支持分布式架构   
   为了使开发者不必去为他们的组件添加这些能力,微软公司出品了DCOM(Distributed    COM分布式COM)和MTS(Microsoft    Transaction    Server微软事务服务器)。使用这两种技术,开发者就可以把精力用在他们的商业逻辑上,而不必放在后台的他们的组件上。   
    
    
   DCOM是一个用于分布式的组件之间的通讯的RPC(Remote    Procedure    Call)协议。客户端向一个本地机的代理类发送请求,然后由代理类将这个请求隐含地给安装在远程机器上的"根"类,然后执行结果原路送回给代理类,最后代理类把它们回送给客户端。因此,客户程序的位置完全与组件的位置无关。DCOM的缺点在于,由于DCOM使用的是一个独立的硬件端口,而不是HTTP协议的80端口,所以在组件间通讯的过程中,必须保证这个端口是开着的。这是一个严重的安全问题。所以DCOM不能够轻易地穿越防火墙。   
    
   为了使用MTS,程序员在它们的组件里放置特别的MTS钩子,编译后把他们放在MTS包中。把有关系的组件放在一个单一的包中有它自己的好处。当客户请求一个包中的一个组件的一个实例的时候,MTS确保为这个包建立一个新的专门的线程,一个新的组件实例被建立在这个线程上并被应用事务服务。至于对象池服务和安全服务是否要被建立,那就要看开发者的请求了。   
    
    
   MTS允许相关的作业单元被当作一个事务来对待,这意味着如果所有的作业单元被成功地完成,整个事务就被当作成功地完成,反之如果有一个单元未成功完成,整个事务将被重新轮回。   
    
    
   在客户请求对象和释放对象后,MTS仍保存着这个对象,所以当另一个客户请求同一个组件的时候,MTS就将保存着的对象交给它。通过这种方式,MTS减少了在服务器源实例化的次数。   
    
    
   MTS允许开发者用安全措施来组装他们的组件,以使其具有识别请求它的服务的客户的能力。这能够确保未经授权的客户不能够使用组件的功能。   
    
    
   MTS以COM+的名义被完整地整合到了微软公司的Windows    2000操作系统中,但是COM+不仅仅只有MTS,它还包括一些其它的服务。MSMQ(Microsoft    Message    Queue    Server),一个与MTS一同发布的服务,也被以COM+的名义整合到了Windows    2000中。MSMQ允许服务器端和客户端进行同步的通讯。事件服务(Event    Service)也被加了进来,它使服务器能够与客户端同步地交流事件的发生。负载平衡服务(Load    Balancing)自动地实例化机器上的具有最多资源的服务器上的请求对象。   
    
  Top

学习COM+的笔记   
   1.COM+介绍   
   可能有许多人已经用COM设计过应用程序并知道它有很多局限性。实际上,这项技术的一个主要问题是它不太适用于通常通过公司的局域网(LAN)或广域网(WAN)进行发布的企业级应用程序。   
   MS很久以前就意识到了这种限制,并试图通过分布式COM(DCOM)来弥补这个缺陷。   
   但是DCOM也存在一些限制,所以MS在Windows2000中提出了COM+.   
     COM+不是一项新技术,它是对当前技术的一个扩充。   
     COM+中增加的主要东西包括两种已有的技术,微软事务服务器(MTS)和微软消息对列(MSMQ)。MTS通过事务增加了COM的可靠性。它确保每次COM数据传输至少发生一次,而且只有一次。另一方面MSMQ还改正了另一个与COM有关的问题,就是紧密连接的应用程序的问题。当使用位于本地机器上的应用程序时,客户和服务器同时存在。但是分布式应用程序就不能保证这一点。用户可能在没有连接到服务器上但同时又创建了新的工作。分布式应用程序需要提供一个强健的环境,允许用户在服务器处于不可用状态时仍然可以工作。   
     1.1    COM+的历史   
   DDE和OLE是MS早期的东东。后来OLE发展成了ActiveX(一种特殊类型的组件技术)。ActiveX实际上包含有DDE和OLE中的多种概念和技术,它增加了一种思想,既可以将ActiveX控件(独立的专用程序或库,通常很小)用于传统的应用程序或嵌入到HTML文档中在internet上使用。   
   DCOM在分布式计算中所起的作用   
   DCOM它依赖于开放软件基金会(OSF)分布式计算环境(DCE)的远程程序调用网络协议获得了成功。它可以使应用程序通过网络以DDE、OLE和COM进行通信。另外,DCOM创建的链接即安全又持久。如果移动了服务器端的组件,则客户机无论如何也找不到它。不过,排除掉那些不合理的东西DCOM还是十分可靠的。   
   DCOM的问题在于它与协议结合的台紧密了。这意味着客户和服务器必须同时存在并且在他们之间有连接。   
   DCOM还存在其他的问题。对于一次通信至少要发生一次而且只能发生一次来说DCOM就不能提供任何保证。   
   那么COM+有多好呢?实际上COM+是三种技术的结合:DCOM、MTS和MSMQ。DCOM有一个并且只有一个问题,就是信息的传输。将MTS加进来就解决了这个问题。现在每次数据传输都将作为一个事务而发生,这就意味着每次传输将只发生一次,而且至少发生一次。DCOM不能在非连接的环境中工作。MSMQ使用一个消息协议解决了这个问题。   
   1.2    COM+要点   
   1.2.1连通性   
   COM+有两种连通性。第一,COM+所包含的MTS确保了通信的可靠性。每一次通性都保证发生且仅发生一次。第二,非连接的应用程序的开发意味着无论在何处都可以产生数据,即使没有直接连接到服务器也可以。   
   1.2.2用户   
   无论是对用户还是对程序员,COM+都设计有可靠的连通性和简易的使用性。   
    
   1.2.3用户界面   
   1.2.4程序员   
   大多数开发人员能够从COM+中得到的好处   
   快速的开发时间、更少的调试时间、更多的自动功能、更加可靠   
    
   1.3    COM+和COM的比较   
   从创建组件的角度来讲,COM和COM+是相同的。实际上,在谈及组件时COM+仅是对现存COM技术的一个扩充。COM+是COM的一个超集,所以在应用程序中用COM+代替COM不会丢失任何东西。   
  • 0
    点赞
  • 0
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

第一部分 了解COM 第1章 COM概述 何谓CoM COM术语 COMCOM的好处 COM的局限性 COM组件接口 何谓接口 接口特征 接口类型 接口规则 接口设计 COM组件的实现规则 实现IUnknown规则 内存管理规则 引用计数规则 COM激活 COM类型 COM客户机 COM服务器 ActiveX控件 COM面向对象技术 包装 抽象 多态 继承 COMTrader应用程序 小结 第2章 由VC++建立并使用COM服务器 IDL文件 建立第一个COM服务器 定义自定义接口 实现IUnknown和自定义接口 完成COM服务器 生成测试客户机 用ATL建立COM服务器 关于ATL 用ATL建立进程内COM服务器 用ATL建立进程外COM服务器 线程COM服务器 Win32多线程应用 线程COM组件 自动化IDispatch 用VC++实现IDispatch ATL自动化 Automation数据类型 再谈类型库 C++自动化客户机 VB自动化客户机 小结 第3章 用VB建立并使用COM服务器 选择COM项目 设计接口 描述接口 浏览接口 生成对象 使用ClassBuilder 增加属性 增加方法 增加事件枚举 使用ActiveXDataObject(ADO) 在服务器组件中使用Recordset对象 在客户机组件中使用ADOR 生成断开的Recodset 生成自己的RecodsctS 使用用户定义类型 错误处理 服务器客户机错误处理 使用VBErr.Raise机制 在VB中使用线程模型 设置线程模型 了解再入性公寓 小结 第二部分 COMInternet 第4章 在VC++中建立并使用ActiveX控件 ACtiveX控件概还 属性方法 控件容器通信 事件连接点 建立第一个控件 生成控件 测试控件 增加方法 增加属性 增加事件 增加属性页 允许属性保持 使用控件 建立复合控件 增加复合控件 增加功能 增加事件 处理复合控件事件 处理错误 使用控件 小结 第5章 在VB中建立并使用ActiveX控件 VB控件简介 约束无约束控件 控件生成技术 属性类型 方法 属性配置 过程属性 环境属性配置 运行时只读属性 只在运行时有效的属性 扩展属性 容器属性 合成控件属性 可关联属性 持续属性包 属性包 使用ActiveX控件界面向导 了解控件寿命 生成ActiveX控件 生成无约束控件 生成设计时数据约束控件 生成运行数据约束控件 小结 第6章 用VC++建立InternetCOM组件 IEActiveX控件 轻量级控件 安全控件 持续属性 文档对象模型编程 活动服务器组件 活动服务器页面 ASP页面的COM组件 小结 第7章 用VB建立InternetCOM组件 无窗口控件 ActiveX控件容器的线程模型 ActiveX控件的安全性 Web页面访问 VBDHTML项目 DHTML项目基础 DHTML应用程序样本 VBIIS应用程序 WebClass 一个IIS应用程序样本 设计控件 设计控件HTML文件 样本设计控件 小结 第三部分 了解DCOM 第8章 DCOM概述 何谓DCOM 为什么使用DCOM DCOM操作 DCOM组件位置 进程内或进程外组件 代理 RPC(RemoteProcedureCall,远程过程调用) 调动 数据传递 DCOM配置实用程序 DCOM应用程序的安全机制 验证 授权 加密 整性检查 小结 第9章 用VC++建立DCOM服务器 标准自定义调动 标准调动 自定又调动 网络通伯 远程激活 AppID注册表项 可配置AppID注册表项参数 IUknown优化 DCOMNT服务 NT服务解剖 基于NT服务COM服务器 小结 第10章 用VB建立DCOM服务器 应用程序对象模型 何谓对象模型 如何生成对象模型 DCOM设计准则技术 再论调动 按数值按引用 DCOM进程外服务器 建立DCOM组件 增加测试客户机 IIS应用程序 增加WebClasses 使用模板 增加自定义Webltems 远程错误处理 小结 第四部分 了解COM++ 第11章 COM++概述 COMWindowsDNA 用户界面层技术 中间层技术 数据库层技术 组件服务配置 事务处理 排队组件(QC
©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值