高級軟件工程06(COM基礎:接口與實現(xiàn))

高級軟件工程06(COM基礎:接口與實現(xiàn))

ID:38940437

大?。?53.00 KB

頁數(shù):54頁

時間:2019-06-21

高級軟件工程06(COM基礎:接口與實現(xiàn))_第1頁
高級軟件工程06(COM基礎:接口與實現(xiàn))_第2頁
高級軟件工程06(COM基礎:接口與實現(xiàn))_第3頁
高級軟件工程06(COM基礎:接口與實現(xiàn))_第4頁
高級軟件工程06(COM基礎:接口與實現(xiàn))_第5頁
資源描述:

《高級軟件工程06(COM基礎:接口與實現(xiàn))》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在教育資源-天天文庫

1、構件對象模型:COM1內(nèi)容基礎部分綜述接口實現(xiàn)高級部分包含與聚合COM與VC自動化DCOM2(1)COM的起源源于OLE:ObjectLinkandEmbeddingOLE1采用DDE(DynamicDataExchange)在不同的程序之間進行通信DDE缺點:效率低,穩(wěn)定性不好,使用不方便COM是為克服上述不足而出現(xiàn)的OLE2以COM為基礎但OLE未能體現(xiàn)COM優(yōu)點1綜述COM基礎3(2)什么是COM構件對象模型:ComponentObjectModel客戶與構件為了能夠互操作而遵循的標準COM標準包括規(guī)范與實現(xiàn)兩部分規(guī)范部分定義了構件之間的通信機制這些規(guī)范不依賴于任何特

2、定的語言和操作系統(tǒng)實現(xiàn)部分即COM庫為COM規(guī)范的具體實現(xiàn)提供一些核心服務COM基礎4(3)COM構件以DLL或EXE形式發(fā)布的代碼與語言無關以二進制形式發(fā)布可以在不妨礙客戶的形式下被升級可以透明地在網(wǎng)絡上被重新分配構件與類:一個構件可以由多個類實現(xiàn)接口與類:一個類可以實現(xiàn)多個接口COM基礎5(4)COM庫(COMLibrary)功能:(1)實現(xiàn)客戶方與服務器方COM應用的創(chuàng)建過程(2)COM通過注冊表查找本地服務器(即EXE程序)以及程序名與CLSID的轉換(3)提供標準的內(nèi)存控制方法DCOM的實現(xiàn)提供了分布式環(huán)境下的通信機制在操作系統(tǒng)層次以DLL文件的形式存在COM基礎

3、6(5)COM特性語言無關性為跨語言合作開發(fā)提供了統(tǒng)一標準并得到不同集成開發(fā)環(huán)境的支持進程透明性進程內(nèi)服務程序:DLL本地服務程序:EXE遠地服務程序:DLL或EXE實現(xiàn)進程透明性的關鍵是COM庫它負責服務體的定位管理對象的創(chuàng)建及對象與客戶之間的通信復用性包含方式聚合方式COM基礎7(6)COM發(fā)展趨勢操作系統(tǒng)成為系統(tǒng)的基本軟件模型數(shù)據(jù)庫OLEDB/ADO以COM的方式為數(shù)據(jù)訪問提供一致的接口InternetActiveX包含了所有基于COM的Internet相關技術COM+增加MTS等服務COM基礎82COM接口COM接口是COM規(guī)范的核心內(nèi)容接口的意義(略)一個接口包含

4、了一組函數(shù)在C++中,可以用抽象基類來定義COM接口接口的實現(xiàn):vtbl指針虛擬函數(shù)表COM基礎9Vtbl指針虛擬函數(shù)表pIX接口的內(nèi)存結構IX&Fx1&Fx2&Fx3&Fx4COM基礎10Vtbl的作用:提高接口實現(xiàn)的靈活性例子:一個實現(xiàn)接口IX的類CA,CA包含2個數(shù)據(jù):Vtbl指針虛擬函數(shù)表IX&Fx1&Fx2&Fx3&Fx4Data1Data2pAFx1Fx2Fx3Fx4CACOM基礎11兩個實例共享同一Vtbl:Vtbl指針虛擬函數(shù)表&Fx1&Fx2&Fx3&Fx4Data1Data2pA1pA2Fx1Fx2Fx3Fx4CAVtbl指針Data1Data2COM基

5、礎12接口特點實現(xiàn)級二進制,獨立于編程語言穩(wěn)定性客戶與服務器依賴于接口繼承性便于擴展接口,不提倡繼承所有接口皆繼承Iunknown)多態(tài)性:COM基礎13(1)功能提供:生存期控制接口查詢IUnknown的定義(IDL):interfaceIUnkown{virtualHRESULTQueryInterface(constIID&,void**ppv)=0;virtualULONGAddRef()=0;virtualULONGRelease()=0;}IUnknownCOM基礎14Vtbl指針虛擬函數(shù)表IXQueryInterfaceAddRefRelease&FxpAQu

6、eryInterfaceAddRefReleaseFxCA所有接口都必須繼承IUnknownCOM基礎15IUnknown指針的獲取IUnknown*CreateInstance();創(chuàng)建構件時,客戶可以使用CreateInstance,而不是new。CreateInstance的定義:IUnknown*CreateInstance(){IUnknown*pI=static_cast(newfoo);pI->AddRef();returnpI;}COM基礎16(2)引用計數(shù)AddRef與Release控制構件的生命期解決內(nèi)存管理問題使構件能夠自己將自己刪除使用規(guī)則

7、返回接口指針之前調用AddRef;使用完接口之后調用Release;賦值之后調用AddRef;COM基礎17引用計數(shù)的實現(xiàn)方式:在什么層次上進行計數(shù)構件對象接口構件構件引用記數(shù)對象引用記數(shù)對象引用記數(shù)對象1對象2接口接口接口接口接口引用記數(shù)接口引用記數(shù)接口引用記數(shù)接口引用記數(shù)COM基礎18(3)接口查詢一個COM對象(構件)可以實現(xiàn)多個接口使用QueryInterface查詢某個構件是否支持某個特定的接口QueryInterface的使用voidfoo(Iunknown*pI){//Defineapointerfo

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。