共用方式為


逐步解說:使用 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

  1. 執行自我解壓縮 WCFBasicHttpReceiveAdapter.exe 檔案,並將檔案解壓縮到 C:\WCFBasicHttpReceiveAdapter 資料夾中。

  2. 在 Microsoft Visual Studio 中,開啟 C:\WCFBasicHttpReceiveAdapter\WCFBasicHttpReceiveAdapter.sln 檔案。

  3. Microsoft.Samples.BizTalk.WCFBasicHttpReceiveAdapter.BizTalkApp元件包含BizTalk Server協調流程、對應和兩個架構。 它必須安裝在 GAC 中,而且需要強名稱金鑰檔案,才能發生此動作。 以滑鼠右鍵按一下 BizTalkApp 專案,然後按一下 [ 屬性]。 在 [ 屬性] 頁面上,按一下 [ 簽署],然後選取 [ 簽署元件]。 按一下 [選擇強式名稱金鑰檔案] 下拉式清單中的向下箭號,按一下 [< 新增 >],然後在[金鑰檔案名] 文字方塊中輸入 keyfile.snk 。 取消核取 [使用密碼保護我的金鑰檔案],然後按一下 [ 確定]。

  4. 在 方案總管中,以滑鼠右鍵按一下BizTalkApp專案,然後按一下 [重建]。

    注意

    請勿嘗試建置 方案,或此時建置 WCFClient 應用程式。 WCFClient目前尚未準備好在範例中建置。

  5. 展開 BizTalkApp,然後開啟 DeliveryProcess.odx 以檢閱。 協調流程會使用 WCF-BasicHttp 配接器透過 HTTP 取得 WCF 要求。 它會使用轉換對應來修改要求,並使用相同的 WCF 配接器再次傳送回應。

    1. 此協調流程有一個邏輯要求-回應埠,將會與 WCF-BasicHttp 配接器一起發佈。 並會於稍後的步驟中繫結到實體連接埠。

    2. 以滑鼠右鍵按一下設計工具視窗中 DeliveryProcess.odx 的頂端節點,然後選取 [ 屬性]。 請確定埠類型的 Type Modifier 屬性為 Public

  6. 在方案總管中,以滑鼠右鍵按一下[BizTalkApp],然後按一下 [屬性]。

    1. 如果 BizTalk 管理資料庫未裝載在本機,如果您使用不同的資料庫伺服器,請修改 Server 屬性。 按一下 [ 部署] 索引標籤,然後修改 Server 屬性以指向資料庫伺服器。

    2. 請確定 [應用程式名稱] 屬性已設定為 WCFBasicHttpReceiveAdapter。 這是將部署 BizTalk 解決方案的 BizTalk 應用程式名稱。

    3. 在方案總管中,以滑鼠右鍵按一下[BizTalkApp],然後按一下 [部署]。 如果未在本機部署,您可能需要設定SQL Server以允許遠端連線。 如需詳細資訊,請參閱How to: Enable Remote Connections on SQL Server

