如题

解决方案 »

  1.   

    很明显com+与com最大的区别就是多了个+;com+实现了一个新的模块,Apartment Thread,安全性也有提高,更加注重分布式网络。
    com是一个编程模型,com+就是补充模型的服务
      

  2.   

    对于初学者来说COM是个定义不是十分清楚的概念,它既代表一种组件规范又代表一种实现,简而言之COM是一种夸语言层的组件模型,由于不同的开发环境常需要相互协作来完成某种功能,进而促使了COM的出现,COM是以二进制形式存在,它是核心是由windows系统来支持的而不是某种开发工具平台。其设计完全是以OOP设计方法来实现,这样开发人员就可以更加关待对象而不是某个dll中的函数调用和组织,从另一个方面说这样开发人员就可以关注对象所代表的业务实现和其相关对象的关系了.COM是具体实现非常复杂不是简单几句能说清的,但是关键的一点需要知道的是应该程序和COM组件的通信是以RPC方法实现,方法调用的Boxing和UnBoxing再加上其服务器(MTS)的实现又实现了分布式模型,MTS主要是控制安全,协调事务.
    COM+的底层结构仍然以COM为基础,它几乎包容了COM的所有内容,COM+综合了COM、DCOM和MTS这些技术要素,它把COM组件软件提升到应用层而不再是底层的软件结构,它通过操作系统的各种支持,使组件对象模型建立在应用层上,把所有组件的底层细节留给操作系统,因此,COM+与操作系统的结合更加紧密。 COM+不再局限于COM的组件技术,它更加注重于分布式网络应用的设计和实现。COM+继承了COM几乎全部的优势,同时又避免了COM实现方面的一些不足,把COM、DCOM和MTS的编程模型结合起来,继承了它们的绝大多数特性,在原有的特性上增加了新的功能:如COM+扩充了MTS安全模型,它允许开发人员或管理员指定到方法级的安全控制,通过COM+对象环境信息,使得COM+的安全模型更为有效细致.COM+支持MTS的事务语义,不仅可以通过SetAbort或SetComplete完成事务操作,而且COM+还支持BYOT(BringYourOwnTransaction),即允许COM+组件参与非MTS事务处理环境管理的事务;COM+继承了MTS对象池的概念,并且真正实现了对象池的功能,COM+不仅继承了原有的多数特性,而且还增加了一些服务,比如负载平衡(在DCOM时代,这是由MTS负责的,也可以说这是整合MTS后的必然结果)、队列服务、内存数据库、事件服务等。队列服务对于分布式应用非常有意义,特别是在现在网络速度很慢的情况下,这种机制可以保证应用系统能够可靠地运行。在应用系统包含大量节点但服务器又繁忙的情况下,客户应用程序可以把它们的请求放到队列中,当服务器负载比较轻的时候再处理这些请求; 又如COM+提供了负载平衡服务,它可以实现动态负载平衡,而且COM+应用程序的负载平衡特性并不需要编写代码来支持,客户程序和组件程序都可以按通常的方式实现。获得负载平衡特性并不是用程序设计的方式来实现的,而是通过配置实现分布式应用程序的负载平衡,如上所讲的队列服务,其实也反映了一种负载平衡。 在COM+中采用了一种称为MMC标准界面环境管理程序。它类似于MTS的管理程序,但并不完全一样,每一个COM+应用可以包括一个或多个COM+组件以及与应用有关的角色信息。通过COM+管理程序,我们可以设置COM+应用和COM+组件的属性信息,比如组件的事务特性、安全特性等等。
      

  3.   

    最大差别,就是Com可以是有状态的,Com+则必须是无状态的。什么叫做有状态,就是调用对象的方法时可以多线程重入,什么叫做多线程重入?就是多个线程在使用同一个Com对象的时候不会发生访问冲突。Com+是运行在系统提供的一个进程空间,Com则是运行在调用者进程或者一个独立的用户进程中。Com+要保持私有数据(会产生状态),必须使用上下文对象,而不能使用私有成员。