逐步解說:使用 WCF-BasicHttp 配接器發佈 WCF 服務
簡介
本逐步解說會使用 BizTalk WCF 服務發佈精靈和 WCF-BasicHttp 配接器,將 Windows Communication Foundation (WCF) 服務發佈為 BizTalk 協調流程。 BizTalk 協調流程會顯示至外部用戶端,例如另一個 Web 服務或 WCF 應用程式,方法是使用 WCF-BasicHttp 配接器公開 WCF 端點作為 WCF 服務。 WCF-BasicHttp 配接器包含傳送介面卡和接收配接器。 在此範例中,您只會使用此配接器的接收端,透過 WCF 用戶端應用程式的 HTTP 或 HTTPS 通訊協定接收 WCF 服務要求。
WCF-BasicHttp 配接器會使用BasicHttpBinding系結來提供與 Web 服務初始版本相容的傳輸/通訊協定堆疊實作,以作為BizTalk Server與 WCF 功能之間的橋接器。 它會使用 HTTP 或 HTTPS 傳輸搭配文字編碼,與符合 WS-I 基本設定檔 1.1 的舊版 ASMX 型 Web 服務和用戶端進行通訊。 使用 WCF-BasicHttp 配接器,您將無法利用 WS-* 通訊協定支援的進階 Web 通訊功能。 如果您需要這樣做,請使用 WCF-WSHttp 配接器。
本逐步解說示範如何建立 WCF-BasicHttp 接收位置,以將協調流程發佈為 WCF 服務。 您將設定 Internet Information Services (IIS) ,以提供該 WCF 服務的隔離裝載。 用戶端應用程式會呼叫已發佈的 WCF 協調流程,作為外部用戶端如何透過網際網路呼叫已發佈 WCF 服務的範例,以使用其功能。
完成此逐步解說之後,您將會瞭解如何執行下列工作:
從 Visual Studio 內,使用Deploy命令,以 BizTalk 元件內的 BizTalk 協調流程形式將 WCF 服務部署到本機實例BizTalk Server。 從 Visual Studio 部署會建立一個 BizTalk 應用程式,其中包含包含協調流程、管線、架構和對應等資源的元件,以用於 BizTalk 解決方案。
部署之後,BizTalk 協調流程可透過 BizTalk Server 管理主控台進行設定和控制。 在本逐步解說中,您將設定 WCF-BasicHttp 接收位置,以接受傳送至 BizTalk WCF 服務發佈精靈所建立之 WCF 服務的傳入訊息。 接收位置是由 IIS 中的 BizTalk 隔離主機所裝載,並作為 WCF 服務來取得傳入要求。
注意
在本逐步解說中,您將使用 BizTalk WCF 發佈精靈和/或 BizTalk Web 服務發佈精靈,將 BizTalk 協調流程和架構發佈為 WCF 服務與 WCF 配接器。 若要使用 SOAP 配接器將協調流程和架構發佈為 Web 服務,您可以使用 BizTalk WCF 發佈精靈 和/或 BizTalk Web 服務發佈精靈。
必要條件
若要執行此範例中的步驟,請確定您的環境會安裝下列必要條件:
建置元件並執行部署程式的電腦,以及執行範例的電腦都需要 Microsoft Windows Server 2008 SP2 和/或 Windows Server 2008 R2、Microsoft .NET Framework 4 和 Microsoft BizTalk Server。
用來建置元件和執行部署程式的電腦需要 Microsoft Visual Studio。
執行範例的電腦需要 WCF 配接器和 WCF 管理工具。 這些是在 Microsoft BizTalk Server 安裝期間安裝的選項。
在用來執行系統管理工作的電腦上,您必須以屬於 BizTalk Server Administrators 群組成員的使用者帳戶執行,以在 BizTalk Server 管理主控台內設定BizTalk Server應用程式設定。 此使用者帳戶也必須是本機 Administrators 群組的成員,才能部署應用程式、管理主機實例,以及其他可能需要的工作。
在任何需要 WCF 功能的電腦上,在 Windows Communication Foundation 範例的一次性安裝程式完成 WCF 範例的一次性安裝程式。
在執行範例並將系結或 .msi 檔案匯入BizTalk Server的電腦上,請確定主機不是受信任的主機,否則匯入將會失敗。
您必須下載逐步解說程式碼,並將其解壓縮到您的電腦。 本逐步解說是整個 WCF 配接器逐步解說套件的一部分。 您可以從 BizTalk Server 開發人員中心 https://go.microsoft.com/fwlink/?LinkId=194140 下載檔案WCFAdapterWalkthroughs.exe。
部署範例 BizTalk 方案 BizTalkApp
執行自我解壓縮 WCFBasicHttpReceiveAdapter.exe 檔案,並將檔案解壓縮到 C:\WCFBasicHttpReceiveAdapter 資料夾中。
在 Microsoft Visual Studio 中,開啟 C:\WCFBasicHttpReceiveAdapter\WCFBasicHttpReceiveAdapter.sln 檔案。
Microsoft.Samples.BizTalk.WCFBasicHttpReceiveAdapter.BizTalkApp元件包含BizTalk Server協調流程、對應和兩個架構。 它必須安裝在 GAC 中,而且需要強名稱金鑰檔案,才能發生此動作。 以滑鼠右鍵按一下 BizTalkApp 專案,然後按一下 [ 屬性]。 在 [ 屬性] 頁面上,按一下 [ 簽署],然後選取 [ 簽署元件]。 按一下 [選擇強式名稱金鑰檔案] 下拉式清單中的向下箭號,按一下 [< 新增 >],然後在[金鑰檔案名] 文字方塊中輸入
keyfile.snk
。 取消核取 [使用密碼保護我的金鑰檔案],然後按一下 [ 確定]。在 方案總管中,以滑鼠右鍵按一下BizTalkApp專案,然後按一下 [重建]。
注意
請勿嘗試建置 方案,或此時建置 WCFClient 應用程式。 WCFClient目前尚未準備好在範例中建置。
展開 BizTalkApp,然後開啟 DeliveryProcess.odx 以檢閱。 協調流程會使用 WCF-BasicHttp 配接器透過 HTTP 取得 WCF 要求。 它會使用轉換對應來修改要求,並使用相同的 WCF 配接器再次傳送回應。
此協調流程有一個邏輯要求-回應埠,將會與 WCF-BasicHttp 配接器一起發佈。 並會於稍後的步驟中繫結到實體連接埠。
以滑鼠右鍵按一下設計工具視窗中 DeliveryProcess.odx 的頂端節點,然後選取 [ 屬性]。 請確定埠類型的 Type Modifier 屬性為 Public。
在方案總管中,以滑鼠右鍵按一下[BizTalkApp],然後按一下 [屬性]。
如果 BizTalk 管理資料庫未裝載在本機,如果您使用不同的資料庫伺服器,請修改 Server 屬性。 按一下 [ 部署] 索引標籤,然後修改 Server 屬性以指向資料庫伺服器。
請確定 [應用程式名稱] 屬性已設定為 WCFBasicHttpReceiveAdapter。 這是將部署 BizTalk 解決方案的 BizTalk 應用程式名稱。
在方案總管中,以滑鼠右鍵按一下[BizTalkApp],然後按一下 [部署]。 如果未在本機部署,您可能需要設定SQL Server以允許遠端連線。 如需詳細資訊,請參閱How to: Enable Remote Connections on SQL Server。
若要使用 BizTalk WCF 服務發佈精靈發佈範例協調流程
在此步驟中,您將採用新部署的協調流程元件,並將其發佈為 WCF 服務。 若要這樣做,請按一下 [開始]、指向[所有程式]、指向[MicrosoftBizTalk Server],然後按一下 [BizTalk WCF 服務發佈精靈]。
在 [ 歡迎使用 BizTalk WCF 服務發佈精靈 ] 頁面上,按 [下一步]。
在 [ WCF 服務類型 ] 頁面上,執行下列動作來指定要發佈的 WCF 服務類型,以及接收 WCF 訊息的 BizTalk 端點,然後按 [ 下一步] :
選取 [ 服務端點 ] 選項,指出您將從元件中的協調流程發佈 WCF 服務。 從 [配接器名稱] ([傳輸類型) ] 下拉式清單中選取[WCF-BasicHttp]。
選取 [ 啟用中繼資料端點 ] 核取方塊,讓 IIS 裝載的 WCF 接收位置發佈其 WCF 服務中繼資料。 選取此核取方塊會將serviceMetadata> 元素的 <HTTPGetEnabled屬性設定為
true
Web.Config。當 HTTP/GET 要求要求要求時,就會擷取此中繼資料。 稍後您將使用 SvcUtil.exe 工具來取得此資料,以產生 Proxy 類別,讓用戶端程式代碼用來呼叫 WCF 服務。選取 下列應用程式選項中的 [建立 BizTalk 接收位置 ] 選項,以建立對應至 WCF-BasicHttp 配接器每個產生的 .svc 檔案的接收埠和位置。 選擇將產生接收埠和位置的 BizTalk 應用程式名稱 WCFBasicHttpReceiveAdapter,然後按 [ 下一步]。
精靈會建立繫結檔案 Binding.XML,以表示相關聯的接收位置。 此檔案位於 Web 目錄中,稍後可透過 BizTalk Server 管理主控台手動匯入。
注意
如果您沒有選取部署的 BizTalk 應用程式,在這裡會選取預設的應用程式。
在 [ 建立 WCF 服務 ] 頁面上,選取 [ 將 BizTalk 協調流程發佈為 WCF 服務],然後按 [ 下一步]。 這會將下一個步驟中指定的協調流程發佈為 WCF 服務。
選取包含要發佈的協調流程的組件。 在 [BizTalk 元件 ] 頁面上的 [BizTalk 元件檔案] (*.dll) 文字方塊中,按一下 [ 流覽 ] 流覽至 C:\WCFBasicHttpReceiveAdapter\BizTalkApp\bin\Development 資料夾,按兩下 Microsoft.Samples.BizTalk.WCFBasicHttpReceiveAdapter.BizTalkApp 元件,其中包含要發佈的範例協調流程,按一下 [ 開啟],然後按 [ 下一步]。
在 [ 協調流程和埠 ] 頁面上,確定頁面上已選取 [ 埠:DeliveryRequestPort ] 節點,然後按 [ 下一步]。 選取此節點表示也會選取其對應的較高層級節點。 而連接埠就會以裝載 WCF-BasicHttp 配接器的要求-回應接收位置來發佈。
在 [WCF 服務屬性]頁面上的 [WCF 服務目標命名空間] 文字方塊中,輸入您想要使用此已發佈 WCF 服務的 URI,然後按 [下一步]。 在此逐步解說中,將預設 URI 「
<http://tempuri.org/>
」 保留于 WCF 服務的目標命名空間文字方塊中。在 [WCF 服務位置 ] 頁面上,執行下列動作來指定要建立的 WCF 服務位置,然後按 [ 下一步]:
在 [ 位置] 文字方塊中,輸入 WCF 服務執行所在的 Web 目錄名稱,或按一下 [ 流覽 ] 並選取 Web 目錄。 在此逐步解說中,由於元件名稱與虛擬目錄相同,因此請將預設位置保留 ()
http://localhost/Microsoft.Samples.BizTalk.WCFBasicHttpReceiveAdapter.BizTalkApp
在 [ 位置 ] 文字方塊中。選取 [允許匿名存取 WCF 服務 ] 選項,然後按 [ 下一步]。 這個選項會允許對所建立虛擬目錄的匿名存取。 由於本逐步解說使用傳輸安全性模式,因此必須選取此選項以允許此精靈將建立之 Web 應用程式的匿名驗證。
在 [ WCF 服務摘要 ] 頁面上,按一下 [ 建立 ] 以建立 WCF 服務。 這個步驟會建立接收埠,讓指定的協調流程可以透過指定的 Web 目錄而使用。
在 [正在完成 BizTalk WCF 服務發佈精靈 ] 頁面上,按一下 [ 完成]。
若要啟用範例 BizTalk 應用程式
按一下[開始],指向[所有程式],指向[MicrosoftBizTalk Server],然後按一下[BizTalk Server管理]。
在 BizTalk Server 管理主控台中,依序展開 [應用程式]、[WCFBasicHttpReceiveAdapter]、[協調流程]、以滑鼠右鍵按一下DeliveryProcess協調流程、按一下 [屬性],然後設定系結資訊,如下所示:
在 [ 協調流程屬性 ] 對話方塊中,按一下 [ 系結],然後將 [主機 ] 設定為 [BizTalkServerApplication]。
在 [ 協調流程屬性 ] 對話方塊中,選取要系結之 DeliveryRequestPort 的接收埠。 在此逐步解說中,選取 BizTalk WCF 服務發佈精靈在上一個程式中建立的接收埠,然後按一下 [ 確定]。
在 BizTalk Server 管理主控台中,以滑鼠右鍵按一下[WCFBasicHttpReceiveAdapter],按一下 [啟動],然後按一下 [啟動應用程式] 對話方塊中的 [啟動]。
若要設定裝載所發佈 WCF 服務的 Web 應用程式
按一下 [開始],指向 [系統管理員工具],然後按一下 [ Internet Information Services (IIS) 7.0 管理員]。
在 IIS 管理員中,依序展開 [網站]、[ 預設網站],然後展開 [Web 應用程式 ] [Microsoft.Samples.BizTalk.WCFBasicHttpReceiveAdapter.BizTalkApp ] 建立的 BizTalk WCF 服務發佈精靈 。
建立執行此服務的應用程式集區。 以滑鼠右鍵按一下 [應用程式集區],按一下 [ 新增應用程式集區],輸入應用程式集區的名稱,然後按一下 [ 確定]。
展開 [應用程式集區],以滑鼠右鍵按一下您剛才建立的應用程式集區,然後選取 [ 進階設定]。 在[處理模型]區段下,輸入可存取 [身分識別] 欄位下BizTalk Server資料庫的帳戶。
在 [IIS 管理員] 中,按一下 [ 內容檢視]。 在右窗格中,以滑鼠右鍵按一下 BizTalk WCF 服務發佈精靈 所建立的 WCF 服務 .svc 檔案,然後按一下 [ 流覽]。 此時會開啟 Internet Explorer 顯示一個頁面,表示您已成功建立可執行的 WCF 服務。 此頁面還包含完整的 WSDL 位址,而您可以在擷取可用來建立服務之用戶端應用程式的 Proxy 程式碼和組態檔時,複製並使用此位址來搭配服務中繼資料工具 (svcutil.exe) 以執行該擷取作業。
將 [SvcUtil.exe 剪貼簿] 複製到 [剪貼簿],其中含有上一個步驟中所顯示 Internet Explorer 頁面上的完整 WSDL 位址。
若要建立範例 WCF 用戶端應用程式 WCFClient 的 Proxy 類別
建立 Proxy 類別,讓 WCF 用戶端範例應用程式可以呼叫 WCF 服務。 雖然不需要 Proxy,但手動撰寫程式碼非常複雜,因此建議建立 Proxy。 開啟 Visual Studio 命令提示字元 ,然後移至您將放置 Proxy 類別和應用程式組態檔的 C:\WCFBasicHttpReceiveAdapter\WCFClient 資料夾。
貼上 svcutil.exe 命令列,其中包含您在上一個程式中複製的完整 WSDL 位址,然後按 Enter 以建立 Proxy 類別和應用程式組態檔。 此命令列會為 Proxy 類別建立 BizTalkServiceInstance.cs ,並為應用程式組態檔 建立output.config 。
在 Visual Studio 的 [方案總管] 中,以滑鼠右鍵按一下[WCFClient],指向 [新增],然後按一下 [現有專案]。
在 [新增現有專案] 對話方塊中,流覽至WCFClient資料夾,選取[類型檔案] 下拉式清單中的 [所有檔案] (*.*) ,選取[BizTalkServiceInstance.cs] 並output.config檔案,然後按一下 [新增]。
針對 WCFClient 專案,展開 [ 參考],然後確定 WCFClient 專案具有 System.ServiceModel 做為其其中一個參考。
展開 WCFClient 專案,以滑鼠右鍵按一下 [output.config],按一下 [ 重新命名],然後輸入 新名稱App.config 。
按兩下 Program.cs 以檢閱如何使用 Svcutil.exe所產生的 Proxy 類別呼叫已發佈的 WCF 服務。 具現化和叫用 WCF 服務的呼叫似乎為使用 Microsoft_Samples_BizTalk_WCFBasicHttpReceiveAdapter_BizTalkApp_DeliveryProcess_DeliveryRequestPortClient 類別撰寫程式碼的簡單性。 呼叫遠端 WCF 服務不需要額外的程式碼。
在 Visual Studio 的 [ 偵 錯] 功能表上,按一下 [ 啟動但不 偵錯] 以執行 WCFClient。 用戶端程式代碼會建立 DeliveryItem 訊息,並呼叫 WCF 服務,並傳入 Address、ProductID 和 Amount。
DeliveryItem deliveryRequestItem = new DeliveryItem(); deliveryRequestItem.Address = "One Microsoft Way"; deliveryRequestItem.ProductID = "00A120c"; deliveryRequestItem.Amount = "300"; DeliveryRequestPortClient deliveryProcessClient = new DeliveryRequestPortClient("BasicHttpBinding_ITwoWayAsync"); DeliveryItem1 deliveryConfirmation = deliveryProcessClient.Submit(deliveryRequestItem);
如果用戶端成功從已發佈的 WCF 服務收到回應訊息,它會在回應訊息中顯示傳遞確認號碼 (ProductID 和 Address) 的串連。
使用 deliveryRequestItem 呼叫的提交作業
傳回的傳遞確認號碼:00A120c300One Microsoft Way
按任意鍵繼續。 . .