高级软件工程(vc与com、corba与com比较.ppt

上传人:豆**** 文档编号:59777443 上传时间:2022-11-13 格式:PPT 页数:27 大小:831KB
返回 下载 相关 举报
高级软件工程(vc与com、corba与com比较.ppt_第1页
第1页 / 共27页
高级软件工程(vc与com、corba与com比较.ppt_第2页
第2页 / 共27页
点击查看更多>>
资源描述

《高级软件工程(vc与com、corba与com比较.ppt》由会员分享,可在线阅读,更多相关《高级软件工程(vc与com、corba与com比较.ppt(27页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、高级软件工程(高级软件工程(VC与与COM、CORBA与与COM比较)比较)直接利用直接利用 C+语言开发语言开发 COM 程序程序需要处理许多重复性工作需要处理许多重复性工作例如例如 IUnknown 接口的实现接口的实现类厂的实现类厂的实现DLL程序入口函数程序入口函数 等等建立一套标准的类库非常有意义建立一套标准的类库非常有意义VC+提供了两套这样的类库:提供了两套这样的类库:MFC库库ATL库库(1)类库的作用)类库的作用COM与类库与类库2(2)MFC基本思路:基本思路:采用内嵌接口类成员的方式实现多接口采用内嵌接口类成员的方式实现多接口COM对象对象 未采用多重继承方式未采用多重继

2、承方式实现方式:实现方式:CCmdTarget提供提供COM对象实现的所有支持对象实现的所有支持利用接口映射表实现任意多个接口利用接口映射表实现任意多个接口COleObjectFactory实现通用类厂实现通用类厂COM与类库与类库3#define DECLARE_INTERFACE_MAP()private:static const AFX_INTERFACEMAP_ENTRY _interfaceEntries;protected:static AFX_DATA const AFX_INTERFACEMAP interfaceMap;static const AFX_INTERFACEMA

3、P*PASCAL _GetBaseInterfaceMap();virtual const AFX_INTERFACEMAP*GetInterfaceMap()const;CCmdTarget定义的接口映射表(定义的接口映射表(afxwin.h)COM与类库与类库4struct AFX_INTERFACEMAP_ENTRYconst void*piid;/the interface id(IID)(NULL for aggregate)size_t nOffset;/offset of the interface vtable from m_unknown;struct AFX_INTERFA

4、CEMAPconst AFX_INTERFACEMAP*(PASCAL*pfnGetBaseMap)();/NULL is root classconst AFX_INTERFACEMAP_ENTRY*pEntry;/map for this class;宏定义中用到的数据结构(宏定义中用到的数据结构(afxwin.h)COM与类库与类库5#define BEGIN_INTERFACE_MAP(theClass,theBase)const AFX_INTERFACEMAP*PASCAL theClass:_GetBaseInterfaceMap()return&theBase:interfac

5、eMap;const AFX_INTERFACEMAP*theClass:GetInterfaceMap()const return&theClass:interfaceMap;AFX_COMDAT const AFX_DATADEF AFX_INTERFACEMAP theClass:interfaceMap=&theClass:_GetBaseInterfaceMap,&theClass:_interfaceEntries0,;AFX_COMDAT const AFX_DATADEF AFX_INTERFACEMAP_ENTRY theClass:_interfaceEntries=#de

6、fine INTERFACE_PART(theClass,iid,localClass)&iid,offsetof(theClass,m_x#localClass),#define END_INTERFACE_MAP()NULL,(size_t)-1 ;接口映射表的进一步定义(接口映射表的进一步定义(afxdisp.h)COM与类库与类库6BEGIN_INTERFACE_MAP(COMPONENT,CCmdTarget)INTERFACE_PART(COMPONENT,IID_IX,IX)INTERFACE_PART(COMPONENT,IID_IY,IY)END_INTERFACE_MAP(

7、)接口映射表的使用方法:接口映射表的使用方法:COM与类库与类库7COleObjectFactory实现通用类厂实现通用类厂COleObjectFactory是一个通用的类厂是一个通用的类厂从从CCmdTarget派生派生并实现了并实现了IClassFactory2接口接口定义内嵌的类厂对象:定义内嵌的类厂对象:#define DECLARE_OLECREATE(class_name)public:static AFX_DATA COleObjectFactory factory;static AFX_DATA const GUID guid;利用利用COM对象提供对象提供CLSID和运行时刻

8、类型信息和运行时刻类型信息完成对象的创建工作完成对象的创建工作COM与类库与类库8(3)ATL基于模板的基于模板的C+类库类库用于建立小巧、快速用于建立小巧、快速 COM构件程序构件程序其内部模板类实现了其内部模板类实现了COM的一些的一些 基本特征:基本特征:IUnknown、IClassFactory、Idispatch等等及高级特征:及高级特征:dual interface、connection point等等使用多重继承的方式实现使用多重继承的方式实现COM接口接口COM与类库与类库9定义定义COM映射表等映射表等#define BEGIN_COM_MAP(x)public:typed

9、ef x _ComMapClass;static HRESULT WINAPI _Cache(void*pv,REFIID iid,void*ppvObject,DWORD dw)_ComMapClass*p=(_ComMapClass*)pv;p-Lock();HRESULT hRes=CComObjectRootBase:_Cache(pv,iid,ppvObject,dw);p-Unlock();return hRes;.COM与类库与类库10定义对象映射表定义对象映射表#define BEGIN_OBJECT_MAP(x)static _ATL_OBJMAP_ENTRY x=#defi

10、ne END_OBJECT_MAP()NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL;#define OBJECT_ENTRY(clsid,class)&clsid,class:UpdateRegistry,class:_ClassFactoryCreatorClass:CreateInstance,class:_CreatorClass:CreateInstance,NULL,0,class:GetObjectDescription,class:GetCategoryMap,class:ObjectMain,#define OBJECT_ENTRY_NON_C

11、REATEABLE(class)&CLSID_NULL,class:UpdateRegistry,NULL,NULL,NULL,0,NULL,class:GetCategoryMap,class:ObjectMain,COM与类库与类库11(4)IDEVC+VBPBDELPHI 等等COM与类库与类库12七、七、COM 与与 CORBA1、共同点、共同点2、不同点、不同点3、相互协作、相互协作4、相互竞争、相互竞争COM 与与 CORBA131、共同点、共同点都是二进制互操作标准都是二进制互操作标准 提供应用集成能力提供应用集成能力支持软件复用支持软件复用支持系统演化支持系统演化支持分布处理支

12、持分布处理COM 与与 CORBA14基本框架类似基本框架类似CORBA:IDLDIIORBCOSS(事务、事件、安全等)(事务、事件、安全等)领域领域COM:IDLIDispatchCOM库库COM+(IIS、MTS、MSMQ等)等)COM 与与 CORBA152、不同点、不同点技术源头技术源头COM:从从DDE、OLE等基础上发展等基础上发展先有现有技术与产品先有现有技术与产品后提炼模型后提炼模型CORBA:不同厂商联合制订:不同厂商联合制订先有规范先有规范后开发或改造支持规范的产品后开发或改造支持规范的产品COM 与与 CORBA16实现方式实现方式COM:COM库函数参与服务器对象的构

13、造库函数参与服务器对象的构造然后客户与服务器直接通信然后客户与服务器直接通信是操作系统的一部分是操作系统的一部分CORBA:ORB负责客户与服务器的所有活动负责客户与服务器的所有活动包括包括服务器对象的建立服务器对象的建立客户与服务器的操作客户与服务器的操作可以是操作系统的一部分可以是操作系统的一部分也可以是独立的应用程序也可以是独立的应用程序COM 与与 CORBA17异构平台异构平台COM:主要在主要在Windows、Macintosh上上Solaris也可用也可用MVS、HP/UX等处于等处于Beta测试阶段测试阶段在除了在除了Windows之外的系统上之外的系统上性能一般性能一般COR

14、BA:不同的不同的ORB对于异构平台的支持不同对于异构平台的支持不同多数以支持多数以支持UNIX为基本目标为基本目标在在Windows上存在大量上存在大量ORB产品产品COM 与与 CORBA18支持工具支持工具COM:支持工具多:支持工具多Visual StudioBC、DelphiRoseSymantec C+CORBA:支持工具逐步增加:支持工具逐步增加VC Delphi Symantec JavaCOM 与与 CORBA193、相互协作、相互协作(1)微软)微软参与参与OMG工作工作向向ORB厂商提供厂商提供COM licenseIONA ExpersoftBEAInpriseHPVi

15、sual Egde COM 与与 CORBA20(2)OMG规范中规定规范中规定 COM/CORBA InterworkingCOM 与与 CORBA212223(3)其它厂商提供协作产品)其它厂商提供协作产品IONA Orbix:Expersoft PowerBrokerBEA ObjectBrokerInprise VisiBrokerHP ORB PlusVisual Edge ObjectBridgeCOM 与与 CORBA244、相互竞争、相互竞争(1)互操作标准)互操作标准标准是技术标准是技术标准是产品标准是产品标准是市场标准是市场标准是唯一的标准是唯一的COM 与与 CORBA25(2)平台)平台COM 与与 CORBA平台是多样的平台是多样的平台是不断发展的平台是不断发展的(3)应用领域)应用领域应用领域是各具特色的应用领域是各具特色的应用领域是不断扩展的应用领域是不断扩展的26相互竞争相互竞争相互借鉴相互借鉴共同发展共同发展COM 与与 CORBA27

展开阅读全文
相关资源
相关搜索

当前位置:首页 > pptx模板 > 企业培训

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com