增益集和擴充性

增益集為主應用程式提供擴充功能或服務。 .NET Framework 提供程式設計模型,可讓開發人員用來開發增益集,並且在其主應用程式中啟動。 模型會藉由建構主應用程式和增益集之間的通訊管線達成此目的。 模型是使用 System.AddInSystem.AddIn.HostingSystem.AddIn.PipelineSystem.AddIn.Contract 命名空間中的型別實作。

本概觀包含下列各節:

  • 增益集模型

  • 區別增益集與主應用程式

  • 相關主題

  • 參考資料

注意事項注意事項

您可以在 CodePlex 上的 Managed 擴充性及增益集架構網站 (英文) 找到更多範例程式碼,以及可用來建置增益集管線之工具的客戶技術預覽。

增益集模型

增益集模型是由一系列區段所組成,這些區段可組成增益集管線 (也稱為通訊管線),負責增益集和主應用程式 (Host) 之間的所有通訊。 管線是一種區段的對稱式通訊模型,可在增益集及其主應用程式間交換資料。 在主應用程式和增益集之間開發這些區段,可提供支援增益集版本控制及隔離所需的抽象層。

下圖所示即為管線。

增益集管線

增益集管線模型。

這些區段的組件不需要位於相同的應用程式定義域中。 您可以將增益集載入至其擁有的新應用程式定義域、現有的應用程式定義域,或甚至是主應用程式的應用程式定義域。 您可以將多個增益集載入至相同的應用程式定義域,如此可讓增益集共用資源和安全性內容。

增益集模型支援 (同時也建議使用) 主應用程式和增益集之間的選擇性界限,也就是所謂的隔離界限 (也稱為遠端界限)。 這個界限可以是應用程式定義域或處理序界限。

位於管線中間的合約區段會載入至主應用程式之應用程式定義域和增益集的應用程式定義域。 合約會定義一些虛擬方法,主應用程式和增益集會使用這些虛擬方法互相交換型別。

若要通過隔離界限,這些型別必須是合約或是可序列化的型別。 不是合約或可序列化型別的型別都必須使用管線中的配接器區段轉換成合約。

管線的檢視區段為抽象基底類別或介面,可根據合約的內容,為主應用程式和增益集提供其共用的方法檢視。

如需開發管線區段的詳細資訊,請參閱管線開發

下一節將說明增益集模型的功能。

獨立的版本控制

增益集模型可讓主應用程式和增益集進行獨立的版本控制。 因此,增益集模型可啟用下列案例:

  • 建立配接器,讓主應用程式使用為舊版主應用程式建立的增益集。

  • 建立配接器,讓主應用程式使用為新版主應用程式建立的增益集。

  • 建立配接器,讓主應用程式使用為不同主應用程式建立的增益集。

探索和啟動

您可以使用來自集合 (代表從資訊存放區找到的增益集) 的語彙基元 (Token) 啟用某個增益集。 增益集可透過搜尋定義主應用程式之增益集檢視的型別找出。 您也可以根據定義增益集的型別尋找特定增益集。 資訊存放區由兩個快取檔案組成:管線存放區和增益集存放區。

如需更新及重建資訊存放區的詳細資訊,請參閱增益集探索。 如需啟動增益集的詳細資訊,請參閱增益集啟動HOW TO:以不同的隔離和安全性層級啟動增益集

隔離等級和外部處理序

對於增益集及其主應用程式之間,或增益集與增益集之間,增益集模型提供了數種隔離等級 (Isolation Level) 的支援。 以下列出這些等級 (從最低的隔離等級開始):

  • 增益集在主應用程式的相同應用程式定義域中執行。 不建議使用這個等級,因為您會在使用不同應用程式定義域時,失去隔離和卸載功能。

  • 多個增益集載入至相同的應用程式定義域,這個應用程式定義域與主應用程式所使用的應用程式定義域不同。

  • 每個增益集都會載入至各自的應用程式定義域。 這是最常見的隔離等級。

  • 多個增益集載入至外部處理序內的相同應用程式定義域。

  • 每個增益集都會載入至外部處理序內,各自的應用程式定義域中。 這是最常見的隔離案例。

如需使用外部處理序的詳細資訊,請參閱 HOW TO:以不同的隔離和安全性層級啟動增益集

存留期管理

由於增益集模型跨越了應用程式定義域和處理序界限,由其本身執行記憶體回收並不足以釋放及回收物件。 增益集模型提供了存留期 (Lifetime) 管理機制,這個機制會使用語彙基元和參考計數 (Reference Counting),而且通常不需要進行額外的程式設計。 如需詳細資訊,請參閱 存留期管理

回到頁首

區別增益集與主應用程式

增益集和主應用程式之間的不同之處僅在於,主應用程式是啟動增益集的應用程式。 主應用程式可以是兩者間較大的那一個,例如文書處理應用程式及其拼字檢查工具,或者主應用程式可以是兩者間較小的那一個,例如嵌入媒體播放程式的即時訊息用戶端。 增益集模型支援用戶端和伺服器案例中的增益集。 伺服器增益集的範例包括提供內含病毒掃描、垃圾郵件篩選和 IP 保護的電子郵件伺服器。 用戶端增益集的範例包括文書處理器的參考增益集、圖形程式和遊戲的特定功能,以及本機電子郵件用戶端的病毒掃描。

回到頁首

相關主題

標題

說明

管線開發

說明從主應用程式至增益集的區段通訊管線。 逐步解說主題中提供了程式碼範例,說明如何建構管線以及如何在 Visual Studio 中將區段部署至管線。

增益集探索

說明如何使增益集成為可由主應用程式探索的目標。

增益集啟動

說明如何啟動和停用增益集。

增益集效能

說明如何使用定義域中性組件載入及原生影像改善增益集效能。

HOW TO:以不同的隔離和安全性層級啟動增益集

說明如何在不同的應用程式定義域、處理序及安全性層級案例中啟動增益集。

HOW TO:使用限定性條件資料

說明如何套用及存取提供給增益集和管線區段做為屬性的自訂資料。

增益集開發人員經驗

說明如何開發增益集,以使用必要的增益集管線區段。

應用程式定義域和組件

說明應用程式定義域之間的關係,這為安全性、可靠性和版本控制以及組件提供了隔離界限。

回到頁首

參考資料

System.AddIn

System.AddIn.Contract

System.AddIn.Hosting

System.AddIn.Pipeline

回到頁首