1.2.4 OOP的優(yōu)點(diǎn)
OOP具有許多優(yōu)點(diǎn),無論是對(duì)于程序設(shè)計(jì)者或者用戶來說都是如此。面向?qū)ο鬄檐浖a(chǎn)品擴(kuò)展和質(zhì)量保證中的許多問題提供了解決辦法。這項(xiàng)技術(shù)能夠大大提高程序員的生產(chǎn)力,并可提高軟件的質(zhì)量以及降低其維護(hù)費(fèi)用。其主要的優(yōu)點(diǎn)陳列于下:
1、 通過繼承,我們可以大幅減少多余的代碼,并擴(kuò)展現(xiàn)有代碼的用途; 2、 我們可以在標(biāo)準(zhǔn)的模塊上(這里所謂的“標(biāo)準(zhǔn)”指程序員之間彼此達(dá)成的協(xié)議)構(gòu)建 我們的程序,而不必一切從頭開始。這可以減少軟件開發(fā)時(shí)間并提高生產(chǎn)效率;
3、 數(shù)據(jù)隱藏的概念幫助程序員們保護(hù)程序免受外部代碼的侵襲;
4、 允許一個(gè)對(duì)象的多個(gè)實(shí)例同時(shí)存在,而且彼此之間不會(huì)相互干擾; 5、 允許將問題空間中的對(duì)象直接映射到程序中;
6、 基于對(duì)象的工程可以很容易的分割為獨(dú)立的部分;
7、 以數(shù)據(jù)為中心的設(shè)計(jì)方法允許我們抓住可實(shí)現(xiàn)模型的更多細(xì)節(jié);
8、 面向?qū)ο蟮南到y(tǒng)很容易從小到大逐步升級(jí);
9、 對(duì)象間通訊所使用的消息傳遞技術(shù)與外部系統(tǒng)接口部分的描述更簡單;
10、 更便于控制軟件復(fù)雜度。
當(dāng)需要將以上所說的所有特性有機(jī)的結(jié)合于一個(gè)面向?qū)ο笙到y(tǒng)中,它們之間的相對(duì)重要性就取決于工程的類型和程序員的喜好。為了獲得上述的某些優(yōu)勢(shì),必須考慮很多事情。例如,對(duì)象庫必須可以被重用。技術(shù)還在不停的發(fā)展,現(xiàn)有的產(chǎn)品也會(huì)很快的更新?lián)Q代。如果重用沒有能夠?qū)崿F(xiàn),那么就需要進(jìn)行嚴(yán)格的控制和管理。 易于使用的開發(fā)軟件往往難以編寫。面向?qū)ο蟪绦蛟O(shè)計(jì)工具有望解決這個(gè)問題。
1.3 組件式GIS(ComGIS)
1.3.1 組件技術(shù)
組件技術(shù)的興起
目前,在軟件開發(fā)領(lǐng)域,一場(chǎng)新的革命正在悄悄興起,這是由日趨成熟的組件技術(shù)引發(fā)的。幾年以前,當(dāng)微軟公司首先使用OLE的時(shí)候,其初衷是為了增強(qiáng)軟件的互操作性。然而在使用過程中,人們逐漸認(rèn)識(shí)到這一技術(shù)背后的實(shí)質(zhì)性內(nèi)容和它在軟件開發(fā)中所扮演的重要角色。組件技術(shù)以前所未有的方式提高了軟件產(chǎn)業(yè)的生產(chǎn)效率,這一點(diǎn)已逐步成為軟件開發(fā)人員的共識(shí)。傳統(tǒng)的C/S結(jié)構(gòu)、群件、中間件等大型軟件系統(tǒng)的構(gòu)成形式,都將在組件的基礎(chǔ)上重新構(gòu)造。 組件技術(shù)使近二十年來興起的面向?qū)ο蠹夹g(shù)進(jìn)入到成熟的實(shí)用化階段。在組件技術(shù)的概念模式下,軟件系統(tǒng)可以被視為相互協(xié)同工作的對(duì)象集合,其中每個(gè)對(duì)象都會(huì)提供特定的服務(wù),發(fā)出特定的消息,并且以標(biāo)準(zhǔn)形式公布出來,以便其他對(duì)象了解和調(diào)用。組件間的接口通過一種與平臺(tái)無關(guān)的語言IDL(InterfaceDefineLanguage)來定義,而且是二進(jìn)制兼容的,使用者可以直接調(diào)用執(zhí)行模塊來獲得對(duì)象提供的服務(wù)。早期的類庫,提供的是原代碼級(jí)的重用,只適用于比較小規(guī)模的開發(fā)形式;而組件則封裝得更加徹底,更易于使用,并且不限于C++之類的語言,可以在各種開發(fā)語言和開發(fā)環(huán)境中使用。 由于組件技術(shù)的出現(xiàn),軟件產(chǎn)業(yè)的形式也隨之發(fā)生了很大的變化。大量組件生產(chǎn)商涌現(xiàn)出來,并推出各具特色的組件產(chǎn)品;軟件集成商則利用適當(dāng)?shù)慕M件快速生產(chǎn)出用戶需要的某些應(yīng)用系統(tǒng);大而全的通用產(chǎn)品逐步減少;很多相對(duì)較為專業(yè),但用途廣泛的軟件,如GIS、語音識(shí)別系統(tǒng)等,都以組件的形式組裝和擴(kuò)散到一般的軟件產(chǎn)品中。
0.1.1.1 COM與DCOM
?
COM是組件式對(duì)象模型(Component Object Model)的英文縮寫,是組件之間相互接口的規(guī)范,是OLE(Object Linking & Embedding)和ActiveX共同的基礎(chǔ),其作用是使各種軟件構(gòu)件和應(yīng)用軟件能夠用一種統(tǒng)一的標(biāo)準(zhǔn)方式進(jìn)行交互。COM不是一種面向?qū)ο蟮恼Z言,而是一種與源代碼無關(guān)的二進(jìn)制標(biāo)準(zhǔn)。COM所建立的是一個(gè)軟件模塊與另一個(gè)軟件模塊之間的鏈接,當(dāng)這種鏈接建立之后,模塊之間就可以通過稱之為“接口”的機(jī)制來進(jìn)行通信。COM標(biāo)準(zhǔn)增加了保障系統(tǒng)和組件完整的安全機(jī)制,并擴(kuò)展到分布式環(huán)境。它定義了軟件組件的接口
COM本質(zhì)上仍然是客戶/服務(wù)器模式。客戶(通常是應(yīng)用程序)請(qǐng)求創(chuàng)建COM對(duì)象并通過COM對(duì)象的接口操縱COM對(duì)象。服務(wù)器根據(jù)客戶的請(qǐng)求創(chuàng)建并管理COM對(duì)象。客戶和服務(wù)器這兩種角色并不是絕對(duì)的。
基于分布式環(huán)境下的COM被稱作DCOM(Distribute COM,分布式構(gòu)件對(duì)象模型)。 DCOM是ActiveX的基礎(chǔ),它實(shí)現(xiàn)了COM對(duì)象與遠(yuǎn)程計(jì)算機(jī)上的另一個(gè)對(duì)象之間直接進(jìn)行交互。DCOM規(guī)范定義了分散對(duì)象創(chuàng)建和對(duì)象間通信的機(jī)制,規(guī)范本身并不依賴于任何特定的編程語言和操作系統(tǒng),但目前該標(biāo)準(zhǔn)只在Microsoft Windows平臺(tái)實(shí)現(xiàn),這就意味著其它的操作系統(tǒng)平臺(tái)(如UNIX)目前還不支持ActiveX。 DCOM的實(shí)現(xiàn)采用了DCOM庫的形式,當(dāng)DCOM客戶對(duì)象需要DCOM服務(wù)器對(duì)象的服務(wù)時(shí),DCOM庫負(fù)責(zé)生成DCOM服務(wù)器對(duì)象并在客戶對(duì)象和服務(wù)器對(duì)象之間建立初始連接,一旦返回服務(wù)器對(duì)象指針,DCOM庫就不再參與客戶對(duì)象與服務(wù)器對(duì)象之間的工作,兩個(gè)對(duì)象之間可以自由地進(jìn)行通信。
DCOM接口實(shí)際上時(shí)邏輯上和語義上相關(guān)聯(lián)的函數(shù)集。服務(wù)器對(duì)象通過DCOM接口為客戶對(duì)象提供服務(wù),客戶對(duì)象不需了解服務(wù)器對(duì)象的內(nèi)部數(shù)據(jù)表示。接口可以看成兩個(gè)軟件構(gòu)件之間的一種協(xié)議,協(xié)議表明服務(wù)器對(duì)象為客戶對(duì)象提供一種且僅此一種服務(wù)。接口采用全局唯一標(biāo)識(shí)符(GUID)來保證服務(wù)的唯一性。通常的DCOM構(gòu)件提供多種服務(wù),那么服務(wù)器對(duì)象為每一種服務(wù)實(shí)現(xiàn)一個(gè)接口。當(dāng)客戶對(duì)象指針指向相應(yīng)的服務(wù)器對(duì)象時(shí),它就激活服務(wù)器對(duì)象接口的相應(yīng)函數(shù)。具體過程是:客戶對(duì)象通過DCOM對(duì)象必須支持的IunKnown接口獲得其它接口的指針。客戶對(duì)象也許并不知道服務(wù)器對(duì)象的每個(gè)接口,但這并不妨礙客戶對(duì)象對(duì)服務(wù)器對(duì)象的使用,它只
用它知道的接口。當(dāng)客戶對(duì)象用完服務(wù)器對(duì)象的服務(wù)時(shí),它會(huì)通知服務(wù)器對(duì)象,服務(wù)器對(duì)象就釋放它所占有的內(nèi)存。
DCOM的好處是顯而易見的。由于接口的定義和功能保持不變,DCOM構(gòu)件開發(fā)者可以改變接口功能、為對(duì)象增加新功能、用更好的對(duì)象來代替原有對(duì)象,而建立在構(gòu)件基礎(chǔ)上的應(yīng)用程序幾乎不用修改,大大提高了代碼的重用性
評(píng)論
查看更多