並存執行
並存執行是在同一台電腦上執行多個版本之應用程式或元件的能力。 在同一台電腦上,您可以同時擁有 Common Language Runtime 的多個版本,以及使用某一版執行階段的應用程式和元件的多個版本。
下圖顯示在同一台電腦上有幾個應用程式使用執行階段的兩個不同版本。 應用程式 A、B 和 C 使用 Runtime 1.0 版,而應用程式 D 則使用 Runtime 1.1 版。
兩個版本執行階段的並存執行
.NET Framework 包含 Common Language Runtime 以及約 24 個左右內含 API 型別的組件。 Runtime 和 .NET Framework 組件的版本為個別指定。 例如,1.0 版的執行階段實際上是 1.0.3705.0 版,而 1.0 版的 .NET Framework 組件則是 1.0.3300.0 版。
下圖顯示在同一台電腦上有幾個應用程式使用元件的兩個不同版本。 應用程式 A 和 B 使用 1.0 版的元件,而應用程式 C 則使用相同元件的 2.0 版。
兩個版本元件的並存執行
並存執行提供更多控制權,供您控制應用程式所繫結之元件版本,以及應用程式所使用的執行階段版本。
並存執行的優點
在 Windows XP 和 .NET Framework 推出之前,由於應用程式無法辨別相同程式碼的不相容版本,因此會發生 DLL 衝突的狀況。 DLL 中包含的型別資訊只繫結至檔案名稱, 故應用程式無從得知 DLL 中包含的型別是否與應用程式建置時所用的型別相同。 因此,新版元件可能會覆寫舊版元件並破壞應用程式。
並存執行和 .NET Framework 提供下列功能以消除 DLL 的衝突:
強式名稱的組件。
並存執行使用強式名稱的組件,將型別資訊繫結至組件的特定版本。 這可防止應用程式或元件繫結至組件的無效版本。 強式名稱的組件也允許多個版本的檔案存在同一台電腦上,並供應用程式使用。 如需詳細資訊,請參閱 強式名稱的組件。
版本感知程式碼儲存區。
.NET Framework 在全域組件快取中提供版本感知程式碼儲存區。 全域組件快取是一種全電腦程式碼快取,存在於已經安裝 .NET Framework 的所有電腦上。 它是依據版本、文化特性 (Culture) 和發行者 (Publisher) 資訊來儲存組件,並且可以支援多個版本的元件和應用程式。 如需詳細資訊,請參閱 全域組件快取。
隔離性。
使用 .NET Framework,您可以建立隔離執行的應用程式和元件。 這種隔離執行的功能是並存執行的基本構成要素。 隔離的主要因素在於能夠掌握您要使用的資源,並且能放心地在應用程式或元件的多個版本之間共用資源。 隔離也包括使用版本特定的方式儲存檔案。 如需隔離的詳細資訊,請參閱建立並存執行應用程式和元件的方針。
版本相容性
.NET Framework 的 1.0 和 1.1 版設計成可彼此相容。 用 .NET Framework 1.0 版建置的應用程式應該可以在 1.1 版上執行,而用 .NET Framework 1.1 版建置的應用程式也應該可以在 1.0 版上執行。 但請注意,.NET Framework 1.1 版中加入的 API 功能無法在 1.0 版的 .NET Framework 中使用。 以 2.0 版建立的應用程式僅能在 2.0 版上執行。 2.0 版的應用程式在 1.1 或之前的版本上無法執行。
.NET Framework 的版本被視為一個由執行階段及其關聯的 .NET Framework 組件組成的單一單位 (這個概念稱為「組件的版本對應轉換」)。 您可以將組件繫結重新導向,以包含 .NET Framework 組件的其他版本,但是覆寫預設組件繫結可能會有風險,因此部署之前必須經過棈密的測試。
相關主題
標題 |
說明 |
---|---|
說明執行階段如何找出要為應用程式載入哪一版執行階段的資訊。 |
|
說明執行階段如何處理不同版本之 .NET Framework 組件的參考。 |
|
討論決定要為應用程式載入執行階段的哪一個版本時,執行階段所經歷的步驟。 |
|
說明如何將應用程式繫結至組件的特定版本。 |
|
討論在要以並存執行方式執行之應用程式中使用不完整參考的含意。 |
|
提供使用發行者原則檔將組件繫結重新導向的資訊和程序。 |
|
討論在並存執行之下處理附屬組件的方式。 |
|
提供安裝及使用多個 .NET Framework 版本的相關資訊。 |
|
說明如何建立組態檔,供應用程式用來指定 Common Language Runtime 的版本。 |
|
提供如何建立及部署針對並存執行而設計之應用程式和元件的相關資訊。 |
|
討論如何為已指定版本的元件和應用程式建立服務模型。 |
|
討論如何使用同處理序並存執行階段主機啟動,在單一處理序中執行多個版本的 CLR。 |
|
提供組件的概觀。 |
|
提供應用程式定義域的概觀。 |