




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、长春工业大学中间件技术原理与应用刘 冰长春工业大学长春工业大学COM技术的发展COM技术的体系结构COM技术中接口123COM类工厂机制DCOM技术、COM+技术、.NET技术45第3章 COM相关技术长春工业大学核心概念核心概念COMCOM组件组件:具有:具有一定逻辑功能一定逻辑功能的可执行代码,是组成应用程序的构件。的可执行代码,是组成应用程序的构件。COMCOM对象对象:类似:类似C+C+,每一个,每一个COMCOM对象是一个对象是一个特定类的实例特定类的实例,支持一个或,支持一个或多个接口。多个接口。COMCOM接口接口:是一组逻辑上相关的:是一组逻辑上相关的函数集合函数集合,即接口成
2、员函数,它提供给,即接口成员函数,它提供给客户各种形式的服务,实现各种功能,是组件与外界交互的通道。客户各种形式的服务,实现各种功能,是组件与外界交互的通道。COMCOM组件客户组件客户:组件的:组件的调用者调用者,是应用程序中直接与用户交互的界面和,是应用程序中直接与用户交互的界面和调用组件的程序框架。调用组件的程序框架。组件服务器组件服务器:通过若干个:通过若干个COMCOM对象来实现应用程序所需的对象来实现应用程序所需的功能功能。长春工业大学COMCOM技术的体系结构技术的体系结构COMCOM基础结构基础结构COMCOM对象对象COMCOM接口接口COMCOM组件组件COMCOM组件、组
3、件、COMCOM对象和对象和COMCOM接口关系接口关系长春工业大学COMCOM技术的体系结构技术的体系结构COMCOM客户与组件服务器之间的交互过程客户与组件服务器之间的交互过程客户客户应用程序应用程序COMCOM库库服务器服务器对象对象A1 1客户调用客户调用CoCreateInstance(CLSID_Y,IID_A)2 2CLSID_XCLSID_YC:Svr1.dllC:Svr2.exe系统注册表系统注册表COM定位并实例化服务器定位并实例化服务器3 3COM库将界面库将界面A的指针返回的指针返回4 4客户调用界面客户调用界面A的方法的方法长春工业大学3.3 COM3.3 COM技术
4、中的接口(续)技术中的接口(续) IUnknownIUnknown接口接口COMCOM定义的每一个接口都必须定义的每一个接口都必须从从IUnknownIUnknown接口继承接口继承而来。而来。IUnknownIUnknown接口具有接口具有生存期控制生存期控制和和接口查询接口查询功能。功能。QueryInterfaceQueryInterface、AddRefAddRef和和ReleaseRelease,共同完成接口的,共同完成接口的自自管理管理任务。任务。QueryInterfaceQueryInterface函数函数用于查询用于查询COMCOM对象的其他接口指针,对象的其他接口指针,实现
5、接口实现接口查询功能查询功能。函数函数AddRefAddRef和和ReleaseRelease用于对引用计数进行操作,从而控用于对引用计数进行操作,从而控制对象制对象的的生存周期生存周期。长春工业大学3.3 COM3.3 COM技术中的接口(续)技术中的接口(续) 引用计数引用计数COMCOM采用采用“引用计数引用计数”技术来解决技术来解决内存管理内存管理的问题的问题, ,它可以有效地控制它可以有效地控制对象的对象的生存周期生存周期。每一个每一个COMCOM对象对象都记录了一个称为都记录了一个称为“引用计数引用计数”的数值,该数值的含义的数值,该数值的含义为有多少个为有多少个有效指针有效指针在
6、引用该在引用该COMCOM对象。对象。当客户得到了一个指向该对象的当客户得到了一个指向该对象的接口指针接口指针时,引用计数值增时,引用计数值增1 1,用完后,用完后,引用计数减,引用计数减1 1。IUnknownIUnknown的接口成员函数的接口成员函数AddRefAddRef和和ReleaseRelease分别完成引用计数的增分别完成引用计数的增1 1和和减减1 1操作。操作。长春工业大学3.3 COM3.3 COM技术中的接口(续)技术中的接口(续) 实现引用计数实现引用计数按照按照COMCOM规范,一个规范,一个COMCOM组件可以实现组件可以实现多个多个COMCOM对象对象,并且每个
7、,并且每个COMCOM对象对象又可以支持又可以支持多个多个COMCOM接口接口,这种层次结构为实现引用计数提供了多种,这种层次结构为实现引用计数提供了多种选择方案。选择方案。COMCOM组件组件一级实现引用计数。一级实现引用计数。设置一个针对整个组件全局的引用计数。设置一个针对整个组件全局的引用计数。计数分辨率太粗。计数分辨率太粗。COMCOM对象对象一级实现引用计数。一级实现引用计数。利用成员变量,为每个利用成员变量,为每个COMCOM对象设置一个引用计数。对象设置一个引用计数。组件程序应保持一份有效对象的纪录。组件程序应保持一份有效对象的纪录。接口接口一级实现引用计数。一级实现引用计数。三
8、级计数控制。三级计数控制。计数分辨率太细。计数分辨率太细。长春工业大学3.3 COM3.3 COM技术中的接口(续)技术中的接口(续) 引用计数规则引用计数规则函数的参数中使用接口变量。函数的参数中使用接口变量。局部接口指针变量。局部接口指针变量。全局接口指针变量全局接口指针变量类成员变量为接口指针变量。类成员变量为接口指针变量。一般性原则:一般性原则:在顺序执行过程中,如果要对一个接口指针变量赋值,则对赋值在顺序执行过程中,如果要对一个接口指针变量赋值,则对赋值后的接口指针变量调用后的接口指针变量调用AddRefAddRef,并且,如果赋值前的接口指针,并且,如果赋值前的接口指针变量还没有结
9、束,则赋值前必须对它调用变量还没有结束,则赋值前必须对它调用ReleaseRelease以便先结束它以便先结束它的使用。的使用。如果要结束使用一个接口指针变量,以后不再用到它了,则调用如果要结束使用一个接口指针变量,以后不再用到它了,则调用RealeaseRealease函数。函数。长春工业大学3.3 COM3.3 COM技术中的接口(续)技术中的接口(续) 接口查询接口查询按照按照COMCOM规范,一个规范,一个COMCOM对象对象可以实现多个接口,客户程序可以在可以实现多个接口,客户程序可以在运行运行时刻时刻对对COMCOM对象的接口进行询问。对象的接口进行询问。当客户创建一个当客户创建一
10、个COMCOM对象后,创建函数会返回一个对象后,创建函数会返回一个接口指针接口指针,通过,通过QueryInterfaceQueryInterface函数就可获得该对象所支持的任何一个接口指针。函数就可获得该对象所支持的任何一个接口指针。函数说明:函数说明:HRESULT QueryInterfaceHRESULT QueryInterface(inREFIID iidinREFIID iid,outvoid outvoid * * * * ppv)ppv)输入参数输入参数iidiid:接口标识符:接口标识符输出参数输出参数ppvppv:查询得到的结果接口指针:查询得到的结果接口指针长春工业大
11、学3.3 COM3.3 COM技术中的接口(续)技术中的接口(续) 接口查询返回值接口查询返回值HRESULT HRESULT QueryInterfaceQueryInterface( inREFIIDinREFIID iidiid, outvoidoutvoid * * * * ppvppv) )S_OKS_OK,查到了查到了指定的接口,接口指针存放在指定的接口,接口指针存放在ppvppv输出参数中;输出参数中;E_NOINTERFACEE_NOINTERFACE,对象不支持对象不支持所指定的接口,所指定的接口,* *ppvppv为为NULLNULL;E_UNEXPECTEDE_UNEXP
12、ECTED,发生了,发生了意外错误意外错误,* *ppvppv为为NULLNULL。长春工业大学3.3 COM3.3 COM技术中的接口(续)技术中的接口(续) 接口原则接口原则每个对象的每个对象的IUnknownIUnknown接口接口指针是指针是唯一的唯一的。接口接口自反性自反性。接口接口对称性对称性。接口接口传递性传递性。接口查询接口查询时间无关性时间无关性。长春工业大学3.3 COM3.3 COM技术中的接口(续)技术中的接口(续) IDispatchIDispatch接口接口&QueryInterface&AddRef&Release&GetTypeI
13、nfoCount&GetTypeInfo&GetIDsOfNames&InvokepVtbl&Function1&Function2&Function3654Function1Function2Function3&QueryInterface&AddRef&Release&GetTypeInfoCount&GetTypeInfo&GetIDsOfNames&InvokeDISPID 函数名称长春工业大学3.3 COM3.3 COM技术中的接口(续)技术中的接口(续) 双重接口双重接口&
14、;QueryInterface&AddRef&Release&GetTypeInfoCount&GetTypeInfo&GetIDsOfNames&Invoke654Function1Function2Function3DISPID 函数名称&QueryInterface&AddRef&Release&GetTypeInfo&Invoke&Function1&Function2&Function3&GetTypeInfoCount&GetIDsOfNames长春工业大
15、学进程进程进程进程是一个正在运行的程序,它有单独的是一个正在运行的程序,它有单独的内存内存地址空间,拥有自己的一地址空间,拥有自己的一些些系统资源系统资源。进程内组件进程内组件:动态连接库方式动态连接库方式。客户调用组件程序的服务时,会把组件。客户调用组件程序的服务时,会把组件程序装入到自己的进程中,即客户程序和组件程序运行在程序装入到自己的进程中,即客户程序和组件程序运行在同一进程空同一进程空间间中。中。进程外组件进程外组件:EXEEXE形式形式。组件程序在被调用时有其自己的进程空间,即。组件程序在被调用时有其自己的进程空间,即客户程序和组件程序运行在客户程序和组件程序运行在不同的进程空间不
16、同的进程空间中。中。COMCOM采用采用本地过程调用本地过程调用和和远程过程调用远程过程调用的方法进行进程之间的通信。的方法进行进程之间的通信。3.4 COM3.4 COM类工厂机制类工厂机制长春工业大学通过注册表管理通过注册表管理COMCOM对象对象COMCOM规范使用规范使用128128位位GUIDGUID来标识来标识COMCOM对象和接口,客户程序通过对象和接口,客户程序通过GUIDGUID值来值来创建创建COMCOM对象并与对象进行交互。对象并与对象进行交互。因因位置透明性位置透明性,按照,按照COMCOM规范,客户程序通过规范,客户程序通过COMCOM库库完成对象的创建工作完成对象的
17、创建工作。COMCOM库通过库通过系统注册表系统注册表所提供的信息进行组件的创建工作。所提供的信息进行组件的创建工作。组件程序组件程序把其实现的把其实现的COMCOM对象对象信息以及信息以及接口接口信息都保存到注册表中,即信息都保存到注册表中,即进行进行组件的注册组件的注册。3.4 COM3.4 COM类工厂机制(续)类工厂机制(续)长春工业大学注册表注册表 COMCOM规范要求规范要求注册表必须包含注册表必须包含COMCOM库在完成各种操作时所要求的各项库在完成各种操作时所要求的各项信息。信息。3.4 COM3.4 COM类工厂机制(续)类工厂机制(续)TreeView组件的注册信息组件的注
18、册信息CLSID进程内组件程序标识符类型库长春工业大学COMCOM组件的注册操作组件的注册操作自注册组件自注册组件程序与程序与非自注册组件非自注册组件程序。程序。进程内组件进程内组件DLLDLL本身不能直接运行,必须被某个进程本身不能直接运行,必须被某个进程调调用才能获得控制;用才能获得控制;注册进程内组件的适用工具:注册进程内组件的适用工具:RegSvr32.exeRegSvr32.exe用于注册的入口函数为用于注册的入口函数为DllRegisterServerDllRegisterServer和和DllUnregisterServerDllUnregisterServer例:注册例:注册R
19、egSvr32 C:RegSvr32 C:DictCompDictComp.dllDictCompDictComp.dll 注销注销RegSvr32 /u C:RegSvr32 /u C:DictCompDictComp.dllDictCompDictComp.dll进程外组件进程外组件EXEEXE本身是一个可执行的程序,可本身是一个可执行的程序,可自主完成注册自主完成注册过程。过程。必须支持两个命令行参数必须支持两个命令行参数/ /RegServerRegServer和和/ /UnregServerUnregServer。3.4 COM3.4 COM类工厂机制(续)类工厂机制(续)长春工业大
20、学类厂类厂类厂是类厂是COMCOM对象对象的生产基地的生产基地, ,即即“对象厂对象厂”。COMCOM库通过类厂创建库通过类厂创建COMCOM对象,类厂与对象,类厂与CLSIDCLSID一一对应。一一对应。类厂本身也是一个类厂本身也是一个COMCOM对象,支持一个特殊的接口:对象,支持一个特殊的接口:IClassFactoryIClassFactory, ,其其成员函数成员函数CreateInstanceCreateInstance 用于用于创建创建COMCOM对象对象。类厂对象本身由类厂对象本身由组件程序组件程序实现的实现的引出函数引出函数创建创建: :HRESULT DllGetClass
21、Object(const CLSID& clsid, const IID& iid, (void*) ppv);类厂本身类厂本身无无CLSIDCLSID,没有在系统注册表中注册。,没有在系统注册表中注册。COMCOM规定每一个规定每一个COMCOM对象类对象类应该有一个相应的应该有一个相应的类厂对象类厂对象。3.4 COM3.4 COM类工厂机制(续)类工厂机制(续)长春工业大学类厂类厂3.4 COM3.4 COM类工厂机制(续)类工厂机制(续)字典对象类厂ISpellCheckIDictionaryIClassFactory字典组件对象1类厂1对象2类厂2多对象、多类厂组件长
22、春工业大学类库类库3.4 COM3.4 COM类工厂机制(续)类工厂机制(续)客户客户1. DllGetClassObject实例对象实例对象3.创建实例创建实例对象对象类厂对象类厂对象2.创建类创建类厂对象厂对象创建创建COMCOM对象示意图:对象示意图:客户客户- -引出函数引出函数- -类厂对象类厂对象- -用户对象用户对象长春工业大学3.4 COM3.4 COM类工厂机制(续)类工厂机制(续)COMCOM创建创建函数函数COMCOM库中三个用于库中三个用于创建组件创建组件的函数:的函数:CoGetClassObjectCoGetClassObjectCoCreateInstanceCo
23、CreateInstanceCoCreateInstanceExCoCreateInstanceEx长春工业大学3.4 COM3.4 COM类工厂机制(续)类工厂机制(续) CoGetClassObjectCoGetClassObject创建一个创建一个类厂类厂HRESULT HRESULT CoGetClassObjectCoGetClassObject(const(const CLSID& CLSID& clsidclsid, , DWORD DWORD dwClsContextdwClsContext, , COSERVERINFO COSERVERINFO * *pSe
24、rverInfopServerInfo, , const IID& const IID& iidiid, ,(IClassFactoryIClassFactory接口)接口) (void (void * * *) )ppvppv););进程内组件对象进程内组件对象,CoGetClassObject调用调用DLLDLL模块的模块的DllGetClassObject引出函数创建类厂;引出函数创建类厂;进程外组件进程外组件,CoGetClassObject函数启动组件进程,一直等到组件进程函数启动组件进程,一直等到组件进程它支持的它支持的COM类对象的类厂注册到类对象的类厂注册到CO
25、M中。中。长春工业大学3.4 COM3.4 COM类工厂机制(续)类工厂机制(续) CoCreateInstanceCoCreateInstance创建创建COMCOM对象对象HRESULT HRESULT CoCreateInstanceCoCreateInstance(const(const CLSID& CLSID& clsidclsid, , IUnknownIUnknown * *pUnknownOuterpUnknownOuter, , DWORD DWORD dwClsContextdwClsContext, , const IID& const IID&
26、amp; iidiid, , (void (void * * *) )ppvppv););长春工业大学3.4 COM3.4 COM类工厂机制(续)类工厂机制(续)CoCreateInstanceCoCreateInstance实现伪码实现伪码HRESULT HRESULT CoCreateInstanceCoCreateInstance(const(const CLSID& CLSID& clsid,IUnknownclsid,IUnknown * *pUnknownOuter,DWORDpUnknownOuter,DWORD dwClsContedtdwClsContedt,
27、 , const IID& const IID& iid,voidiid,void * *ppvppv) ) IClassFactoryIClassFactory * *pCFpCF; ; HRESULT hr; HRESULT hr; hr = hr = CoGetClassObjectCoGetClassObject(clsid,dwClsContext,NULL(clsid,dwClsContext,NULL, , IID_IClassFactory,(voidIID_IClassFactory,(void * *) )pCFpCF);); if ( if (FAILED
28、(hrFAILED(hr) return hr; return hr; hr = hr = pCFpCF-CreateInstanceCreateInstance(pUnkOuter,iid,(void(pUnkOuter,iid,(void * *) )ppvppv);); pCFpCF-Release();-Release(); return hr; return hr; 长春工业大学3.4 COM3.4 COM类工厂机制(续)类工厂机制(续) CoCreateInstanceExCoCreateInstanceEx创建创建COMCOM对象对象HRESULT HRESULT CoCreat
29、eInstanceExCoCreateInstanceEx(const(const CLSID& CLSID& clsidclsid, , IUnknownIUnknown * *pUnknownOuterpUnknownOuter, , DWORD DWORD dwClsContextdwClsContext, , COSERVERINFO COSERVERINFO * *pServerInfopServerInfo, , DWORD DWORD dwCountdwCount, , MULTI_QI MULTI_QI * *rgMultiQIrgMultiQI););长春工业
30、大学3.4 COM3.4 COM类工厂机制(续)类工厂机制(续)三个创建函数选用原则三个创建函数选用原则如果客户创建如果客户创建远程对象远程对象或者希望一次获取对象的或者希望一次获取对象的多个接口指针多个接口指针,则选,则选用用CoCreateInstanceCoCreateInstanceExEx函数;函数;如果客户希望获取如果客户希望获取类厂对象类厂对象或者要调用类厂的某些成员函数,则选用或者要调用类厂的某些成员函数,则选用CoGetClassObjectCoGetClassObject函数;函数;在其他情况下,使用在其他情况下,使用CoCreateInstanceCoCreateInst
31、ance函数创建对象。函数创建对象。长春工业大学初始化初始化COMCOM库库3.4 COM3.4 COM类工厂机制(续)类工厂机制(续) 客户程序调用客户程序调用COMCOM库创建组件对象顺序图库创建组件对象顺序图长春工业大学客户程序调用客户程序调用COMCOM库创建组件对象的顺序库创建组件对象的顺序通过通过CoCreateInstanceCoCreateInstance调用调用CoGetClassObjectCoGetClassObject;COMCOM库找到库找到DLLDLL程序并进入进程;程序并进入进程;调用调用DllGetClassObjectDllGetClassObject函数;函
32、数;DllGetClassObjectDllGetClassObject创建类厂创建类厂;DllGetClassObjectDllGetClassObject函数把类厂接口指针函数把类厂接口指针返回给返回给CoGetClassObjectCoGetClassObject 函数函数;CoGetClassObjectCoGetClassObject 函数把类厂接口指针函数把类厂接口指针返回给返回给CoCreateInstanceCoCreateInstance函数;函数;CoCreateInstanceCoCreateInstance函数得到类厂后,调用类厂的对象创建函数函数得到类厂后,调用类厂的
33、对象创建函数CreateInstanceCreateInstance; ;类厂类厂创建创建COMCOM对象对象;类厂把类厂把COMCOM对象对象返回给返回给CoCreateInstanceCoCreateInstance, CoCreateInstanceCoCreateInstance函数返回函数返回COMCOM对象接口指对象接口指针给针给客户客户;客户客户直接调用直接调用COMCOM对象。对象。3.4 COM3.4 COM类工厂机制(续)类工厂机制(续)长春工业大学COM/DCOM/COM+COM/DCOM/COM+COMCOM通过为组件提供通过为组件提供二进制二进制标准,定义标准,定义通
34、信接口通信接口,提供,提供动态链接动态链接组件组件的方法,解决了早期组件开发面临的问题。把开发者从的方法,解决了早期组件开发面临的问题。把开发者从“繁琐的繁琐的底层底层设计设计”和和连通性事务连通性事务中解放出来,集中设计组件。中解放出来,集中设计组件。DCOMDCOM是一种用于是一种用于分布式分布式组件的组件的规范和服务规范和服务,支持分布式的、面向事务,支持分布式的、面向事务处理的应用程序。处理的应用程序。MTSMTS一方面为组件开发提供一方面为组件开发提供新的服务新的服务,如事务管理、基于角色的安全,如事务管理、基于角色的安全性、实例激活管理、组件部署与安装、管理组件配置的管理工具等,性
35、、实例激活管理、组件部署与安装、管理组件配置的管理工具等,另一方面代表一种另一方面代表一种编程模型编程模型,组件开发者只需,组件开发者只需简单声明简单声明组件需要的服组件需要的服务即可,合适的务即可,合适的运行时环境运行时环境由由MTSMTS提供。开发者只需集中精力于提供。开发者只需集中精力于业务逻业务逻辑辑。长春工业大学COM/DCOM/COM+COM/DCOM/COM+COM+COM+通过把通过把MTSMTS和和DCOMDCOM融合融合在组件服务套件中,并添加了更多的服务在组件服务套件中,并添加了更多的服务,包括对象池、队列组件和事件模型等,成为核心,包括对象池、队列组件和事件模型等,成为
36、核心Windows 2000Windows 2000操作操作系统系统的一部分。的一部分。.NET.NET是微软的下一代组件技术和应用程序是微软的下一代组件技术和应用程序开发平台开发平台,允许应用程序通,允许应用程序通过网络进行过网络进行通信和共享数据通信和共享数据。长春工业大学3.5 DCOM3.5 DCOM技术技术DCOMDCOM(Distributed Component Object Model)Distributed Component Object Model)是是分布式应用环境分布式应用环境中的中的COMCOM技术。技术。支持支持不同计算机不同计算机上组件对象与客户程序之间或者组件
37、对象之间的相互上组件对象与客户程序之间或者组件对象之间的相互通信。通信。DCOMDCOM把把COMCOM技术的技术的进程透明性进程透明性拓展为拓展为位置透明性位置透明性。DCOMDCOM处理了处理了底层网络协议底层网络协议的所有细节,编程人员只需把重点放在应用的所有细节,编程人员只需把重点放在应用的的业务逻辑业务逻辑上。上。DCOMDCOM是是COMCOM的的无缝扩展无缝扩展。长春工业大学3.5 DCOM3.5 DCOM技术(续)技术(续)从从COMCOM转到转到DCOMDCOM客户程序和组件程序运行在同一进程中客户程序和组件程序运行在同一进程中进程内组件进程内组件;客户程序和组件程序运行在同
38、一计算机的不同进程中客户程序和组件程序运行在同一计算机的不同进程中本地进本地进程外组件程外组件;客户程序和组件程序分别运行在不同的计算机上客户程序和组件程序分别运行在不同的计算机上远程进程外远程进程外组件组件,即,即DCOMDCOM。长春工业大学3.5 DCOM3.5 DCOM技术(续)技术(续)进程内组件进程内组件客户与进程内组件的通信示意图客户与进程内组件的通信示意图客户客户组件组件长春工业大学3.5 DCOM3.5 DCOM技术(续)技术(续)本地进程外组件本地进程外组件客户与本地进程外组件的通信示意图客户与本地进程外组件的通信示意图客户客户COM运行库运行库安全安全提供器提供器DCE
39、RPCLPC组件组件COM运行库运行库安全安全提供器提供器DCE RPCLPC长春工业大学3.5 DCOM3.5 DCOM技术(续)技术(续)DCOMDCOM组件组件客户客户与与DCOMDCOM组件的通信示意图组件的通信示意图客户客户COM运行库运行库安全安全提供器提供器DCE RPC协议栈协议栈组件组件COM运行库运行库安全安全提供器提供器DCE RPC协议栈协议栈DCOM网络协议网络协议长春工业大学3.5 DCOM3.5 DCOM技术(续)技术(续) 相关内容相关内容DCOMDCOM对象的定位对象的定位远程机器名远程机器名+CLSID+CLSID列集列集散集散集DCOMDCOM网络协议网络
40、协议对象对象RPCRPC(ORPCORPC),基于),基于DCE RPCDCE RPC协议。协议。ORPCORPC建立了一套建立了一套面向对象面向对象的的远程调用规范远程调用规范。ORPCORPC仍使用标准的仍使用标准的RPCRPC数据包数据包,附加上专用于,附加上专用于DCOMDCOM的一些信息的一些信息接接口指针标识符、版本信息和扩展信息。口指针标识符、版本信息和扩展信息。ORPCORPC协议已经被作为协议已经被作为InternetInternet草案递交到草案递交到IETFIETF(InternetInternet工程部)工程部)网络数据表示法网络数据表示法NDR长春工业大学3.6 CO
41、M+3.6 COM+技术(续)技术(续) MTSMTS介绍介绍MTSMTS(Microsoft Transaction Microsoft Transaction Server),COMServer),COM组件的组件的一致管理系统一致管理系统,为,为COMCOM技术的企业应用提供基本的技术的企业应用提供基本的组件管理组件管理与与配置环境配置环境。在在MTSMTS应用中,所有的组件都运行在应用中,所有的组件都运行在MTSMTS运行环境运行环境中,组件只需实现中,组件只需实现基基本的应用逻辑本的应用逻辑规则,由运行环境负责所有规则,由运行环境负责所有系统级应用系统级应用处理。处理。COM+COM
42、+是是COMCOM、DCOMDCOM和和MTSMTS技术的集成与发展,是真正适合于企业应用的技术的集成与发展,是真正适合于企业应用的组件技术。组件技术。长春工业大学3.6 COM+3.6 COM+技术(续)技术(续) MTSMTS应用基本结构应用基本结构基客户基客户组件对象组件对象组件对象组件对象基客户基客户组件对象组件对象组件对象组件对象组件对象组件对象组件对象组件对象组件对象组件对象资源资源管理器管理器资源资源管理器管理器资源分发器资源分发器长春工业大学3.6 COM+3.6 COM+技术技术如果要用如果要用COMCOM组件开发组件开发企业一级企业一级的应用系统,那么的应用系统,那么MTS
43、MTS可以提供基本的可以提供基本的组件运行组件运行和和配置环境配置环境。MTSMTS为分布式应用提供了为分布式应用提供了底层的基础设施底层的基础设施,把应用系统的,把应用系统的客户程序客户程序与应与应用用组件对象组件对象以及以及各种资源各种资源有机地组织起来。有机地组织起来。MTSMTS使使COMCOM前进了一大步,它为前进了一大步,它为COMCOM注入了许多新的特性,并最终使注入了许多新的特性,并最终使COMCOM成为一个完整的组件体系结构。但成为一个完整的组件体系结构。但COMCOM、DCOMDCOM和和MTSMTS相互之间并不相互之间并不很融洽,难以形成一个整体。很融洽,难以形成一个整体
44、。COM+COM+将这三者有效地统一起来,形成了一个全新的,功能强大的组件将这三者有效地统一起来,形成了一个全新的,功能强大的组件体系结构。体系结构。长春工业大学3.6 COM+3.6 COM+技术(续)技术(续) COM+COM+不是不是COMCOM的新版本,而是的新版本,而是COMCOM更高层次上的应用更高层次上的应用,其底层结构仍以,其底层结构仍以COMCOM为基础,实现了许多面向企业应用的分布式应用所需的服务。为基础,实现了许多面向企业应用的分布式应用所需的服务。COM+COM+不再局限于不再局限于COMCOM的组件技术,更加注重于分布式网络应用的设计与的组件技术,更加注重于分布式网络
45、应用的设计与实现,是一个面向应用的实现,是一个面向应用的高级高级COMCOM运行环境运行环境。COM+COM+把组件软件把组件软件提升到应用层提升到应用层,而不再是底层的软件结构。,而不再是底层的软件结构。COM+COM+通过操通过操作系统的各种支持,使组件对象模型建立在作系统的各种支持,使组件对象模型建立在应用层应用层上,把所有组件上,把所有组件的的底层细节留给操作系统底层细节留给操作系统。COM+COM+与操作系统的结合更加与操作系统的结合更加紧密紧密,通过,通过系统服务系统服务为应用程序提供全面的为应用程序提供全面的服务。服务。COM+COM+是是Windows DNAWindows D
46、NA框架中的中间层技术。框架中的中间层技术。长春工业大学3.6 COM+3.6 COM+技术(续)技术(续)Windows DNAWindows DNA(分布式网际应用结构)(分布式网际应用结构)三层结构模型及简化的三层结构模型及简化的DNADNA结构图结构图客户应用客户应用Web客户客户表现层表现层中间层中间层IIS和和ASPCOM和和MTSMSMQ数据层数据层数据库数据库ADO/OLE DBADO/OLE DB、COMTICOMTIFORMS+COM+STORAGE(a) a) 三层结构技术集成三层结构技术集成(b) Windows DNA(b) Windows DNA结构结构以以系统服务
47、系统服务的形式把原的形式把原先散落的一些技术综合先散落的一些技术综合起来,并提供简单的编起来,并提供简单的编程模型,以直接应用层程模型,以直接应用层的编程接口为应用程序的编程接口为应用程序提供服务。提供服务。长春工业大学3.6 COM+3.6 COM+技术(续)技术(续)COM+COM+基本结构基本结构COM+COM+组成结构图组成结构图COM+COM+MTSMTSCOM/DCOMCOM/DCOM基于接口的编程模型基于接口的编程模型远程支持远程支持基本的组件服务基本的组件服务分布式组件服务分布式组件服务事务服务事务服务资源分发管理资源分发管理安全模型安全模型易于管理易于管理COM+目录目录负载
48、平衡负载平衡内存数据库内存数据库对象池对象池队列组件队列组件新的事件模型新的事件模型组件管理与配置组件管理与配置长春工业大学3.6 COM+3.6 COM+技术(续)技术(续) COM+COM+目录目录COMCOM和和MTSMTS把组件的所有配置信息都存放在把组件的所有配置信息都存放在WindowsWindows的的系统注册表系统注册表中。中。COM+COM+把组件信息保存在一个把组件信息保存在一个数据库数据库中,并提供一个专门针对组件的中,并提供一个专门针对组件的管理管理环境环境。既可以通过既可以通过COM+COM+管理程序管理程序检查或设置检查或设置COM+COM+目录信息,也可以通过目录
49、信息,也可以通过COM+COM+提提供的一组供的一组COMCOM接口接口访问访问COM+COM+目录信息。目录信息。COM+COM+一方面提供了许多一方面提供了许多新的服务新的服务和一个一致的和一个一致的管理环境管理环境, ,另一方面支持另一方面支持说明性编程模型说明性编程模型。长春工业大学3.6 COM+3.6 COM+技术(续)技术(续) 说明性编程模型说明性编程模型开发人员按尽可能通用的方式开发组件程序,把一些细节留到开发人员按尽可能通用的方式开发组件程序,把一些细节留到配置时配置时刻刻再确定。再确定。通过通过管理程序管理程序配置组件的配置组件的属性属性来决定组件特性。来决定组件特性。对
50、象环境对象环境COM+COM+环境:体现相同运行服务功能需求的环境:体现相同运行服务功能需求的策略对象集合策略对象集合,其中每一个,其中每一个特定的策略对象成为特定的策略对象成为环境对象环境对象。COM+COM+系统在创建每一个系统在创建每一个COM+COM+组件对象时,为每一个对象建立一个组件对象时,为每一个对象建立一个对象对象环境环境,并为它分配,并为它分配环境对象环境对象,这种技术被称为截取技术。,这种技术被称为截取技术。长春工业大学3.6 COM+3.6 COM+技术(续)技术(续) 截取技术截取技术组件对象通过组件对象通过说明性属性说明性属性指定它的一些基本要求。指定它的一些基本要求
51、。当客户程序调用当客户程序调用CoCreateInstanceCoCreateInstance函数时,函数时,COM+COM+系统检查客户代码是系统检查客户代码是否运行在与对象类否运行在与对象类兼容的兼容的对象环境中;对象环境中;若若兼容兼容,不必使用截取技术,直接创建对象并返回其接口引用;,不必使用截取技术,直接创建对象并返回其接口引用;若若不兼容不兼容,则把,则把CoCreateInstanceCoCreateInstance函数切换到一个兼容的环境,再创函数切换到一个兼容的环境,再创建对象并返回一个建对象并返回一个代理对象代理对象;接口接口方法调用方法调用时,代理对象在调用前和调用后都要
52、做一些处理,以便时,代理对象在调用前和调用后都要做一些处理,以便方法的运行环境能够满足对象的要求。方法的运行环境能够满足对象的要求。长春工业大学3.6 COM+3.6 COM+技术(续)技术(续) 截取技术截取技术对象对象B B的代理的代理对象对象B存根存根对象对象A的代理的代理对象对象A存根存根对象对象C的代理的代理对象对象C存根存根环境环境X X环境环境Y Y环境环境Z Z环境环境W W表示截取表示截取跨环境调用示意图跨环境调用示意图长春工业大学3.7 .NET3.7 .NET框架框架.NET.NET是是Microsoft XML Web servicesMicrosoft XML Web
53、 services平台,允许应用程序通过平台,允许应用程序通过InternetInternet进行进行通信和共享数据通信和共享数据。.NET.NET是是COMCOM技术的进一步发展,它扩展了通过技术的进一步发展,它扩展了通过任何设备任何设备随时随地操作数随时随地操作数据和进行通信的能力。据和进行通信的能力。.NET.NET框架使用框架使用分布式计算模型分布式计算模型,并基于,并基于开放标准开放标准将将PCPC与其它与其它智能设备智能设备连接在一起。连接在一起。.NET.NET框架为开发人员提供了一个统一、面向对象层次化、可扩展的类框架为开发人员提供了一个统一、面向对象层次化、可扩展的类库集(库
54、集(APIAPI),即统一了微软当前的),即统一了微软当前的各种不同类框架各种不同类框架。长春工业大学3.7 .NET3.7 .NET技术(续)技术(续) 分层结构分层结构Web Services公共语言运行时(公共语言运行时(Common Language Runtime)对象模型和公共语言规范对象模型和公共语言规范组件模型组件模型框架和库框架和库(ASP.NET、ADO.NET、Windows Forms交互标准交互标准(SOAP、WSDL)开发工具开发工具(Visual Studio.NET).NET.NET框架分层结构框架分层结构长春工业大学3.7 .NET3.7 .NET技术(续)技
55、术(续) .NET.NET与与COMCOM.NET.NET框架框架简化了简化了COMCOM开发开发。.NET.NET框架组件依然是框架组件依然是一种一种COMCOM组件组件。在大型分布式应用开发方面,由于在大型分布式应用开发方面,由于COM+COM+是是.NET.NET框架的一部分,框架的一部分,.NET.NET框架类可框架类可直接访问直接访问COM+COM+所提供的服务。所提供的服务。长春工业大学3.8 COM3.8 COM技术中的企业功能服务技术中的企业功能服务在在Windows 2000Windows 2000操作系统中包含的操作系统中包含的COM+COM+技术提供了大量技术提供了大量面
56、向企业的服面向企业的服务务。面向企业的功能服务通过大量的面向企业的功能服务通过大量的底层底层COMCOM对象来提供。对象来提供。在在COM+COM+系统中,实现企业功能的系统中,实现企业功能的COMCOM对象被作为对象被作为内置对象内置对象来实现。来实现。长春工业大学3.8 COM3.8 COM技术中的企业功能服务(续)技术中的企业功能服务(续) 使使COMCOM组件具有企业应用特性的方式组件具有企业应用特性的方式使用系统提供的使用系统提供的管理工具管理工具进行进行服务特性的配置服务特性的配置。通过在通过在COM+COM+组件中加入具有组件中加入具有企业功能属性企业功能属性的代码,当存在特定的
57、功能需的代码,当存在特定的功能需求时,通过在程序中求时,通过在程序中嵌入代码嵌入代码的方式满足需求。的方式满足需求。长春工业大学3.8 COM3.8 COM技术中的企业功能服务(续)技术中的企业功能服务(续) 企业功能服务企业功能服务事务处理事务处理安全服务安全服务同步服务同步服务队列服务队列服务事件服务事件服务内存数据库内存数据库IMDB IMDB 动态负载平衡机制动态负载平衡机制集成管理工具集成管理工具长春工业大学应用程序(应用程序(AP)资源管理器资源管理器(RM)通信资源通信资源管理器管理器(CRM)事务管理器事务管理器(TM)TM APIXA+XARM APICRM APITCP/I
58、P3.8 COM3.8 COM技术中的企业功能服务(续)技术中的企业功能服务(续) 事务处理事务处理事务处理为事务处理为COMCOM对象对象提供创建、使用事务以及提交事务的方法。提供创建、使用事务以及提交事务的方法。COM+COM+支持支持MTSMTS的事务语义的事务语义,并允许,并允许COM+COM+组件参与非组件参与非MTSMTS事务环境管理的事务环境管理的事务。事务。长春工业大学3.8 COM3.8 COM技术中的企业功能服务(续)技术中的企业功能服务(续) 安全服务安全服务COM+COM+采用采用基于角色基于角色的安全模型,根据用户的角色访问应用的有关功的安全模型,根据用户的角色访问应用的有关功能模块。能模块。在在开发阶段开发阶段,开发人员负责,开发人员负责定义定义各种角色,并且在各种角色,并且在实现实现组件功能时组件功能时,只允许指定角色的用户才可以执行这些功能。,只允许
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 花艺师沟通技能考题及答案
- 2024年高校辅导员职能试题及答案
- 国际金融法试题及答案
- 项目管理2024年农艺师考试试题及答案
- 易知真实考试题及答案
- 2024年高校辅导员招聘考前冲刺试题及答案
- 园艺师的职业素养与能力要求试题及答案
- 电商客服考试题及答案
- 邮政集团面试题目及答案
- 农业职业经理人考试如何应对快速变化的市场环境试题及答案
- 人教版八年级物理《光的反射说课稿》
- 风险分级管控责任清单(桥梁工程)
- 供应链管理-第十三章供应链绩效评价课件
- DB15T 489-2019 石油化学工业建设工程技术资料管理规范
- 1.《郑人买履》课件PPT
- 焊接过程记录表
- 急性心肌梗死PPTPPT
- 钢架桥搭设的基本程序和方法
- 遵义会议ppt课件
- 国家开放大学《人文英语3》章节测试参考答案
- 高教类课件:微电影创作教程
评论
0/150
提交评论