COM原理及应用----基于COM的程序设计1、COM的作用COM作为一种软件模型,提供了程序之间通信的标准,但其最大的贡献在于对程序设计方法的变革。COM结合了对象技术和组件技术两种特性。对象特性使得应用系统的设计和实现更加符合现实世界的面貌;组件特性使得应用系统可以充分发挥组件的优势,以适应现代应用的需要。2、组件的特性组件之间可以在二进制级别上进行集成和重用;组件必须被独立地生产、获得和配置。组件接口描述了组件对外提供的服务,组件和组件之间、组件和客户之间同时通过接口进行交互。组件接口必须是能够自我描述的,组件应该保持接口不变。3、基于COM的组件化程序设计方法组件化程序设计方法继承并发展了面向对象程序设计方法。组件化程序设计方法强调真正的软件重用和高度的互操作性。4、MTSMTS,MicrosoftTransactionServer,它为我们提供基本的组件运行和配置环境。MTS为分布式应用提供了底层的基础设施,它把应用系统的客户程序与应用组件对象以及各种资源有机地组织起来。在MTS应用中,所有的组件对象都运行在MTS运行环境中,这些组件对象实现了基本的应用逻辑规则。由于MTS把组件对象有机地管理起来,它的运行环境负责所有并发性处理、资源管理、安全性管理、环境管理等系统级特性处理,因此,开发人员在编写组件对象时可以忽略这些要素,只需简单地实现基本的应用逻辑规则即可。MTS应用可以包括多个MTS服务进程,每个服务进程运行一个或多个组件对象,所以MTS应用的每个组件对象必须是进程内组件对象,它们运行在MTS服务进程中。在MTS服务进程中,除了这些应用组件对象之外,MTS也提供了许多服务,包括线程管理服务、环境管理服务、资源分发管理等等。MTS正是通过这种方式来提供各种系统服务的。资源管理器是MTS应用管理永久数据的基本手段,它使用了Microsoft的DTC(distributedtransactioncoordinator,分布式事务协调器)系统服务,通过两阶段提交的方式实现了事务(transaction)功能。MTS实现了两种资源分发器:ODBC资源分发器和共享属性管理器。MTS只是一个COM组件对象的管理器,它通过一组内置的服务来简化复杂应用系统的开发。5、MTS程序设计概念(1)事务事务是一个抽象概念,它是指一组数据操作的整体。事务具有四个特性:原子性(atomicity)、一致性(consistency)、隔离性(isolation)和永久性(durability),这些特性可简写为ACID。(2)MTS对象MTS对象是指运行在MTS环境下的COM组件的一个实例,MTS为每个对象维护一个环境对象。(3)MTS客户MTS客户是指MTS对象的客户程序,它可以是一个应用程序,运行在MTS环境之外,这种客户我们称为基客户;MTS客户也可以是另一个MTS对象,所以,MTS客户与对象的概念也是一个相对概念。(4)安全性控制MTS推荐使用基于角色的安全模型,角色是MTS安全模型的核心,一个角色定义了用户的逻辑组合。6、MTS管理程序MTS管理程序的主要功能为配置和发布MTS对象或组件,MTS对象是指运行在MTS环境中的COM对象,它所在的进程既为MTS服务进程。在MTS管理程序中,一个基本的概念是MTS包(MTSPackage),MTS包的概念与MTS服务进程紧密相关。一个MTS包可以包括多个MTS组件,这些MTS组件共享同一个进程,共享同一套安全角色定义。MTS管理程序使用了标准的MMC管理界面工具。7、MTS特性MTS作为COM对象的运行和管理环境,在分布式应用或一般的企业应用中所占的地位越来越重要。(1)对象管理器MTS实际上是一个功能强大的对象管理。MTS使COM对象由统一的环境管理,为基于COM的组件应用系统提供了配置和管理的基础;并且MTS也使DCOM技术的用法更为简化,为建立基于COM分布式应用提供了极大的方便。MTS还有一个特性,即MTS对象的及时激活(JIT激活,Just-In-TimeActivation)特性(2)安全管理器MTS的安全模型可以直接为应用系统所用,利用MTS管理程序用户可以灵活地配置每个角色所对应的成员。(3)事务管理器事务特性是MTS环境的一个重要特性,MTS运行环境利用MicrosoftDTC建立起来了事务特性。8、多层软件结构COM、DCOM以及MTS构成了多层结构的基础平台。层与层之间可以通过COM接口联系起来,它们可以运行在不同的进程中,甚至运行在不同的机器上,COM及DCOM提供了进程透明和位置透明特性。MTS又为中间的业务层提供了统一的配置和管理环境,我们可以把业务逻辑封装到MTS对象中,然后由MTS负责运行和包装这些业务组件。利用MTS提供的事务特性、安全模型,我们可以简化业务逻辑代码,即使是很复杂的业务逻辑,也可以当作普通的COM组件来实现。9、多层应用软件结构在分布式应用系统中,直接面对客户的表现层软件与数据层往往是分离的。在中间层,MTS可以把所有的业务组件管理起来,并提供运行环境。10、多层软件结构的优点可伸缩性、可配置性、灵活性、可靠性、MTS事务和安全模型、跨平台特性和软件集成思想。11、Web应用基本结构12、用COM设计Web应用ASP是服务器一端的脚本环境。ASP脚本通过Server对象创建COM对象,这种对象称为ActiveServerObject,简称ASP对象。从完整的ASP应用的角度看,它可以把复杂的业务规则放到ASP组件中,然后在.asp文件中通过脚本代码控制这些ASP对象。ASP对象既可以直接运行在ASP环境中,也可以运行在MTS环境中,享受MTS环境的特性。COM原理及应用----COM发展——COM+1、COM+由于历史的原因,COM、DCOM和MTS相互之间并不很融洽,难以形成统一的整体。COM+把这三者有效地统一起来,形成了一个全新的、功能强大的组件体系结构。COM+并不是COM的新版本,而是COM的新发展,或者COM更高层次上的应用。COM+的底层结构仍然以COM为基础,它几乎包容了COM的所有内容。COM+把组件软件提升到应用层而不是底层的软件结构,它通过操作系统的各种支持,使得组件对象模型建立在应用层上,把所有组件的底层细节留给操作系统,因此,COM+与操作系统的结合更加紧密。COM+不再局限于COM的组件技术,它更加注重于分布式网络应用的设计和实现,已经成为Microsoft系统平台策略的一部分。2、WindowsDNA策略WindowsDNA,即DistributedinterNetApplicationArchitecture,分布式网际应用结构。3、COM+基本结构COM+提供了一个比MTS更好的组件管理环境,COM+管理程序(COM+Explorer)也采用MMC标准界面。COM和MTS把组件的所有配置信息都保存在Windows的系统注册表中,而COM+把组件信息保存在被称为COM+目录(COM+Catalog)的新的数据库中。4、对象环境COM+为每一个对象提供了一个对象环境(ObjectContext)。5、COM+系统服务——COM+对列组件COM客户与远程组件之间的交互是基于RPC连接的。COM+除了支持这种基于RPC连接的运行方式,还支持基于消息的通信过程,它可以有效地把客户与组件的生存期分离开,这种模式通过COM+的队列组件服务实现。队列组件采用了底层的消息系统MSMQ(MicrosoftMessageQueueServer,Microsoft消息队列服务系统)。COM+应用可以以透明方式支持同步和异步两种调用方式。6、COM+系统服务——COM+事件模型COM不仅定义了客户调用组件对象的通信过程,也定义了反向的通信过程,这就是COM可连接对象机制。COM+事件模型改进了COM的可连接对象机制,它采用了多通道的发布/订阅事件机制。7、COM+系统服务——负载平衡COM+提供了一个负载平衡服务,它可以以透明方式实现动态负载平衡。COM+应用程序的负载平衡特性并不需要编写代码来支持,客户程序和组件程序都可以按通常的方式实现。8、COM+系统服务——内存数据库(IMDB)COM+的内存数据库(IMDB,inmemorydatabase)服务是一个全新的服务,它用于保存应用的非永久状态信息。IMDB的功能在于优化数据查询和数据获取,它可以装载后台数据库系统中的数据表,也可以装载应用程序的非永久数据信息。9、COM+系统服务——其他事务特性、安全性、COM+对象池和管理服务。COM原理及应用----ActiveX控件1、ActiveX控制ActiveX控制是Microsoft提供的功能强大的程序设计和开发技术。ActiveX控制既是一个自动化对象(当然也是一个标准的COM对象),也是一个界面元素,如同Windows的普通控制一样。ActiveX控制是一门综合技术,它涉及到COM和OLE的许多技术精华,同时也与Windows操作系统紧密结合起来,它可作为Windows标准控制的一种扩充机制。Microsoft把这种在Internet上使用的控制与OCX一起统称为ActiveX控制,并且把所有建立在COM和OLE基础上以及与Internet有关的技术统称为ActiveX技术。2、ActiveX控制的技术基础ActiveX控制的主要技术基础为OLE复合文档技术,它几乎涉及OLE嵌入对象与包容器程序之间交互的所有技术,包括结构化存储技术、自动化技术、实地激活(in-placeactivation,主要用于嵌入对象)、属性页技术、永久对象技术、可连接对象机制等等。3、实地激活实地激活(in-placeactivation)是指OLE对象的一种界面特性,具有实地激活特性的对象可以直接在包容器窗口内部进行编辑,所以有时我们也把这种特性称作实地编辑(in-placeediting)或可视编辑(visualediting)。为了实现实地激活特性,要求OLE对象和包容器程序之间必须遵守严格的接口约定。4、属性页属性页(propertypage)是OLE的一项技术,它已经成为Windows32位平台上表达属性的基本手段。属性表(propertysheet)由多个属性页组成,每个属性页有一个标题(也称为标签),通常属性表是一个有模式的对话框,而属性页是一个内嵌在属性表对话框中的无模式窗口。属性页技术涉及到四个方面:客户方、COM对象、属性表和属性页。它们相互之间的通信由一组预定义的COM接口以及API函数实现。5、属性变化通知属性变化通知包括两种情形:第一,当对象改变其属性时,它先向客户发送一个请求,询问客户是否允许改变该属性;第二,当对象已经改变了属性之后,它向客户发送一个通知告诉客户该属性已经被改变。6、ActiveX控制的基本要求属性和方法管理、事件机制、用户界面特性(可视性)、状态永久性机制。7、ActiveX控制基本结构8、包容器ActiveX控制的包容器程序通常是一个表单(form)或者对话框,也可以是复合文档的视窗口(view)或文档对象。包容器通常要管理多个ActiveX控制,或者其他Windows普通控制。包容器的基本功能:布局功能、永久特性、环境属性、事件处理机制、扩展控制、键盘功能。包容器程序支持不同的情形,分别称为设计模式和运行模式。9、包容器的基本结构10、使用的接口IOleObject和IOleClientSite是OLE的基本接口。每一个嵌入对象必须实现IOleObject接口。IOleControl和IOleControlSite接口扩展了ActiveX控制与站点对象之间的通信能力。由于IOleObject和IOleClientSite主要用于OLE复合文档与嵌入对象之间的通信,对于ActiveX控制与包容器,它还有其他的要求,比如环境属性、键盘控制以及扩展控制等等,IOleControl和IOleControlSite接口正是针对这些特性而设计的。11、ActiveX控制与InternetMi