建立自訂配接器提供者
解析程式執行之後,如前幾節所述,動態解析服務會檢查結果是否為端點 (不是轉換) 。 如果是端點,服務會具現化配接器管理員,這是 AdapterMgr 類別的實例。
配接器管理員會驗證並修正傳輸類型和輸出傳輸位置。 如果傳輸類型仍然未解析,而且 URL 開頭為 「HTTP」 或 「HTTPs」,配接器管理員會將傳輸類型設定為 「WCF-WSHttp」。
接下來,配接器管理員會確認傳輸類型等於有效的 Microsoft BizTalk Server配接器,然後傳回其屬性命名空間。 此進程只會針對所有配接器執行一次,並將結果儲存在快取中,以避免針對使用相同配接器的其他傳入訊息重複查詢。
配接器管理員會使用傳輸類型 (,而不使用 「://」 尾碼) 來判斷適當的配接器提供者。 配接器提供者是必須實作 IAdapterProvider 介面的 自訂群組件。 配接器提供者會使用解析程式所產生的Dictionary實例中解析結構的屬性,來設定訊息的所有通訊協定特定屬性,讓 Microsoft BizTalk Server執行時間引擎執行動態解析。
如同上一節所述解析程式 () ,動態解析機制會使用 Esb.config 組態檔中的專案來尋找配接器提供者。 下列 XML 顯示組態檔的 區段。
<adapterProviders cacheManager= "Adapter Providers Cache Manager" absoluteExpiration="3600">
<adapterProvider name="WCF-WSHttp" type="Microsoft.Practices.ESB.Adapter.WcfWSHttp.AdapterProvider, Microsoft.Practices.ESB.Adapter.WcfWSHttp, Version=2.0.0.0, Culture=neutral, PublicKeyToken=c62dd63c784d6e22" moniker="Http,Https" />
<adapterProvider name="WCF-BasicHttp" type="Microsoft.Practices.ESB.Adapter.WcfBasicHttp.AdapterProvider, Microsoft.Practices.ESB.Adapter.WcfBasicHttp, Version=2.0.0.0, Culture=neutral, PublicKeyToken=c62dd63c784d6e22" moniker="Http,Https" />
<adapterProvider name="WCF-Custom" type="Microsoft.Practices.ESB.Adapter.WcfCustom.AdapterProvider, Microsoft.Practices.ESB.Adapter.WcfCustom, Version=2.0.0.0, Culture=neutral, PublicKeyToken=c62dd63c784d6e22" moniker="mssql" />
<adapterProvider name="SMTP" type="Microsoft.Practices.ESB.Adapter.SMTP.AdapterProvider, Microsoft.Practices.ESB.Adapter.SMTP, Version=2.0.0.0, Culture=neutral, PublicKeyToken=c62dd63c784d6e22" moniker="smtp" />
<adapterProvider name="FTP" type="Microsoft.Practices.ESB.Adapter.FTP.AdapterProvider, Microsoft.Practices.ESB.Adapter.FTP, Version=2.0.0.0, Culture=neutral, PublicKeyToken=c62dd63c784d6e22">
<adapterConfig>
<add name="DefaultUsername" value="anonymous" />
<add name="DefaultPassword" value="" />
</adapterConfig>
</adapterProvider>
<adapterProvider name="MQSeries" type="Microsoft.Practices.ESB.Adapter.MQSeries.AdapterProvider, Microsoft.Practices.ESB.Adapter.MQSeries, Version=2.0.0.0, Culture=neutral, PublicKeyToken=c62dd63c784d6e22" moniker="MQS" adapterAssembly="MQSeries, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
<adapterProvider name="FILE" type="Microsoft.Practices.ESB.Adapter.FILE.AdapterProvider, Microsoft.Practices.ESB.Adapter.FILE, Version=2.0.0.0, Culture=neutral, PublicKeyToken=c62dd63c784d6e22" moniker="File" />
</adapterProviders>
建立自訂配接器提供者
配接器管理員 (AdapterMgr 類別的實例,) 在組態檔中查閱配接器提供者,並載入適當的元件。 動態解析機制會快取 IAdapterProvider 介面的所有已載入具體實作,以避免在數個傳入訊息使用相同的配接器提供者時重複讀取組態資訊和元件載入。
最後,配接器管理員會執行IAdapterProvider介面之具體實作的SetEndPoint方法,而管線元件會將訊息傳回 BizTalk 消息箱資料庫。
建立自訂配接器提供者
建立衍生自 BaseAdapterProvider 基類的元件,並包含 SetEndPoint 方法,可設定訊息的端點內容屬性。
使用配接器名稱為name屬性的adapterProvider > 元素,將配接器新增至 Esb.config 組態檔 <,註冊配接器提供者,作為類型屬性的完整類別名稱、moniker 作為 moniker屬性 (多個值應該以逗號) 分隔,以及選擇性地將實際配接器元件做為adapterAssembly屬性。
在全域組件快取中註冊新的元件。