管線開發
增益集 (Add-In) 管線是通往管線區段的路徑,而主應用程式 (Host) 和增益集必須使用管線區段來與彼此通訊。
下圖顯示了通訊管線及其區段。
增益集管線
主應用程式 (Host Application) 位於管線的一端,而增益集位於另一端。 從個別端點朝中間方向移動過程中,主應用程式和增益集都會擁有可定義雙方所共用之物件模型檢視的抽象基底類別。 這些型別 (即類別 (Class)) 構成增益集檢視管線區段,以及增益集管線區段的主應用程式檢視。 增益集檢視管線區段通常會包含一個以上的抽象類別 (Abstract Class),其中將由增益集繼承的類別則為增益集基底。
增益集端配接器管線區段和主應用程式端配接器管線區段,都會在它們的檢視管線區段和合約管線區段之間轉換前述型別的流向。 管線的中央區段是一個合約,其衍生自 IContract 介面。 這個合約定義了主應用程式及其增益集都會用到的方法。
若是將主應用程式和增益集載入到不同的應用程式定義域,就會建立將主應用程式的範圍與增益集的範圍分隔開的隔離界限。 此合約是唯一會同時載入到主應用程式和增益集等應用程式定義域的組件 (Assembly)。 主應用程式和增益集會分別只參考自己的合約方法檢視。 因此,它們是由合約中的抽象層所隔開。
若要開發管線區段,您必須建立可包含主應用程式和增益集兩者的目錄結構。 如需開發需求和範圍方針的詳細資訊,請參閱管線開發需求。
下圖顯示構成管線區段的型別。 圖中顯示的型別名稱可為任意名稱,不過除了主應用程式和增益集的主應用程式檢視的型別,其他的所有型別都需要屬性 (Attribute),如此這些型別才可由建構資訊存放區的方法進行探索。
具型別的增益集管線
下表會描述用於啟動增益集的管線區段。 如需這些區段的詳細資訊,請參閱合約、檢視和配接器。
管線區段 |
說明 |
---|---|
主應用程式 |
建立增益集之執行個體的應用程式組件。 |
增益集的主應用程式檢視 |
代表主應用程式對用來與增益集通訊的物件型別和方法的檢視。 主應用程式檢視是一個抽象基底類別或介面。 |
主應用程式端配接器 |
含有一個或多個類別的組件,它可將方法配接至合約,或是從合約進行配接。 這個管線區段會由使用 HostAdapterAttribute 屬性來識別。 不支援多模組組件。 |
合約 |
衍生自 IContract 介面的介面,其中定義了主應用程式及其增益集之間型別通訊時所使用的通訊協定 (Protocol)。 這個管線區段會由設定 AddInContractAttribute 屬性來識別。 |
增益集端配接器 |
含有一個或多個類別的組件,它可將方法配接至合約,或是從合約進行配接。 這個管線區段會由使用 AddInAdapterAttribute 屬性來識別。 在包含型別的增益集端配接器目錄中,每個具有 AddInAdapterAttribute 屬性的組件都會載入至該增益集的應用程式定義域。 在增益集端目錄內的每個組件,則都會載入至其自己的應用程式定義域。 不支援多模組組件 |
增益集檢視 |
組件,代表增益集對用來與主應用程式通訊的物件型別和方法的檢視。 增益集檢視是一個抽象基底類別或介面。 這個管線區段會由使用 AddInBaseAttribute 屬性來識別。 在包含型別的 AddInViews 目錄中,每個具有 AddInBaseAttribute 屬性的組件都會載入至該增益集的應用程式定義域。 |
增益集 |
為主應用程式執行服務的具現化 (Instantiated) 型別。 |
管線啟動過程路徑
下圖顯示當啟動增益集時的型別啟動過程 (Activation)。 圖中也顯示傳遞物件至主應用程式,例如,計算結果或物件的集合。 這是最常見的案例。
從增益集至主應用程式的啟動過程路徑
管線的啟動過程路徑會依下列順序進行:
主應用程式以 Activate 方法啟動增益集。
增益集、增益集檢視、增益集端配接器和合約組件載入至增益集的應用程式定義域。
使用增益集檢視 (配合由 AddInBaseAttribute 屬性識別的類別) 做為增益集端配接器的建構函式 (Constructor),建立該增益集端配接器的執行個體。 增益集端配接器繼承自該合約。
增益集端配接器 (其型別為合約) 跨越 (選擇性) 隔離界限地傳遞至主應用程式端配接器的建構函式。
增益集的主應用程式檢視、主應用程式端配接器和合約組件載入至主應用程式的應用程式定義域。
使用合約做為主應用程式端配接器的建構函式,建立該主應用程式端配接器的執行個體。 主應用程式端配接器繼承自增益集的主應用程式檢視。
主應用程式擁有該增益集 (其型別為增益集的主應用程式),並且可以繼續呼叫它的方法。
逐步解說
請參閱下列三個描述如何使用 Visual Studio 建立管線的逐步解說主題:
-
說明可為主應用程式執行加法、減法、乘法和除法計算的計算機增益集。
-
說明含有增強型計算能力的計算機增益集,以及如何維護與第一個計算機增益集的相容性。
-
透過書店案例,說明如何在管線上傳遞資料集合。