逐步解說:使用 WCF-NetMsmq 配接器發佈 WCF 服務
注意
如需配接器的詳細資訊,請參閱BizTalk Server 中的配接器。
簡介
在BizTalk Server中,協調流程可以發佈為 Windows Communication Foundation (WCF) 服務。 透過 BizTalk 接收位置,協調流程可以公開 WCF 端點,讓 WCF 用戶端可以呼叫它。 BizTalk WCF 服務發佈精靈提供簡單的方式,將協調流程公開為接收位置。
WCF-NetMsmq 配接器會使用 NetMsmqBinding 系結來支援使用 Microsoft Message Queuing (也稱為 MSMQ) 做為其基礎傳輸。 WCF 服務的用戶端會使用設定為使用 WCF-NetMSMQ 配接器的接收位置,將 WCF 訊息傳送至 MSMQ 佇列。 配接器會從 MSMQ 佇列中挑選 WCF 訊息、將它們轉換成BizTalk Server格式,並將其寫入至 BizTalk Server MessageBox 資料庫。
本逐步解說示範 WCF 用戶端應用程式如何使用 WCF-NetMsmq 配接器,透過 MSMQ 訊息佇列與裝載在 .NET 主控台應用程式中的 WCF 服務通訊。 它示範如何使用 BizTalk WCF 服務發佈精靈來發佈接收位置的中繼資料。 它也會示範如何設定 Web 應用程式來支援發佈中繼資料。
完成此逐步解說之後,您將會瞭解如何執行下列工作:
從 Visual Studio 內,使用Deploy命令將 BizTalk 元件部署至本機實例BizTalk Server。 這樣會建立有組件填入其中的 BizTalk 應用程式。 BizTalk 組件包含資源資訊;例如,要在 BizTalk 方案中使用的協調流程、管線、結構描述和對應。
從 BizTalk Server 管理主控台中,設定 WCF-NetMsmq 接收位置來裝載已發佈的 WCF 服務。
從 BizTalk WCF 服務發佈精靈中,建立 Web 應用程式來發佈現有接收位置的中繼資料。 用戶端會使用此中繼資料,將訊息提交至接收位置。
必要條件
若要執行此範例中的步驟,請確定您的環境會安裝下列必要條件:
建置元件並執行部署程式的電腦,以及執行範例的電腦都需要 Microsoft Windows Server、.NET Framework和BizTalk Server。
用來建置元件和執行部署程式的電腦需要 Microsoft Visual Studio。
執行範例的電腦需要 WCF 配接器和 WCF 管理工具。 這些是安裝 Microsoft BizTalk Server期間安裝的選項。
在您用來執行系統管理工作的電腦上,您必須以屬於 BizTalk Server Administrators 群組成員的使用者帳戶身分執行,以在 BizTalk Server 管理主控台內設定BizTalk Server應用程式設定。 此使用者帳戶也必須是本機 Administrators 群組的成員,才能部署應用程式、管理主機實例,以及其他可能需要的工作。
在任何需要 WCF 功能的電腦上,完成 的 WCF 範例 https://go.microsoft.com/fwlink/?LinkId=135510 的一次性安裝程式。
在執行範例並將系結或 .msi 檔案匯入BizTalk Server的電腦上,請確定主機不是受信任的主機,否則匯入將會失敗。
您必須下載逐步解說程式碼,並將其解壓縮到您的電腦。 本逐步解說是整個 WCF 配接器逐步解說套件的一部分。 您可以從 BizTalk Server 開發人員中心下載WCFAdapterWalkthroughs.exe檔案https://go.microsoft.com/fwlink/?LinkId=194140 。
建置和部署 BizTalk 解決方案 BizTalkApp
將 WCFNetMsmqAdapterPublishing.exe 擷取至 C:\WCFNetMsmqAdapterPublishing。
在 Visual Studio 中,開啟 WCFNetMsmqAdapterPublishing.sln 檔案。
在方案總管中,展開[BizTalkApp],然後開啟[OrderProcess.odx] 以檢閱。 範例協調流程會接收訂單要求訊息,而且只會傳回訂單回應訊息。
因為 BizTalkApp 元件必須安裝在 GAC 中,所以需要強名稱金鑰檔案才能完成部署程式。 以滑鼠右鍵按一下 BizTalkApp 專案,然後按一下 [ 屬性]。 在 [ 屬性] 頁面上,按一下 [ 簽署],然後選取 [ 簽署元件]。 按一下 [選擇強式名稱金鑰檔案] 下拉式清單中的向下箭號,按一下 [< 新增 >],然後在[金鑰檔案名] 文字方塊中輸入
keyfile.snk
。 取消核 取 [使用密碼保護我的金鑰檔案],然後按一下 [ 確定]。按一下 [部署] 索引標籤,如果您針對LOCALHOST以外的 BizTalk 管理資料庫使用不同的資料庫伺服器,請變更Server屬性。 確定 BizTalk 應用程式 值已設定為 WCFNetMsmqAdapterPublishing。 確定 [安裝至全域組件快取 ] 設定為 True。
在 方案總管中,以滑鼠右鍵按一下BizTalkApp專案,然後按一下 [重建]。
在方案總管中,以滑鼠右鍵按一下[BizTalkApp],然後按一下 [部署]。
設定應用程式
請確定電腦上已安裝 MICROSOFT Message Queuing (MSMQ) 元件,如下所示:
按一下[開始],以滑鼠右鍵按一下 [電腦],然後按一下 [管理] 以開啟伺服器管理員。
展開 [ 功能] 節點。 如果未安裝 訊息佇列 ,請以滑鼠右鍵按一下 [功能],然後選取 [ 新增功能]。 核取 [訊息佇列],按 [ 下一步],然後按一下 [ 安裝 ] 在該系統上安裝 MSMQ。
請確定您的電腦上已啟動 MSMQ 訊息佇列服務,以便 WCF-NetMsmq 配接器使用,如下所示:
按一下 [開始]、指向 [系統管理工具],然後按一下 [服務]。
在[服務] 中,確定訊息佇列服務的狀態為[已啟動]。 如果未啟動服務,請以滑鼠右鍵按一下 [訊息佇列],然後按一下 [ 啟動]。
建立接收位置使用的目標佇列,WCF-NetMsmq 配接器會從用戶端挑選傳入的 WCF 訊息。
按一下 [開始],指向 [ 系統管理工具],然後按一下 [ 電腦管理]。
在 [電腦管理] 中,依序展開 [服務和應用程式]、[ 訊息佇列]、以滑鼠右鍵按一下 [ 私人佇列]、指向 [ 新增],然後按一下 [ 私人佇列]。
在 [ 新增私人佇列 ] 對話方塊中,輸入
WCFNetMsmqAdapterPublishing
[ 佇列名稱 ] 文字方塊中,選取 [ 交易式 ] 核取方塊,然後按一下 [ 確定]。
建立範例應用程式的 WCF-NetMsmq 接收位置,如下所示:
按一下[開始],指向[所有程式],指向[Microsoft BizTalk Server 20xx],然後按一下[BizTalk Server管理]。
在 BizTalk Server 管理主控台中,依序展開[BizTalk 群組]、[應用程式]、[WCFNetMsmqAdapterPublishing]、以滑鼠右鍵按一下 [接收埠]、指向 [新增],然後按一下[單向接收埠]。
在 [ 接收埠屬性 ] 對話方塊的 [ 名稱 ] 文字方塊中,輸入
WCFNetMsmqAdapterPublishing.ReceivePurchaseOrder
,然後按一下 [ 確定]。在 BizTalk Server 管理主控台中,以滑鼠右鍵按一下WCFNetMsmqAdapterPublishing.ReceivePurchaseOrder,指向 [新增],然後按一下 [接收位置]。
在 [ 接收位置屬性 ] 對話方塊的 [ 名稱 ] 文字方塊中,輸入
WCFNetMsmqAdapterPublishing.ReceivePurchaseOrder.NetMsmq
。在 [接收位置屬性] 對話方塊的[類型] 旁的 [傳輸] 區段中,從下拉式清單中選取[WCF-NetMsmq],然後按一下 [設定]。
在 [WCF-NetMsmq 傳輸屬性 ] 對話方塊的 [ 一般 ] 索引標籤上,于 [ 位址 (URI) ] 文字方塊中,輸入
net.msmq://localhost/private/WCFNetMsmqAdapterPublishing
。在 [WCF-NetMsmq 傳輸屬性 ] 對話方塊的 [ 系 結] 索引標籤上,確定已選取 [交易式] 核取方塊。
注意
因為您建立的目標佇列為交易式佇列,所以必須選取此核取方塊。 如果未選取此方塊,將不會啟用接收位置,因為接收位置的交易需求與基礎 MSMQ 佇列的交易需求之間會有差異。
在[WCF-NetMsmq 傳輸屬性] 對話方塊的 [安全性] 索引標籤上,從 [安全性模式] 下拉式清單中選取 [無]。
注意
本逐步解說假設 MSMQ 已安裝在電腦上停用 Active Directory 整合。 啟用 Active Directory 整合時,可以使用MSMQ 驗證模式屬性的預設值WindowsDomain。
在 [ 接收位置屬性 ] 對話方塊中,按一下 [ 確定]。
建立範例應用程式的 FILE 傳送埠。 此埠可用來從服務的基礎協調流程,從採購單路由回應。
在 BizTalk Server 管理主控台中,展開[WCFNetMsmqAdapterPublishing],以滑鼠右鍵按一下 [傳送埠],指向 [新增],然後按一下 [靜態單向傳送埠]。
在 [ 傳送埠屬性 ] 對話方塊的 [ 名稱 ] 文字方塊中,輸入
WCFNetMsmqAdapterPublishing.SendPurchaseOrder.File
。在 [傳送埠屬性] 對話方塊的[類型] 旁的 [傳輸] 區段中,從下拉式清單中選取 [檔案],然後按一下 [設定]。
在 [ 檔案傳輸屬性] 對話方塊的 [ 一般 ] 索引標籤的 [ 目的地資料夾 ] 文字方塊中,輸入
C:\WCFNetMsmqAdapterPublishing\Out
,然後按一下 [ 確定]。在 [ 傳送埠內容 ] 對話方塊中,按一下 [ 確定]。
指定範例應用程式的主控件名稱和繫結,如下所示:
在 BizTalk Server 管理主控台中,依序展開[WCFNetMsmqAdapterPublishing]、[協調流程]、以滑鼠右鍵按一下範例協調流程、按一下 [屬性]、[系結],然後將[主機] 設定為[BizTalkServerApplication] 或其他適當的主機。
在 [協調流程屬性] 對話方塊中,從PurchaseOrderRequestPort的[接收埠] 下拉式清單中選取[WCFNetMsmqAdapterPublishing.ReceivePurchaseOrder]。
在 [協調流程屬性] 對話方塊中,從PurchaseOrderResponsePort的[傳送埠/傳送埠群組] 下拉式清單中選取[WCFNetMsmqAdapterPublishing.SendPurchaseOrder.File]。
在 [ 協調流程屬性 ] 對話方塊中,按一下 [ 確定 ] 以儲存組態。
發佈 WCF-NetMsmq 接收位置的中繼資料
按一下[開始],指向[所有程式],指向[Microsoft BizTalk Server 20xx],然後按一下 [BizTalk WCF 服務發佈精靈]。
在 [ 歡迎使用 BizTalk WCF 服務發佈精靈 ] 頁面上,按 [ 下一步]。
在 [WCF 服務類型] 頁面上,選取 [ 僅限中繼資料端點 (MEX) ] 核取方塊,以發佈 WCFNetMsmq 接收位置的中繼資料。 從 [發佈接收位置的中繼資料] 下拉式清單中選取[WCFNetMsmqAdapterPublishing.ReceivePurchaseOrder.NetMsmq],然後按 [下一步]。
在 [ 建立 WCF 服務 ] 頁面上,選取 [將 BizTalk 協調流程發佈為 WCF 服務],然後按 [ 下一步]。
在 [BizTalk 元件 ] 頁面的 [BizTalk 元件檔案] (*.dll) 文字方塊中,按一下 [ 流覽 ] 流覽至 C:\WCFNetMsmqAdapterPublishing\BizTalkApp\bin\Development 資料夾,按兩下包含要發行之範例協調流程的元件,然後按 [ 下一步]。
在 [ 協調流程和埠 ] 頁面上,確定頁面上已選取 [ 埠:PurchaseOrderRequestPort ] 節點,然後按 [ 下一步]。
接收埠的 MEX 將會發佈,並由用戶端用來將訊息提交至接收位置。
在 [WCF 服務屬性] 頁面的 [ WCF 服務目標命名空間 ] 文字方塊中,輸入您想要此已發佈 WCF 服務使用的 URI,然後按 [ 下一步]。 在此逐步解說中,保留預設 URI :
http://tempuri.org/
。在 [WCF 服務位置] 頁面上,執行下列動作來指定要建立的 WCF 服務位置,然後按 [ 下一步]:
在 [ 位置] 文字方塊中,輸入 WCF 服務執行所在的 Web 目錄名稱,或按一下 [ 流覽 ] 並選取 Web 目錄。 在本逐步解說中,請將 [位置] 文字方塊中的預設 http://localhost/< 位置保留 (BizTalk 元件名稱 >) 。
選取 [ 允許匿名存取 WCF 服務 ] 選項。 這個選項會新增已建立之虛擬目錄的匿名存取。 此選項必須加以選取,才可允許精靈將為該 Web 應用程式建立的匿名驗證。
在 [WCF 服務摘要] 頁面上,按一下 [ 建立 ] 以建立 WCF 服務。
在 [ 正在完成 BizTalk WCF 服務發佈精靈 ] 頁面上,按一下 [ 完成]。
設定裝載已發佈中繼資料服務的 Web 應用程式
開啟命令提示字元,移至BizTalk WCF 服務發佈精靈建立 WCF 服務的C:\inetpub\wwwroot\Microsoft.Samples.BizTalk.WCF.NetMsmqPublishing.BizTalkApp資料夾。 使用記事本開啟 Web.config 檔案。
在 [記事本] 中,在system.web > 元素內 <新增下列程式程式碼:
<trust level="Full" originUrl="" />
注意
這個設定是選擇性的。 它會將裝載已發佈 WCF 服務存取權的 ASP.NET 應用程式授與受作業系統安全性約束的任何資源。
使用 Internet Explorer 來測試發佈的 WCF 服務,如下所示:
按一下 [開始],指向 [ 系統管理員工具],然後按一下 [ Internet Information Services (IIS) Manager]。
在 IIS 管理員中建立具有正確 BizTalk 資料庫權限的應用程式集區,以供此服務在其中執行。 以滑鼠右鍵按一下 [應用程式集區],按一下 [ 新增應用程式集區],輸入應用程式集區的名稱,然後按一下 [ 確定]。
展開 [應用程式集區],以滑鼠右鍵按一下您剛才建立的應用程式集區,然後選取 [ 進階設定]。 在[處理模型]區段下,輸入可存取 [身分識別] 欄位下BizTalk Server資料庫的帳戶。
依序展開 [網站]、[ 預設網站] 和 [BizTalk WCF 服務發佈精靈] 建立的 Web 應用程式。
在 IIS 管理員的中央窗格中,按一下 [ 內容檢視 ] 以顯示應用程式的檔案。
以滑鼠右鍵按一下BizTalk WCF 服務發佈精靈所建立的 Microsoft_Samples_BizTalk_WCF_NetMsmqPublishing_BizTalkApp_OrderProcess_PurchaseOrderRequestPort.svc服務檔案,然後按一下 [流覽]。 這會開啟 Internet Explorer 以顯示 BizTalkServerInstance 服務 頁面,指出 WCF 服務的實例正在執行。 此頁面會顯示完整的 WSDL 位址,您可以複製並搭配服務中繼資料工具 (svcutil.exe) ,或從 Visual Studio 內擷取 Proxy 程式碼和組態檔,以用來建立服務的用戶端應用程式。
從 Internet Explorer 顯示在上一個步驟中的 BizTalkServerInstance 服務 頁面,將具有完整 WSDL 位址的命令列複製到剪貼簿。
svcutil.exe http://localhost/Microsoft.Samples.BizTalk.WCF.NetMsmqPublishing.BizTalkApp/Microsoft_Samples_BizTalk_WCF_NetMsmqPublishing_BizTalkApp_OrderProcess_PurchaseOrderRequestPort.svc?wsdl
建置用戶端應用程式
以系統管理員身分開啟 Visual Studio 命令提示字元,然後移至 C:\WCFNetMsmqAdapterPublishing\WCFClient 資料夾。 這是您將放置 Proxy 類別和應用程式組態檔的位置。
貼上整個 svcutil.exe 命令列,其中包含您在上一個程式中複製的完整 WSDL 位址,然後按 ENTER 鍵。 這會建立 Proxy 類別 、BizTalkServiceInstance.cs和應用程式組態檔, output.config。讓命令提示字元視窗保持開啟,以在最後一節期間使用。
在 Visual Studio 的 [方案總管] 中,以滑鼠右鍵按一下[WCFClient],指向 [新增],然後按一下 [現有專案]。
在 [新增現有專案] 對話方塊中,流覽至WCFClient資料夾,選取[類型檔案] 下拉式清單中的 [所有檔案] (*.*) ,選取[BizTalkServiceInstance.cs] 並output.config檔案,然後按一下 [新增]。
展開 [WCFClient],以滑鼠右鍵按一下 [output.config],按一下 [ 重新命名],然後輸入
App.config
作為新名稱。按兩下 Program.cs 以檢閱如何使用 svcutil.exe 所產生的 Proxy 類別呼叫已發佈的 WCF 服務。
展開 [參考],然後確定 WCFClient 專案 已System.ServiceModel.dll 參考。
以滑鼠右鍵按一下 WCFClient 專案,然後選取 [ 建置]。 讓 Visual Studio 保持開啟,並移至下一節。
使用 WCF-NetMsmq 配接器測試範例解決方案
在 BizTalk Server 管理主控台中,以滑鼠右鍵按一下WCFNetMsmqAdapterPublishing應用程式,然後按一下 [啟動]。 在 [ 開始] 對話方塊中,按一下 [ 啟動]。
在 BizTalk Server 管理主控台中,依序展開 [平臺設定]、[主機實例]、以滑鼠右鍵按一下[BizTalkServerApplication] 或其他適當的主機實例,然後按一下 [重新開機]。 雖然不需要此步驟,但最好確保範例可正確運作到這一點。
在 Visual Studio 的 [ 偵 錯] 功能表上,按一下 [ 啟動但不 偵錯] 以執行 WCFClient 應用程式。 這會將範例訊息傳送至 WCF-NetMsmq 接收位置。 您會在下方看到輸出訊息,指出已傳送訊息。
在 WCF-NetMsmq 接收位置上呼叫 Submit 作業
按任意鍵以關閉 WCF 用戶端應用程式
按任意鍵以關閉 WCFClient 應用程式。
在 Visual Studio 命令提示字元中,移至 C:\WCFNetMsmqAdapterPublishing\Out 資料夾,然後確定 WCFClient 應用程式傳回的回應訊息存在。
按兩下 {GUID}.xml 檔案,以在 Internet Explorer 中開啟檔案,並檢視服務所處理的 OrderID 值。