10.3.2 COM對(duì)象重用
COM不支持任何形式的實(shí)現(xiàn)繼承。
COM支持兩種形式的對(duì)象組裝:包含(Containment)和 聚集(Aggregation)。
包含 是一個(gè)對(duì)象 擁有 指向另一個(gè)對(duì)象的唯一引用。
外部對(duì)象 只是把請(qǐng)求轉(zhuǎn)發(fā)給內(nèi)部對(duì)象,所謂轉(zhuǎn)發(fā) 就是調(diào)用內(nèi)部對(duì)象的方法。
包含能重用內(nèi)含于其他構(gòu)件的實(shí)現(xiàn),是完全透明的。
如果包含層次較深,或者被轉(zhuǎn)發(fā)的方法本身相對(duì)簡(jiǎn)單,包含會(huì)存在性能上的問(wèn)題。因此 COM定義第二類(lèi)重用形式,聚集。
聚集直接把內(nèi)部對(duì)象接口引用傳給外部對(duì)象的客戶(hù),而不是再轉(zhuǎn)發(fā)請(qǐng)求。
保持透明性是很重要的,因?yàn)橥獠繉?duì)象的客戶(hù)無(wú)法辨別哪個(gè)特定接口是從內(nèi)部對(duì)象聚集而來(lái)的。
10.3.3 接口和多態(tài)
COM接口可通過(guò)(單)接口繼承 從其他 COM接口中派生。
COM 的接口繼承與其支持的多態(tài)無(wú)關(guān)。
接口和版本化,一旦公布,COM 接口和他的規(guī)范不允許以任何形式改變。
既解決了語(yǔ)法問(wèn)題,也解決了弱基類(lèi)問(wèn)題。
IID 可用于標(biāo)志接口中的版本,因?yàn)榻涌诳偸峭ㄟ^(guò)IID被請(qǐng)求。
CORBA 討論中所提及的傳遞性版本沖突問(wèn)題 在COM中不會(huì)發(fā)生。
構(gòu)件可以選擇實(shí)現(xiàn)接口的多個(gè)版本,處理方式就像處理 別的不同接口一樣。
基于COM的系統(tǒng)能并發(fā)支持舊接口和新接口。
10.3.4 COM對(duì)象的創(chuàng)建和COM庫(kù)
創(chuàng)建 COM類(lèi) 的實(shí)例對(duì)象時(shí),COM需要把給定的 CLSID 映射為包含所請(qǐng)求的類(lèi)的實(shí)際構(gòu)件。COM 支持系統(tǒng)注冊(cè)器,它類(lèi)似 CORBA存儲(chǔ)器。
進(jìn)程內(nèi)(inprocess)服務(wù)器、本地服務(wù)器、遠(yuǎn)程服務(wù)器。
10.3.5 從 COM到分布式 COM(DCOM)
代理(Proxy)對(duì)象 和 服務(wù)器 樁(Stub)對(duì)象。
為支持 跨進(jìn)程 或 跨機(jī)器 的透明通信,COM在客戶(hù)端創(chuàng)建代理對(duì)象,在服務(wù)器端創(chuàng)建樁對(duì)象。
跨進(jìn)程傳遞的 接口引用需要被映射為 對(duì)象引用。
DCOM 將數(shù)據(jù)整理成平臺(tái)無(wú)關(guān)的網(wǎng)絡(luò)數(shù)據(jù)表達(dá)(NDR)形式。
10.3.6 復(fù)合文檔和OLE 對(duì)象
OLE 可被 概括為 一組預(yù)定義的 COM 接口。
文檔容器 和 文檔服務(wù)器。
文檔服務(wù)器 是提供某種內(nèi)容模型 和顯示、操作內(nèi)容的能力。文檔容器沒(méi)有自己的內(nèi)容,但可以接受任意文檔服務(wù)器提供的內(nèi)容成分。
許多文檔容器也是文檔服務(wù)器,即是說(shuō),他們支持外來(lái)的成分,同時(shí)也有自己的內(nèi)容。
10.3.7 .NET 框架
沒(méi)有原始類(lèi)型。
相關(guān)推薦:北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |