构件中间件软件工程ppt课件.ppt

构件中间件软件工程ppt课件.ppt

ID:59440727

大小:152.50 KB

页数:45页

时间:2020-09-18

构件中间件软件工程ppt课件.ppt_第1页
构件中间件软件工程ppt课件.ppt_第2页
构件中间件软件工程ppt课件.ppt_第3页
构件中间件软件工程ppt课件.ppt_第4页
构件中间件软件工程ppt课件.ppt_第5页
资源描述:

《构件中间件软件工程ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、管理变化性与复杂性是基于构件软件开发的动力——GrandyBooch,20011第七讲COM2内容一、综述二、COM接口三、COM实现四、包含与聚合31、COM的起源源于OLE:ObjectLinkandEmbeddingOLE1采用DDE(DynamicDataExchange)在不同的程序之间进行通信DDE缺点:效率低,稳定性不好,使用不方便COM是为克服上述不足而出现的OLE2以COM为基础但OLE未能体现COM优点一、综述42、什么是COM构件对象模型:ComponentObjectModel客户与构件为了能够互操作而遵循的标准COM标准包括规范与实现两部分规范部分定义了构件

2、之间的通信机制这些规范不依赖于任何特定的语言和操作系统实现部分即COM库为COM规范的具体实现提供一些核心服务什么是COM?53、COM构件以DLL或EXE形式发布的代码与语言无关以二进制形式发布可以在不妨碍客户的形式下被升级可以透明地在网络上被重新分配构件与类:一个构件可以由多个类实现接口与类:一个类可以实现多个接口64、COM库(COMLibrary)功能:(1)实现客户方与服务器方COM应用的创建过程(2)COM通过注册表查找本地服务器(即EXE程序)以及程序名与CLSID的转换(3)提供标准的内存控制方法DCOM的实现提供了分布式环境下的通信机制在操作系统层次以DLL文件的形

3、式存在75、COM特性语言无关性为跨语言合作开发提供了统一标准并得到不同集成开发环境的支持进程透明性进程内服务程序:DLL本地服务程序:EXE远地服务程序:DLL或EXE实现进程透明性的关键是COM库它负责服务体的定位管理对象的创建及对象与客户之间的通信复用性包含方式聚合方式8二、COM接口COM接口是COM规范的核心内容接口的意义(略)一个接口包含了一组函数在C++中,可以用抽象基类来定义COM接口接口的实现:vtbl指针虚拟函数表COM规范是指什么?9Vtbl指针虚拟函数表pIX接口的内存结构IX&Fx1&Fx2&Fx3&Fx410Vtbl的作用:提高接口实现的灵活性例子:一个实

4、现接口IX的类CA,CA包含2个数据:Vtbl指针虚拟函数表IX&Fx1&Fx2&Fx3&Fx4Data1Data2pAFx1Fx2Fx3Fx4CA11两个实例共享同一Vtbl:Vtbl指针虚拟函数表&Fx1&Fx2&Fx3&Fx4Data1Data2pA1pA2Fx1Fx2Fx3Fx4CAVtbl指针Data1Data212接口特点:实现级二进制,独立于编程语言稳定性客户与服务器依赖于接口继承性便于扩展接口,不提倡继承所有接口皆继承Iunknown13提供:生存期控制接口查询IUnknown的定义(IDL):interfaceIUnkown{virtualHRESULTQueryI

5、nterface(constIID&,void**ppv)=0;virtualULONGAddRef()=0;virtualULONGRelease()=0;}(1)IUnknown14Vtbl指针虚拟函数表IXQueryInterfaceAddRefRelease&FxpAQueryInterfaceAddRefReleaseFxCA所有接口都必须继承IUnknown15(2)引用计数AddRef与Release控制构件的生命期解决内存管理问题使构件能够自己将自己删除使用规则返回接口指针之前调用AddRef;使用完接口之后调用Release;赋值之后调用AddRef;16引用计数的

6、实现方式:在什么层次上进行计数构件对象接口构件构件引用记数对象引用记数对象引用记数对象1对象2接口接口接口接口接口引用记数接口引用记数接口引用记数接口引用记数17(3)接口查询一个COM对象(构件)可以实现多个接口使用QueryInterface查询某个构件是否支持某个特定的接口QueryInterface的使用voidfoo(Iunknown*pI){//Defineapointerfortheinterface.IX*pIX=NULL;//AskforinterfaceIXHRESULThr=pI->QueryInterface(IID_IX,(void**)&pIX);//Ch

7、eckreturnvalue.If(SUCCEEDED(hr)){//UseinterfacepIX->Fx();}}18QueryInterface的实现假定存在类CA,继承接口IX与IY:HRESULT_sfdcallCA::QueryInterface(constIID&iid,void**ppv){if(iid==IID_IUnknown){*ppv=static_cast(this);}elseif(iid==IID_IX){*ppv=

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。