若要使用 BizTalk WCF 服務發佈精靈發佈範例協調流程

  1. 在此步驟中,您將採用新部署的協調流程元件,並將其發佈為 WCF 服務。 若要這樣做,請按一下 [開始]、指向[所有程式]、指向[MicrosoftBizTalk Server],然後按一下 [BizTalk WCF 服務發佈精靈]。

  2. 在 [ 歡迎使用 BizTalk WCF 服務發佈精靈 ] 頁面上,按 [下一步]。

  3. 在 [ WCF 服務類型 ] 頁面上,執行下列動作來指定要發佈的 WCF 服務類型,以及接收 WCF 訊息的 BizTalk 端點,然後按 [ 下一步] :

    1. 選取 [ 服務端點 ] 選項,指出您將從元件中的協調流程發佈 WCF 服務。 從 [配接器名稱] ([傳輸類型) ] 下拉式清單中選取[WCF-BasicHttp]。

    2. 選取 [ 啟用中繼資料端點 ] 核取方塊,讓 IIS 裝載的 WCF 接收位置發佈其 WCF 服務中繼資料。 選取此核取方塊會將serviceMetadata> 元素的 <HTTPGetEnabled屬性設定為 true Web.Config。當 HTTP/GET 要求要求要求時,就會擷取此中繼資料。 稍後您將使用 SvcUtil.exe 工具來取得此資料,以產生 Proxy 類別,讓用戶端程式代碼用來呼叫 WCF 服務。

    3. 選取 下列應用程式選項中的 [建立 BizTalk 接收位置 ] 選項,以建立對應至 WCF-BasicHttp 配接器每個產生的 .svc 檔案的接收埠和位置。 選擇將產生接收埠和位置的 BizTalk 應用程式名稱 WCFBasicHttpReceiveAdapter,然後按 [ 下一步]。

      精靈會建立繫結檔案 Binding.XML,以表示相關聯的接收位置。 此檔案位於 Web 目錄中,稍後可透過 BizTalk Server 管理主控台手動匯入。

      注意

      如果您沒有選取部署的 BizTalk 應用程式,在這裡會選取預設的應用程式。

  4. 在 [ 建立 WCF 服務 ] 頁面上,選取 [ 將 BizTalk 協調流程發佈為 WCF 服務],然後按 [ 下一步]。 這會將下一個步驟中指定的協調流程發佈為 WCF 服務。

  5. 選取包含要發佈的協調流程的組件。 在 [BizTalk 元件 ] 頁面上的 [BizTalk 元件檔案] (*.dll) 文字方塊中,按一下 [ 流覽 ] 流覽至 C:\WCFBasicHttpReceiveAdapter\BizTalkApp\bin\Development 資料夾,按兩下 Microsoft.Samples.BizTalk.WCFBasicHttpReceiveAdapter.BizTalkApp 元件,其中包含要發佈的範例協調流程,按一下 [ 開啟],然後按 [ 下一步]。

  6. 在 [ 協調流程和埠 ] 頁面上,確定頁面上已選取 [ 埠:DeliveryRequestPort ] 節點,然後按 [ 下一步]。 選取此節點表示也會選取其對應的較高層級節點。 而連接埠就會以裝載 WCF-BasicHttp 配接器的要求-回應接收位置來發佈。

  7. 在 [WCF 服務屬性]頁面上的 [WCF 服務目標命名空間] 文字方塊中,輸入您想要使用此已發佈 WCF 服務的 URI,然後按 [下一步]。 在此逐步解說中,將預設 URI 「 <http://tempuri.org/> 」 保留于 WCF 服務的目標命名空間文字方塊中。

  8. [WCF 服務位置 ] 頁面上,執行下列動作來指定要建立的 WCF 服務位置,然後按 [ 下一步]:

    1. 在 [ 位置] 文字方塊中,輸入 WCF 服務執行所在的 Web 目錄名稱,或按一下 [ 流覽 ] 並選取 Web 目錄。 在此逐步解說中,由於元件名稱與虛擬目錄相同,因此請將預設位置保留 () http://localhost/Microsoft.Samples.BizTalk.WCFBasicHttpReceiveAdapter.BizTalkApp 在 [ 位置 ] 文字方塊中。

    2. 選取 [允許匿名存取 WCF 服務 ] 選項,然後按 [ 下一步]。 這個選項會允許對所建立虛擬目錄的匿名存取。 由於本逐步解說使用傳輸安全性模式,因此必須選取此選項以允許此精靈將建立之 Web 應用程式的匿名驗證。

  9. 在 [ WCF 服務摘要 ] 頁面上,按一下 [ 建立 ] 以建立 WCF 服務。 這個步驟會建立接收埠,讓指定的協調流程可以透過指定的 Web 目錄而使用。

  10. [正在完成 BizTalk WCF 服務發佈精靈 ] 頁面上,按一下 [ 完成]。

若要啟用範例 BizTalk 應用程式

  1. 按一下[開始],指向[所有程式],指向[MicrosoftBizTalk Server],然後按一下[BizTalk Server管理]。

  2. 在 BizTalk Server 管理主控台中,依序展開 [應用程式]、[WCFBasicHttpReceiveAdapter]、[協調流程]、以滑鼠右鍵按一下DeliveryProcess協調流程、按一下 [屬性],然後設定系結資訊,如下所示:

    1. 在 [ 協調流程屬性 ] 對話方塊中,按一下 [ 結],然後將 [主機 ] 設定為 [BizTalkServerApplication]。

    2. 在 [ 協調流程屬性 ] 對話方塊中,選取要系結之 DeliveryRequestPort 的接收埠。 在此逐步解說中,選取 BizTalk WCF 服務發佈精靈在上一個程式中建立的接收埠,然後按一下 [ 確定]。

  3. 在 BizTalk Server 管理主控台中,以滑鼠右鍵按一下[WCFBasicHttpReceiveAdapter],按一下 [啟動],然後按一下 [啟動應用程式] 對話方塊中的 [啟動]。

