日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

什么是组件,组件有何特点?

發(fā)布時間:2023/12/13 综合教程 26 生活家
生活随笔 收集整理的這篇文章主要介紹了 什么是组件,组件有何特点? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

組件庫

談到COM中的組件,其實用積木來形容它再恰當不過。我們小時候玩積木時,頭腦中總是想著各種各樣的東西,然后就用塊狀的積木一塊一塊地將它們壘起來。我們也可以把組件看成是一塊一塊的積木,或是一個一個的小單元,這些小單元成為應用程序的各個獨立部分

傳統(tǒng)應用程序的組成部分是分立的文件、模塊或類,這些組成部分經(jīng)過編譯并鏈接之后才形成應用程序。要想推出應用程序的新版本,就需要將這些組成部分重新編譯,既費時又費力。有了組件的概念,就可以將改進后的新組件插入到應用程序中,并替換掉原有的舊組件,從而賦予應用程序新的活力。

另外,由此也可以有這樣的想法:把許多已經(jīng)做好的組件放到一起來形成一個組件庫,好比一個類庫。當制作應用程序時,如果要用到不同的組件,只需從剛建好的組件庫中調(diào)出所需要的組件,然后將它們插入到適當?shù)奈恢茫瑏慝@得所向往的功能。就像搭積木一樣,可以從包裝盒中拿出你喜歡的積木單元,扔掉不喜歡的積木單元,然后用智慧修建出屬于自己的公寓。

對于組件,我們已經(jīng)知道了關(guān)于它的“塊”概念,使用組件的優(yōu)點在于可以動態(tài)地將它們插入或卸出應用程序,這給應用程序制作者帶來了很大的方便。但是,實現(xiàn)這些功能卻需要一定的基礎。一般需要兩個條件:第一,組件必須動態(tài)鏈接;第二,各個組件必須隱藏(或封裝)其內(nèi)部的實現(xiàn)細節(jié)。

正如上面我們曾討論過的,組件能夠動態(tài)地被調(diào)用或釋放,即我們的最終目的是使得用戶在應用程序的運行過程中能動態(tài)地使用組件。為了達到這樣一個目的,必須要求能夠?qū)⒔M件動態(tài)地鏈接到一起。所謂動態(tài),也就是說不是在發(fā)布應用程序的時候就把組件同應用程序捆綁在一起,那樣也就沒有我們現(xiàn)在討論COM的必要,而是組件同應用表面上處于分離的位置,只有當應用程序運行的時候,組件和應用程序才有機地結(jié)合到一起。

下面我們來談一下封裝性。

我們知道應用程序和組件在工作時是處于動態(tài)鏈接狀態(tài)的。當我們將某個組件用新的組件替換掉時,必須將此組件同系統(tǒng)斷開,然后連入一個新的組件。顯然,新的組件必須按照與原來的組件相同的方式連接到應用程序中,否則就需要重新編譯應用程序,因為應用程序可能根本不認識新的組件,不知道從哪里入手。這時我們就需要“封裝性’’。

為了說明得明確些,我們先介紹一些術(shù)語。首先談一下客戶。當一個程序或組件使用了其他組件時,我們就稱之為客戶。客戶與其他組件通過接口進行連接,

當某個組件被新的組件替換掉后,或者某個組件發(fā)生了變化時,如果連接客戶與組件的接口沒有任何變化,那么原來的客戶就不需要進行任何修改。同樣,如果客戶有了變動,而接口沒有變化,那么組件也就不需要改變。由此,我們可以看到,只要接口保持不變,組件和客戶就可以像一個個黑匣子一樣移過來移過去。

為了充分發(fā)揮動態(tài)鏈接的功能,組件及客戶都應該盡可能地不要改變它們的接口,這就意味著它們必須被封裝起來。封裝類似于將它們都做成黑匣子,組件及客戶的內(nèi)容實現(xiàn)細節(jié)不能反映到接口中。接口同內(nèi)部實現(xiàn)細節(jié)的隔離程度越高,組件或客戶發(fā)生變化時對接口的影響將越小。如此可以看出,在接口沒有發(fā)生任何變化時,對組件的修改將幾乎不會對應用程序的其他部分產(chǎn)生任何影響。

