如何:使用 ESB 入口驗證訊息
目標
本節示範如何設定 ESB 發送器反組譯管線元件,以對提交至 ESB 的 XML 訊息執行訊息驗證。
在此操作說明主題中,您將完成下列步驟:
建立使用 ItinerarySelectReceiveXml 管線的 ESB On-Ramp。
設定 ESB 發送器反組譯管線元件來驗證訊息內容。
設定 [路線選取器管線] 元件以解決適當的路線。
使用有效的訊息和不正確訊息來測試訊息驗證。
必要條件
本操作說明主題中的程式需要完成 開發活動的必要條件。
開始之前
請先完成下列工作,再執行本操作說明主題稍後的步驟:
建立不正確測試訊息。
建立 ESB 路線網域特定語言 (DSL) 模型。
設定路線的屬性。
定義路線的結構。
將模型匯出至路線資料庫。
下列程式描述如何執行這些動作。
建立不正確測試訊息
在 Windows 檔案總管中,流覽至 C:\HowTos。
建立 NAOrderDoc.xml 複本,然後重新命名複本 Invalid.xml。
在 [記事本] 中,開啟 Invalid.xml。
將ns0:requestType 10 < /ns0:requestType >> 變更 < 為 < ns0:requestType > TEN < /ns0:requestType >。
將 Invalid.xml 儲存為 UTF-8,然後關閉 [記事本]。
注意
藉由將這個專案的數值變更為文字,訊息將不再根據架構有效。
建立 ESB 路線 DSL 模型
在 Visual Studio 中,開啟 C:\HowTos\Patterns\Patterns.sln。
在方案總管中,以滑鼠右鍵按一下[路線程式庫],指向 [新增],然後按一下 [新增路線]。
在 [新增專案] 對話方塊中,于 [名稱] 方塊中輸入[驗證],然後按一下 [新增]。
設定路線的屬性
在 Visual Studio 中,按一下 Validation.itinerary的設計介面。 在[驗證] 屬性視窗中,設定下列屬性:
在 [ 模型匯出工具] 下拉式清單中,按一下 [資料庫路線匯出工具]。
按一下 [路線資料庫 ] 屬性旁的省略號按鈕 (...) 。
在 [連線屬性] 對話方塊中,選擇裝載路線存放庫資料庫的SQL Server,然後指定資料庫的名稱, (預設名稱為EsbItineraryDb) 。
在 [ 路線狀態 ] 下拉式清單中,按一下 [已部署]。
注意
此步驟可讓您將路線匯出至中央存放庫;收到訊息時,可以從此存放庫選取並附加路線。 您稍後會設定路線選取器管線元件,以使用靜態解析程式從此存放庫選取適當的路線。
定義路線的結構
從 [工具箱] 中,將 On-Ramp 模型專案拖曳至設計介面。 在OnRamp1屬性視窗中,設定下列屬性:
按一下 [名稱] 屬性,然後輸入 ReceiveNAOrder。
在 [ 擴充器 ] 下拉式清單中,按一下 [ On-Ramp ESB 擴充器]。
在 [BizTalk 應用程式 ] 下拉式清單中,按一下 [Microsoft.Practices.ESB]。
在 [ 接收埠 ] 下拉式清單中,按一下 [OnRamp.行程]。
從 [工具箱] 中,將 Off-Ramp 模型專案拖曳至設計介面,然後將它放在現有模型元素的右邊。 在OffRamp1屬性視窗中,設定下列屬性:
按一下 [名稱] 屬性,然後輸入 SendNAOrder。
在 [ 擴充器] 下拉式清單中,按一下 [ 下拉式 ESB 擴充器]。
在 [BizTalk 應用程式 ] 下拉式清單中,按一下 [GlobalBank.ESB]。
在 [ 傳送埠 ] 下拉式清單中,按一下 [DynamicResolutionOneWay]。
從 [工具箱] 中,將 [行程服務 ] 模型專案拖曳至設計介面,然後將它放在 ReceiveNAOrder 模型元素與 SendNAOrder 模型元素之間。 在ItineraryService1屬性視窗中,設定下列屬性:
按一下 [名稱] 屬性,然後輸入 SendPortFilter。
在 [ 路線服務擴充器 ] 下拉式清單中,按一下 [ 下拉式擴充器]。
在 [ 關閉坡形 ] 下拉式清單中,展開 [SendNAOrder],然後按一下 [ 傳送處理常式]。
以滑鼠右鍵按一下SendPortFilter元素的Resolver集合,然後按一下 [新增解析程式]。 在Resolver1屬性視窗中,設定下列屬性:
按一下 [名稱] 屬性,然後輸入 ConfigureOffRamp。
在 [ 解析程式實作 ] 下拉式清單中,按一下 [靜態解析程式延伸模組]。
在 [ 傳輸名稱] 下拉式清單中,按一下 [檔案]。
按一下 [傳輸位置] 屬性,然後輸入 C:\HowTos\Out\Validated%MessageID%.xml。
在 [工具箱] 中,按一下 [連接器]。 將 連線從 ReceiveNAOrder 模型專案拖曳至 SendPortFilter 模型專案。
在 [工具箱] 中,按一下 [連接器]。 將 連線從 SendPortFilter 模型專案拖曳至 SendNAOrder 模型專案。
將模型匯出至路線資料庫
在 Visual Studio 中,以滑鼠右鍵按一下 驗證 路線的設計介面,然後按一下 [ 匯出模型]。
注意
路線已匯出至路線資料庫,而且現在可供路線選取器管線元件使用。
儲存所有專案成品。
步驟
建立及設定 ESB 斜線
按一下工作列上的 [開始],指向 [所有程式]、指向[BizTalk Server],然後按一下[BizTalk Server系統管理]。
在 BizTalk Server 管理主控台中,依序展開[BizTalk 群組]、[應用程式] 和[Microsoft.Practices.ESB]。
以滑鼠右鍵按一下 [接收位置],指向 [ 新增],然後按一下 [單向接收位置]。
在 [ 選取接收埠 ] 對話方塊中,按一下 [OnRamp.行程],然後按一下 [ 確定]。
在 [接收位置屬性]對話方塊中,于 [名稱] 方塊中輸入OnRamp.Itinerary.HowTo。
在 [ 類型 ] 下拉式清單中,按一下 [ 檔案],然後按一下 [ 設定]。
在 [檔案傳輸屬性]對話方塊中,于[接收] 資料夾方塊中輸入C:\HowTos\DropFolder,然後按一下 [確定]。
設定斜線以執行訊息驗證
在 [ 接收位置屬性] 對話方塊的 [ 接收管線 ] 下拉式清單中,按一下 [路線][選取][ReceiveXml],然後按一下省略號按鈕 (...) 。
使用 [ 設定管線 ] 對話方塊來設定下列 XML 反組譯程式 元件屬性:
展開 GlobalBank.Esb 應用程式,然後按一下 [ 架構]。 以滑鼠右鍵按一下 GlobalBank.ESB.DynamicResolution.Schemas.NAOrderDoc,然後按一下 [ 屬性]。 複製 [名稱 ] 和 [ 元件 ] 屬性,並將其貼到文字檔中。
在[反組譯元件] 中,按一下[ValidateDocument] 下拉式清單中的[True]。
按一下 DocumentSpecNames 屬性,然後輸入架構的完整名稱。 完整名稱會以名稱開頭,後面接著逗號和步驟 a 中擷取的元件資訊。 以下是一個範例:
GlobalBank.ESB.DynamicResolution.Schemas.NAOrderDoc、GlobalBank.ESB.DynamicResolution.Schemas、Version=2.0.0.0、Culture=neutral、PublicKeyToken=c2c8b87f54180a
注意
這是要驗證之架構的完整名稱;它是由架構名稱和四個元件屬性所組成:元件名稱、版本、文化特性和公開金鑰權杖。 允許多個值;使用管道分隔多個架構 (|) 符號。
設定路線選取器管線元件
在 [ 設定管線 ] 對話方塊中,設定下列 路線選取器 元件屬性:
按一下 [行程][FactKey ] 屬性,然後輸入 Resolver.Itinerary。
按一下 ResolverConnectionString 屬性,然後輸入 ITINERARY:\\name=Validation;。
按一下 [確定 ] 關閉 [ 設定管線 ] 對話方塊。
按一下 [確定 ] 關閉 [ 接收位置屬性 ] 對話方塊。
在 BizTalk Server 管理主控台中,以滑鼠右鍵按一下OnRamp.Itinerary.HowTo接收位置,然後按一下 [啟用]。
測試訊息驗證和路線選擇
在 Windows 檔案總管中,流覽至 C:\HowTos。
複製 (不會將) NAOrderDoc.xml 移至 DropFolder 資料夾。
流覽至 C:\HowTos\Out。確認已將 Validated%MessageID%.xml 寫入目錄。
注意
有效的訊息會如預期般完成其路線型路由。
從 Out 資料夾刪除 Validated%MessageID%.xml。
在 Windows 檔案總管中,流覽至 C:\HowTos。
複製 (不會將) Invalid.xml 移至 DropFolder 資料夾。
流覽至 C:\HowTos\Out。確認尚未傳遞任何新訊息。
注意
無法驗證訊息;因此,無法完成路線型路由。
按一下工作列上的 [開始],指向 [系統管理工具],然後按一下[事件檢視器]。
在事件檢視器中,展開[Windows 記錄],然後按一下 [應用程式]。
找出來源BizTalk Server的最新事件,而事件識別碼為5719。
注意
無效訊息的提交和失敗導致應用程式事件記錄檔的例外狀況專案。
在 BizTalk Server 管理主控台中,以滑鼠右鍵按一下OnRamp.Itinerary.HowTo接收位置,然後按一下 [停用]。
停用 OnRamp.Itinerary.HowTo接收位置之後,請以滑鼠右鍵按一下它,然後按一下 [刪除]。 在 [ 確認刪除接收位置] 對話方塊中,按一下 [ 是]。
其他資源
如需詳細資訊,請參閱下列相關主題: