就像硬件工程師們先設(shè)計(jì)和制造出可用于各種電子設(shè)備的元件,然后利用它們組裝成設(shè)備一樣,控制系統(tǒng)軟件開發(fā)者可以利用軟件組件去組裝自己的程序塊,且很放心地知道這些組件是無故障的。這些組件不使用全局變量,并且獨(dú)立于任何應(yīng)用程序。組件對(duì)象模型(Component Object Model---COM)就是軟件組件采用的一種常規(guī)結(jié)構(gòu)。它根據(jù)面向?qū)ο缶幊蹋∣bject Oriented Programming---OOP)的思想,將組件對(duì)象化,給出了面向?qū)ο筌浖M件(或簡稱為對(duì)象組件)的標(biāo)準(zhǔn)。 COM首次是在對(duì)象鏈接與嵌入(Object Linking and Embedding---OLE)2.0版中引入的,它是一種標(biāo)準(zhǔn),而非一種實(shí)現(xiàn)。COM解釋了組件之間該如何通信,但為了具體實(shí)現(xiàn)它,還需要用到另一個(gè)東西,即ActiveX。 在設(shè)計(jì)COM的過程中,微軟解決了下列問題: (1)交互操作能力。開發(fā)者怎樣才能創(chuàng)建出獨(dú)立的組件,使其能與其它組件充分地協(xié)作,而不用考慮它們是由誰創(chuàng)建的? (2)版本控制。一旦某個(gè)組件正由其他組件或應(yīng)用程序使用,怎樣才能改變或升級(jí)這個(gè)組件,而不影響正在使用它的組件或應(yīng)用程序? (3)與語言無關(guān)。怎樣才能確保用不同語言編寫的組件能協(xié)同工作? (4)透明的跨進(jìn)程交互操作。開發(fā)者怎樣才能編寫組件,使其能在進(jìn)程內(nèi)或進(jìn)程外工作? 然而,OLE2中的COM只解決了同一網(wǎng)絡(luò)中對(duì)象之間的交互問題,而沒有解決對(duì)象在不同網(wǎng)絡(luò)中的其它機(jī)器上生存或執(zhí)行的問題,對(duì)這一問題的解決將打開通向在Windows環(huán)境下的分布對(duì)象結(jié)構(gòu)之路。為了適應(yīng)這一需要,微軟開發(fā)出了分布式組件對(duì)象模型