收藏 分享(赏)

高级软件工程09(VC与COM、CORBA与COM比较).ppt

上传人:tkhy51908 文档编号:5163546 上传时间:2019-02-11 格式:PPT 页数:27 大小:148.50KB
下载 相关 举报
高级软件工程09(VC与COM、CORBA与COM比较).ppt_第1页
第1页 / 共27页
高级软件工程09(VC与COM、CORBA与COM比较).ppt_第2页
第2页 / 共27页
高级软件工程09(VC与COM、CORBA与COM比较).ppt_第3页
第3页 / 共27页
高级软件工程09(VC与COM、CORBA与COM比较).ppt_第4页
第4页 / 共27页
高级软件工程09(VC与COM、CORBA与COM比较).ppt_第5页
第5页 / 共27页
点击查看更多>>
资源描述

1、1,6、COM与类库,(1)类库的作用 (2)MFC (3)ATL (4)IDE,COM与类库,2,直接利用 C+语言开发 COM 程序 需要处理许多重复性工作例如 IUnknown 接口的实现类厂的实现DLL程序入口函数 等建立一套标准的类库非常有意义VC+提供了两套这样的类库: MFC库ATL库,(1)类库的作用,COM与类库,3,(2)MFC,基本思路:采用内嵌接口类成员的方式实现多接口COM对象未采用多重继承方式实现方式:CCmdTarget提供COM对象实现的所有支持利用接口映射表实现任意多个接口COleObjectFactory实现通用类厂,COM与类库,4,#define DEC

2、LARE_INTERFACE_MAP() private: static const AFX_INTERFACEMAP_ENTRY _interfaceEntries; protected: static AFX_DATA const AFX_INTERFACEMAP interfaceMap; static const AFX_INTERFACEMAP* PASCAL _GetBaseInterfaceMap(); virtual const AFX_INTERFACEMAP* GetInterfaceMap() const; ,CCmdTarget定义的接口映射表(afxwin.h),CO

3、M与类库,5,struct AFX_INTERFACEMAP_ENTRY const void* piid; / the interface id (IID) (NULL for aggregate)size_t nOffset; / offset of the interface vtable from m_unknown ;struct AFX_INTERFACEMAP const AFX_INTERFACEMAP* (PASCAL * pfnGetBaseMap)();/NULL is root classconst AFX_INTERFACEMAP_ENTRY* pEntry; / m

4、ap for this class ;,宏定义中用到的数据结构(afxwin.h),COM与类库,6,#define BEGIN_INTERFACE_MAP(theClass, theBase) const AFX_INTERFACEMAP* PASCAL theClass:_GetBaseInterfaceMap() return ,接口映射表的进一步定义(afxdisp.h),COM与类库,7,BEGIN_INTERFACE_MAP(COMPONENT, CCmdTarget)INTERFACE_PART(COMPONENT, IID_IX, IX)INTERFACE_PART(COMPO

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

6、的创建工作,COM与类库,9,(3)ATL,基于模板的C+类库用于建立小巧、快速 COM构件程序其内部模板类实现了COM的一些基本特征:IUnknown、IClassFactory、Idispatch等 及高级特征:dual interface、 connection point等使用多重继承的方式实现COM接口,COM与类库,10,定义COM映射表等#define BEGIN_COM_MAP(x) public: typedef x _ComMapClass; static HRESULT WINAPI _Cache(void* pv, REFIID iid, void* ppvObject

7、, DWORD dw) _ComMapClass* p = (_ComMapClass*)pv; p-Lock(); HRESULT hRes = CComObjectRootBase:_Cache(pv, iid, ppvObject, dw); p-Unlock(); return hRes; .,COM与类库,11,定义对象映射表#define BEGIN_OBJECT_MAP(x) static _ATL_OBJMAP_ENTRY x = #define END_OBJECT_MAP() NULL, NULL, NULL, NULL, NULL,NULL, NULL, NULL; #d

8、efine 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_CREATEABLE(class) &CLSID_NULL, class:UpdateRegistr

9、y, NULL, NULL, NULL, 0, NULL, class:GetCategoryMap, class:ObjectMain ,COM与类库,12,(4)IDE,VC+ VB PB DELPHI 等,COM与类库,13,七、COM 与 CORBA,1、共同点 2、不同点 3、相互协作 4、相互竞争,COM 与 CORBA,14,1、共同点,都是二进制互操作标准提供应用集成能力支持软件复用支持系统演化支持分布处理,COM 与 CORBA,15,基本框架类似CORBA:IDLDIIORBCOSS(事务、事件、安全等)领域COM: IDLIDispatchCOM库COM+(IIS、MTS

10、、MSMQ等),COM 与 CORBA,16,2、不同点,技术源头COM: 从DDE、OLE等基础上发展先有现有技术与产品后提炼模型CORBA:不同厂商联合制订先有规范后开发或改造支持规范的产品,COM 与 CORBA,17,实现方式,COM: COM库函数参与服务器对象的构造然后客户与服务器直接通信是操作系统的一部分CORBA:ORB负责客户与服务器的所有活动包括 服务器对象的建立客户与服务器的操作可以是操作系统的一部分也可以是独立的应用程序,COM 与 CORBA,18,异构平台COM: 主要在Windows、Macintosh上Solaris也可用MVS、HP/UX等处于Beta测试阶段

11、在除了Windows之外的系统上性能一般 CORBA: 不同的ORB对于异构平台的支持不同多数以支持UNIX为基本目标在Windows上存在大量ORB产品,COM 与 CORBA,19,支持工具,COM:支持工具多Visual StudioBC、DelphiRoseSymantec C+CORBA:支持工具逐步增加VCDelphiSymantec Java,COM 与 CORBA,20,3、相互协作,(1)微软参与OMG工作向ORB厂商提供COM licenseIONA ExpersoftBEAInpriseHPVisual Egde,COM 与 CORBA,21,(2)OMG,规范中规定 C

12、OM/CORBA Interworking,COM 与 CORBA,22,23,24,(3)其它厂商提供协作产品,IONA Orbix:Expersoft PowerBrokerBEA ObjectBrokerInprise VisiBrokerHP ORB PlusVisual Edge ObjectBridge,COM 与 CORBA,25,4、相互竞争,(1)互操作标准,标准是技术标准是产品标准是市场标准是唯一的,COM 与 CORBA,26,(2)平台,COM 与 CORBA,平台是多样的平台是不断发展的,(3)应用领域,应用领域是各具特色的应用领域是不断扩展的,27,相互竞争相互借鉴共同发展,COM 与 CORBA,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 网络科技 > 软件工程

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报