若要設定裝載所發佈 WCF 服務的 Web 應用程式

  1. 按一下 [開始],指向 [系統管理員工具],然後按一下 [ Internet Information Services (IIS) 7.0 管理員]。

  2. 在 IIS 管理員中,依序展開 [網站]、[ 預設網站],然後展開 [Web 應用程式 ] [Microsoft.Samples.BizTalk.WCFBasicHttpReceiveAdapter.BizTalkApp ] 建立的 BizTalk WCF 服務發佈精靈

  3. 建立執行此服務的應用程式集區。 以滑鼠右鍵按一下 [應用程式集區],按一下 [ 新增應用程式集區],輸入應用程式集區的名稱,然後按一下 [ 確定]。

  4. 展開 [應用程式集區],以滑鼠右鍵按一下您剛才建立的應用程式集區,然後選取 [ 進階設定]。 在[處理模型]區段下,輸入可存取 [分識別] 欄位下BizTalk Server資料庫的帳戶。

  5. 在 [IIS 管理員] 中,按一下 [ 內容檢視]。 在右窗格中,以滑鼠右鍵按一下 BizTalk WCF 服務發佈精靈 所建立的 WCF 服務 .svc 檔案,然後按一下 [ 流覽]。 此時會開啟 Internet Explorer 顯示一個頁面,表示您已成功建立可執行的 WCF 服務。 此頁面還包含完整的 WSDL 位址,而您可以在擷取可用來建立服務之用戶端應用程式的 Proxy 程式碼和組態檔時,複製並使用此位址來搭配服務中繼資料工具 (svcutil.exe) 以執行該擷取作業。

  6. 將 [SvcUtil.exe 剪貼簿] 複製到 [剪貼簿],其中含有上一個步驟中所顯示 Internet Explorer 頁面上的完整 WSDL 位址。

若要建立範例 WCF 用戶端應用程式 WCFClient 的 Proxy 類別

  1. 建立 Proxy 類別,讓 WCF 用戶端範例應用程式可以呼叫 WCF 服務。 雖然不需要 Proxy,但手動撰寫程式碼非常複雜,因此建議建立 Proxy。 開啟 Visual Studio 命令提示字元 ,然後移至您將放置 Proxy 類別和應用程式組態檔的 C:\WCFBasicHttpReceiveAdapter\WCFClient 資料夾。

  2. 貼上 svcutil.exe 命令列,其中包含您在上一個程式中複製的完整 WSDL 位址,然後按 Enter 以建立 Proxy 類別和應用程式組態檔。 此命令列會為 Proxy 類別建立 BizTalkServiceInstance.cs ,並為應用程式組態檔 建立output.config

  3. 在 Visual Studio 的 [方案總管] 中,以滑鼠右鍵按一下[WCFClient],指向 [新增],然後按一下 [現有專案]。

  4. 在 [新增現有專案] 對話方塊中,流覽至WCFClient資料夾,選取[類型檔案] 下拉式清單中的 [所有檔案] (*.*) ,選取[BizTalkServiceInstance.cs] 並output.config檔案,然後按一下 [新增]。

  5. 針對 WCFClient 專案,展開 [ 參考],然後確定 WCFClient 專案具有 System.ServiceModel 做為其其中一個參考。

  6. 展開 WCFClient 專案,以滑鼠右鍵按一下 [output.config],按一下 [ 重新命名],然後輸入 新名稱App.config

  7. 按兩下 Program.cs 以檢閱如何使用 Svcutil.exe所產生的 Proxy 類別呼叫已發佈的 WCF 服務。 具現化和叫用 WCF 服務的呼叫似乎為使用 Microsoft_Samples_BizTalk_WCFBasicHttpReceiveAdapter_BizTalkApp_DeliveryProcess_DeliveryRequestPortClient 類別撰寫程式碼的簡單性。 呼叫遠端 WCF 服務不需要額外的程式碼。

  8. 在 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

    按任意鍵繼續。 . .

另請參閱

如何使用 BizTalk WCF 服務發佈精靈將協調流程發佈為 WCF 服務