這種封裝性的要求對組件也額外地加上了一些限制。

(1)必須將實現(xiàn)組件的編程語言隱藏起來。

使用組件的客戶沒有那么神通廣大,以至于知道自己正在使用的組件到底是用C編寫的,還是用Java編寫的。而任一客戶都應能夠使用任一組件,不論它們是用什么編程語言編寫的。組件應該沒有針對編程語言之說。

世界上正有許多人在用不同的編程語言實現(xiàn)自己的組件,假如某個應用只能使用由C++語言編寫的組件,因為C++語言現(xiàn)在比較流行。但是如果某段時間后,有另外一種編程語言流行起來,從而導致人們紛紛放棄使用C++,轉(zhuǎn)而使用另一種編程語言。如此就導致原有的應用程序?qū)⒉荒苁褂眯碌慕M件,而且出現(xiàn)了不同的編寫組件的方法。如果某個應用程序可以使用任意一種編程語言編寫的組件,那么它的生命力之強就可想而知了。

(2)組件必須以二進制的形式發(fā)布。

正如第1點所說,要想隱藏組件的編程語言,組件的發(fā)布形式只能是最一般的“世人皆知”的二進制形式,即組件在發(fā)布時必須已被編譯、鏈接并且馬上就可以投入使用,這也給組件的更新?lián)Q代提供了很大的便利。

(3)組件不能因為自己所處位置的不同而不斷改變自己的形式。

這一點主要是針對網(wǎng)絡來說的。組件和使用它的應用程序不僅能夠在同一個進程或不同的進程中運行,而且還能在不同的機器上運行。客戶對本地組件的訪問及使用方式同客戶對遠程組件的訪問及使用方式應該是完全一致的。要不然,當遠程組件上某個地方的一個組件拿到本地時,就必須重新編譯客戶,以便使之能夠處理新來的組件。

(4)組件版本的兼容性。

對于新版本的組件應該有向下兼容的特性。客戶既能夠使用老版本的組件,也能夠使用新版本的組件。對于使用者來說,這無疑又是一個很大的便利,而且軟件只有朝這個方向發(fā)展才能獲得頑強的生命力。

組件庫

在前面部分,我們已經(jīng)談過COM是一個說明如何建立可動態(tài)交替更新的組件的規(guī)范,它提供了為保證能夠互操作而在客戶和組件之間應該遵循的標準。但是如果只給出一套規(guī)范,而不給出一些具體的實現(xiàn)方式,那么人們還是無從入手。因此COM提供了一個稱做COM庫(COM library)的API,它為所有客戶及組件提供非常有用的組件管理服務。COM提供的操作可以使得對組件的管理都以一致的方式進行,這大大節(jié)省了COM編寫人員花在組件及客戶實現(xiàn)上的時間。另外,對于DCOM,COM庫則提供了一些同網(wǎng)絡上其他組件通信所需的代碼,這不但可以節(jié)省開發(fā)人員花在網(wǎng)絡編程上的時間,而且可以使他們無需了解網(wǎng)絡編程的細節(jié)知識。

但是我們?nèi)耘f要認清另外一點,COM并不是一種計算機語言,COM是由某種編程語言實現(xiàn)的組件編寫規(guī)范。此外,COM也不是DLL,COM是利用DLL來給組件提供動態(tài)鏈接的能力。

本文出自http://www.xici.net/b634645/d49754277.htm

作者:邊寫邊唱

文章出處:http://www.cnblogs.com/zoupeiyang

專注于用自助終端技術(shù)實現(xiàn)互聯(lián)網(wǎng)+,有興趣朋友歡迎關(guān)注 捷思科技

總結(jié)

以上是生活随笔為你收集整理的什么是组件,组件有何特点?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。