【1】組件產生的背景
一個應用程序通常是由單個二進制文件組成的。
當應用程序版本發布后一般不會發生任何變化,對於操作系統、硬件以及客戶需求的改變都必須要等到修復源代碼后且整個應用程序被重新編譯才可處理。
很顯然這種狀況極不理想。矛盾總是推動事物向前發展的源動力。
當人們認識到應用程序在發行之后不應該保持那種靜止的狀態之后,開發人員找出一種方法,以能夠給已發行軟件不斷注入新的活力。
其解決方案就是將單個應用程序分隔為多個獨立的部分,每個部分也即組件。如下圖所示:
這種做法的好處是可以隨着技術及需求的不斷發展而只需用新的組件取代已有的組件即可。
COM就是關於如何建立組件以及如何通過組件構建應用程序的規范。
傳統的做法是將應用程序分割為文件、模塊或類,然后將它們編譯並鏈接成一個鐵板一塊的應用程序。而由組件建立應用程序的過程稱為組件架構。
組件架構最引人注目的優點之一是快速應用程序開發。
【2】何謂分布式組件?
所謂分布式組件,組成應用程序的組件不一定都在一個機器上,可以在網絡上任意的一台機器。如下圖所示:
【3】對組件的要求?
組件的優點直接來源於可以動態的將它們插入或卸出應用程序。為了實現這種功能,組件必須滿足兩個條件:
1、組件必須動態鏈接。
2、組件必須隱藏其內部實現細節,對客戶完全透明。
【4】為了將客戶與組件相應隔離對於組件有哪些限制?
1、組件必須封裝其所用的編程語言。任一客戶都應能使用任一組件,不論它們是用什么編程語言實現的。
將實現用的編程語言暴露出來只會在組件及客戶間引入新的依賴。
2、組件必須以二進制的形式發布。如果想將實現組件的編程語言隱藏起來,那么在發布時,它們必須是已被編譯、鏈接好並且馬上就可以投入使用的。
3、組件必須可以在不妨礙已有用戶的情況下被升級。一個組件的新版本必須既能夠同老版本的客戶一起使用,也可以同心版本的客戶一起使用。
4、組件在網絡上的位置必須可以被透明的重新分配。組件及使用它的程序應能夠在同一進程中、不同的進程中或不同的機器上運行。
否則,當將某個本地組件移動到網絡上的另外某個地方時,客戶程序必須被重新編譯。
【5】COM組件是什么?
1、COM組件是以Win32動態鏈接庫(DLL)或者可執行文件(EXE)的形式發布的可執行二進制代碼所組成的。
2、COM組件是動態鏈接的。
3、COM組件是完全與語言無關的。
4、COM組件是可以在網絡上透明的被重新分配位置的。
5、COM組件是在兼容老客戶的情況下悄然升級的。
6、COM組件是一種給其它應用程序提供面向對象的API或服務的極好方法。
理解COM以下幾點:
1、COM不是一種計算機語言。
2、COM不是DLL。
3、COM不是函數集。
4、COM不是類庫。
【7】使用COM有那些好處?
1、提供了一個所有組件都應遵循的標准。
2、允許使用組件的多個不同的版本,而這一點對於用戶而言幾乎是透明的。
3、使得可以按相同的方式來處理類似的組件。
4、定義了一個與語言無關的架構。
5、支持對遠程組件的透明連接。
【8】進程內組件與進程外組件?
組件按照執行類型可以有兩個基本形式,既可以是進程內組件也可以是進程外組件。
進程內組件就像動態鏈接庫DLL一樣,它們與調用組件的應用程序運行在同一塊存儲空間當中。
也就是說,當ASP應用程序調用DLL時,DLL和該ASP是處於同一存儲空間的。
可以從兩個方面來說明這樣做是有好處的。首先內部調用范圍不會超出系統給應用程序分配的存儲空間,所以程序將會執行得更快一些。
另外,既然是在同一存儲空間,那么組件也就不大可能去破壞其他正在運行的進程,這樣進程就有很好的獨立性。
第二個優點是如果你有許多組件程序,那么這些物理文件(組件程序)就只需要一次性裝載到內存當中就夠了。
進程外組件的服務是以一個可執行文件(EXE格式)來實現的,它與調用組件的應用程序是不同的,它們不在同一存儲空間里,而且進程外服務使用了更多的資源,
這是因為組件的多個實例要求多次的內存裝載。另外進程外服務在自己獨立的存儲空間運行,所以如果運行失敗的話,影響到其他應用程序也是很有可能的。
備注:一個應用程序或者組件,如果它使用了其它組件,相對於被使用的組件而言,我們將它稱之為客戶。
Good Good Study. Day Day Up.
順序 選擇 循環 總結