|
網(wǎng)絡(luò)技術(shù)是從1990年代中期發(fā)展起來的新技術(shù),它把互聯(lián)網(wǎng)上分散的資源融為有機(jī)整體,實(shí)現(xiàn)資源的全面共享和有機(jī)協(xié)作,使人們能夠透明地使用資源的整體能力并按需獲取信息。資源包括高性能計(jì)算機(jī)、存儲(chǔ)資源、數(shù)據(jù)資源、信息資源、知識資源、專家資源、大型數(shù)據(jù)庫、網(wǎng)絡(luò)、傳感器等。 當(dāng)前的互聯(lián)網(wǎng)只限于信息共享,網(wǎng)絡(luò)則被認(rèn)為是互聯(lián)網(wǎng)發(fā)展的第三階段。 COM--Component Object Model,即組件對象模型,它是微軟提出的一套開發(fā)軟件的方法與規(guī)范。它也代表了一種軟件開發(fā)思想,那就是面向組件編程的思想。
眾所周知,由C到C++,實(shí)現(xiàn)了由面向過程編程到面向?qū)ο缶幊痰倪^渡。而COM的出現(xiàn),又引出了面向組件的思想。其實(shí),面向組件思想是面向?qū)ο笏枷氲囊环N延伸和擴(kuò)展。因此,就讓我們先來回憶一下面向?qū)ο蟮乃枷氚伞?/p> 面向?qū)ο笏枷胧菍⑺械牟僮饕约八僮鞯膶ο蠖歼M(jìn)行歸類(由class實(shí)現(xiàn)),而它的目標(biāo)是要盡量提高代碼的可重用性(這也是面向?qū)ο笙啾让嫦蜻^程最大的優(yōu)點(diǎn)之一)。比如,有兩個(gè)程序A和B都需要對class C的對象進(jìn)行操作,那么class C的代碼就可以重用了(即A和B都可以使用class C的代碼)。但是,對于這一點(diǎn),面向?qū)ο笞龅貌⒉粔蚝。還是舉剛才的例子,程序A和B都要對class C的對象進(jìn)行操作,那么,程序A和B的編程人員都必須將class C的代碼拷貝過來,然后重新編譯一次,這將是多么麻煩的事!況且,如果class C的代碼沒有公開,那這種重用就根本不可能實(shí)現(xiàn)了(除非程序A和B的編程人員和class C的編程人員是同一個(gè)人或者團(tuán)隊(duì),但這樣局限性就相當(dāng)大了)。 由于面向?qū)ο蟮倪@些局限性,很多程序員就會(huì)想,如果我們編程需要重用別人的成果時(shí),不需要重新編譯別人的代碼那就好了。換句話說,我們要達(dá)到的目標(biāo)是,直接重用別人的成果而不是重用別人的代碼。這樣說也許很抽象,舉個(gè)例子大家就會(huì)比較明白。比如將class C的代碼編譯生成一個(gè)dll,那么當(dāng)其他程序員想要重用class C時(shí),就只需要在自己的程序中加載這個(gè)dll而不需要重新編譯class C的代碼了(這也就是組件必須要能動(dòng)態(tài)鏈接的原因)。正是這種思路引出了面向組件的編程思想。 下面,我就簡單介紹一下面向組件的思想。在以前,應(yīng)用程序總是被編寫成一個(gè)單獨(dú)的模塊,就是說一個(gè)應(yīng)用程序就是一個(gè)單獨(dú)的二進(jìn)制文件。后來在引入了面向組件的編程思想后,原本單個(gè)的應(yīng)用程序文件被分隔成多個(gè)模塊來分別編寫,每個(gè)模塊具有一定的獨(dú)立性,也應(yīng)具有一定的與本應(yīng)用程序的無關(guān)性。一般來說,這種模塊的劃分是以功能作為標(biāo)準(zhǔn)的。比如,一個(gè)網(wǎng)上辦公管理系統(tǒng),從功能上說它需要包含網(wǎng)絡(luò)通信、數(shù)據(jù)庫操作等部分,我們就可以將網(wǎng)絡(luò)通信和數(shù)據(jù)庫操作的部分分別提出來做成兩個(gè)獨(dú)立的模塊。那么,原本單個(gè)的應(yīng)用程序就分隔成了三個(gè)模塊:主控模塊、通信模塊和數(shù)據(jù)庫模塊。而這里的通信模塊和數(shù)據(jù)庫模塊還可以做得使其具有一定的通用性,那么其他的應(yīng)用程序也就可以利用這些模塊了。這樣做的好處有很多,比如當(dāng)對軟件進(jìn)行升級的時(shí)候,只要對需要改動(dòng)的模塊進(jìn)行升級,然后用重新生成的一個(gè)新模塊來替換掉原來的舊模塊(但必須保持接口不變),而其他的模塊可以完全保持不變。這樣,軟件升級就變得更加方便,工作量也更小。 說了這么多,總結(jié)一下:面向組件編程思想,歸結(jié)起來就是四個(gè)字:模塊分隔。這里的“分隔”有兩層含義,第一就是要“分”,也就是要將應(yīng)用程序(尤其是大型軟件)按功能劃分成多個(gè)模塊;第二就是要“隔”,也就是每一個(gè)模塊要有相當(dāng)程度的獨(dú)立性,要盡量與其他模塊“隔”開。這四個(gè)字是面向組件編程思想的精華所在,也是COM的精華所在!理解了這四個(gè)字,也就真正理解了面向組件編程的思想。(這里說一點(diǎn)題外話,COM其實(shí)是一套規(guī)范或者說一套標(biāo)準(zhǔn),但是在我看來,COM的核心還在于它的思想,也就是面向組件編程思想。標(biāo)準(zhǔn)誰都能定,但是思想只有一個(gè)!) 二、COM的優(yōu)點(diǎn) COM的優(yōu)點(diǎn)也就是面向組件編程思想的優(yōu)點(diǎn)。而面向組件編程思想有很多的優(yōu)點(diǎn),上面所說的便于軟件升級只是其中之一。對于它的優(yōu)點(diǎn),我總結(jié)了一下,有下面幾條: 1、便于重用,使軟件開發(fā)更快捷 2、便于軟件升級 3、便于軟件開發(fā)的分工協(xié)作 4、便于用戶定制自己的應(yīng)用 以上幾點(diǎn),第一和第二點(diǎn)都不用再多說了,前面講面向組件編程思想的部分里面已經(jīng)充分展示出了這兩點(diǎn)優(yōu)點(diǎn)。在這里我解釋一下第三和第四點(diǎn)。 如今的很多大型軟件,都不可能由某一個(gè)人單獨(dú)開發(fā),甚至不會(huì)由某一個(gè)公司去單獨(dú)開發(fā)。這是因?yàn)楝F(xiàn)在的很多大型軟件,綜合性太強(qiáng),涉及的面也太廣。而一個(gè)人的精力是有限的,不可能學(xué)會(huì)這么多方面的知識,也不可能掌握到這么多方面的編程技術(shù),即使有可能,這樣做的效率也是很低下的。所以,通常的情況是分工協(xié)作。仍以前面提到的網(wǎng)上辦公管理系統(tǒng)為例,這個(gè)系統(tǒng)分為了三個(gè)模塊:主控模塊、通信模塊和數(shù)據(jù)庫模塊。由于這三個(gè)模塊具有相當(dāng)?shù)莫?dú)立性,那么就可以將現(xiàn)有的所有開發(fā)人員分為三組,每一組負(fù)責(zé)一個(gè)模塊。而這三組之間,只需要商量好相互間的接口就可以了。這樣,對于每一個(gè)開發(fā)人員來說,就不需要掌握所有的編程技術(shù),甚至不需要了解其他模塊的具體實(shí)現(xiàn),而軟件仍然能有效的開發(fā)成功。這就是所謂的便于軟件開發(fā)的分工協(xié)作了。 除此之外,如果一個(gè)大型的軟件希望允許用戶在一定程度上定制自己的應(yīng)用,那么COM也是最好的選擇。比方說一個(gè)軟件由兩個(gè)模塊組成,模塊A和模塊B,現(xiàn)在軟件的開發(fā)商希望給予用戶一定的靈活性,希望可以允許用戶自己定制模塊B來實(shí)現(xiàn)自己特定的應(yīng)用,那么就只需要公開模塊B的所有接口;而用戶自己編程實(shí)現(xiàn)模塊B時(shí)也只需要實(shí)現(xiàn)了所有的這些接口就行了。當(dāng)然,這里面還有很多問題,比如COM組件的注冊,這涉及到COM標(biāo)準(zhǔn)的一些細(xì)節(jié),在這里不作討論。 網(wǎng)絡(luò)的神奇作用吸引著越來越多的用戶加入其中,正因如此,網(wǎng)絡(luò)的承受能力也面臨著越來越嚴(yán)峻的考驗(yàn)―從硬件上、軟件上、所用標(biāo)準(zhǔn)上......,各項(xiàng)技術(shù)都需要適時(shí)應(yīng)勢,對應(yīng)發(fā)展,這正是網(wǎng)絡(luò)迅速走向進(jìn)步的催化劑。 |
溫馨提示:喜歡本站的話,請收藏一下本站!