版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、C類的動態(tài)組件化技術(shù)類的動態(tài)組件化技術(shù)0640303401蔣浩平關(guān)鍵詞關(guān)鍵詞COM組件接口生命周期C類ATL組件類C基類ATL模板基類繼承摘要摘要在組件化編程的時代,如何復(fù)用歷史累積的大量沒有組件特性的C類?本文從工程的角度對這一問題進(jìn)行探討,利用現(xiàn)有組件技術(shù),提出了一套將C類平滑過渡到COM組件的完整解決方案。1.問題的提出問題的提出自從Microsoft公布了COM(ComponentObjectModel,組件對象模型,簡稱COM
2、)技術(shù)以后,Windows平臺上的開發(fā)模式發(fā)生了巨大的變化,以COM為基礎(chǔ)的一系列組件技術(shù)將Windows編程帶入了組件化時代,傳統(tǒng)的面向?qū)ο蟮能浖_發(fā)方法已經(jīng)逐漸被面向組件的方法所取代。COM標(biāo)準(zhǔn)建立在二進(jìn)制可執(zhí)行代碼級的基礎(chǔ)上,不論何種工具、語言開發(fā)的組件,只要符合COM規(guī)范,就可復(fù)用于VC、VB、Delphi、BC等各種開發(fā)環(huán)境中。COM的語言無關(guān)性將軟件復(fù)用的層次從源代碼級推進(jìn)到了二進(jìn)制級,復(fù)用更方便,也更安全。然而,COM技術(shù)
3、帶來全新的軟件設(shè)計和開發(fā)模式的同時,也帶來了新的問題。許多軟件公司在開發(fā)自己的軟件產(chǎn)品過程中,都累積了大量C類,這些代碼設(shè)計精良,功能完備,以面向?qū)ο蟮臉?biāo)準(zhǔn)來檢驗(yàn)無可挑剔。然而,這些代碼不支持COM,將無法在COM時代繼續(xù)被復(fù)用。如果它們在軟件組件化的趨勢中被淘汰,那對軟件公司和開發(fā)人員來說都是極大的損失。COM專家DonBox曾說過,“COMisasuperC”。這給了我們一個啟示,是否可以實(shí)現(xiàn)一種技術(shù),能夠動態(tài)的為普通C類加上一層C
4、OM的封裝呢?這樣,既可以保持這些代碼自身的完整和特性,使它們能繼續(xù)應(yīng)用于原來的系統(tǒng),也可以在需要作為組件使用的時候,把它們動態(tài)轉(zhuǎn)變成組件,復(fù)用于新系統(tǒng)。一個自然而然的想法是,為每一個C類開發(fā)一個只暴露一個接口的COM組件,將原C類的每個public方法都對應(yīng)于該接口的一個方法,接口方法的實(shí)現(xiàn)可以簡單的調(diào)用相對應(yīng)的C類方法即可。這樣,程序邏輯由原有的C類控制,但COM層的封裝則由組件提供。基本思路如下圖所示:指向調(diào)用調(diào)用暴露接口ATL組
5、件類(CATL)接口(IItf)Method1Method2CImplementm_pCPPObjLink2CPPObj(CImplementpObj)應(yīng)用C類(CImplement)public:Method1public:Method22.2.集合型集合型C類的組件化類的組件化集合型C類的情況有所不同。集合型C類以數(shù)組(array)、列表(list)、映射表(map)的形式管理其它C對象。集合對象和它管理的元素對象都被包裝成組件后,
6、集合型ATL對象可能調(diào)用一個“Destroy”方法,期望刪除某一個元素ATL對象;這一操作的實(shí)質(zhì)卻是,集合型C對象的“Destroy”方法被調(diào)用,將元素C對象刪除了,而元素ATL對象卻不知道。這一操作的結(jié)果導(dǎo)致了元素的ATL對象存在,而其綁定的C對象卻被刪除的情況,兩者的生命周期出現(xiàn)了不一致。為了解決這個問題,我們需要在C對象被刪除時,能將ATL對象同時刪除;而在ATL對象的引用計數(shù)為0需要刪除自身時,也能把C對象刪除??尚械慕鉀Q方案是
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- c++ bitset類的使用及簡介
- c++課程設(shè)計——矩陣類
- c++動態(tài)優(yōu)先級調(diào)度算法
- c++類對象的復(fù)制-拷貝構(gòu)造函數(shù)
- c++程序動態(tài)切片系統(tǒng)的研究與實(shí)現(xiàn)
- C++程序動態(tài)切片系統(tǒng)的研究與實(shí)現(xiàn).pdf
- c++課程設(shè)計——日期類設(shè)計報告
- 實(shí)例解析c++、cli的串行化
- c++主要的技術(shù)領(lǐng)域應(yīng)用
- c++課程設(shè)計---棧類的設(shè)計與使用
- 基于SoPC系統(tǒng)的C++類模塊硬件實(shí)現(xiàn).pdf
- 未來網(wǎng)絡(luò)組件行為的動態(tài)感知與組件聚類機(jī)制研究.pdf
- c++課程設(shè)計---字符串類的設(shè)計
- 《c++程序設(shè)計課程設(shè)計——復(fù)數(shù)類》
- c++論文
- c++講解
- c++字典
- 指針(pointer)——c c++的精髓
- c++(20122013c)
- c++建議
評論
0/150
提交評論