組件的優點

組件是設計用來簡化應用程式開發和解決可能發生在元件架構應用程式的版本問題。

使用者和開發者都很熟悉現今元件架構系統所發生的版本和部署問題。 有些使用者在電腦上安裝新應用程式時會碰到一些很困擾的情況,因為現有的應用程式突然間不能運作了。 而許多開發者也花了很多時間嘗試讓所有登錄項目保持一致以便啟動某個 COM 類別。

藉由使用 .NET Framework 中的組件,許多開發的問題都得以迎刃而解。 由於它們是不具登錄項目相依性的自我描述性元件,所以這些組件也不會對應用程式安裝造成任何影響。 而且它們也簡化了應用程式的解除安裝和複製。

版本問題

目前,有兩個版本問題發生在 Win32 應用程式:

  • 版本規則不能表示於應用程式的各片段之間並且由作業系統強制執行。 目前的方式是依賴很難保證的回溯相容性 (Backward Compatibility)。 介面定義必須是靜態的,而且 (一旦發行之後) 單一程式碼片段必須維持與先前版本的回溯相容性。 此外,程式碼通常是設計成在任何指定時間只能讓單一版本在電腦上存在和執行。

  • 無法維持同時建立的元件集和執行階段時存在的元件集之間的一致性。

這兩個版本問題合在一起會產生 DLL 衝突:安裝某個應用程式可能會不慎中斷現有的應用程式,因為所安裝的某個軟體元件或 DLL 不具有與先前版本的完整相容性。 一旦發生這種情況,系統完全無法支援診斷和修復的問題。

DLL 衝突終結者

Microsoft® Windows® 2000 已著手徹底解決這些問題。 它提供兩項可局部修復 DLL 衝突的功能:

  • Windows 2000 可以讓您建立其相依 .dll 檔案放在與應用程式 .exe 檔同一目錄中的用戶端應用程式。 Windows 2000 可以設定成在檢查完整路徑或搜尋一般路徑之前,先檢查 .exe 檔案所在目錄中的元件。 這樣可以讓元件不會受到其他應用程式安裝和使用的元件所影響。

  • Windows 2000 會將作業系統所附的檔案鎖在 System32 目錄中,使它們不會在安裝應用程式時無意間遭到取代。

而 Common Language Runtime 則是使用組件繼續朝向完全解決 DLL 衝突的方向發展。

組件方案

為了解決版本問題和導致 DLL 衝突的其他問題,Runtime 使用組件來進行下列動作:

  • 讓開發者指定不同軟體元件之間的版本規則。

  • 提供強制執行版本規則的基礎結構。

  • 提供基礎結構,讓元件的多個版本能同時執行 (稱為並存執行)。

請參閱

概念

Common Language Runtime 中的組件

組件版本控制

組件和並存執行