匯出 (0) 列印
全部展開

步驟 2:定義 WCF 服務合約以搭配服務匯流排使用

更新日期: 2014年6月

此為建立基本 Windows Communication Foundation (WCF) 服務和可呼叫使用 Microsoft Azure 服務匯流排 之服務的用戶端所需之七個工作中的第二個。 如需 7 項工作的概觀,請參閱 服務匯流排轉送訊息教學課程。 前一個步驟是步驟 1:註冊帳戶;接續的步驟是步驟 3:實作 WCF 合約以使用服務匯流排

建立基本 WCF 服務 (不論是否適用於 服務匯流排) 時,您必須定義服務合約,以指定服務支援哪些操作 (適用於方法函數 的 Web 服務術語)。合約的建立方式為定義 C++、C# 或 Visual Basic 介面。本教學課程將示範如何使用 C# 來建立這類合約。介面中的每個方法都對應到特定的服務操作。每一個介面都必須套用 ServiceContractAttribute 屬性,而且每一個操作都必須套用 OperationContractAttribute。 如果具有 ServiceContractAttribute 屬性的介面中的方法沒有 OperationContractAttribute 屬性,則不會公開該方法。 在程序後面的範例中,提供這些工作的程式碼。如需以下內容的詳細資訊 如何定義合約,請參閱設計服務匯流排的 WCF 合約。 如需更多合約和服務的討論,請參閱 WCF 文件中的Designing and Implementing Services

預期的完成時間:10 分鐘。

使用介面建立服務匯流排合約

  1. 在 [開始] 功能表中,於程式上按一下滑鼠右鍵,然後選取 [以系統管理員身分執行],以系統管理員身分開啟 Visual Studio 2012。

  2. 建立新的主控台應用程式專案。按一下 [檔案] 功能表,選取 [新增],然後按一下 [專案]。在 [新增專案] 對話方塊中,按一下 [Visual C#] (如果 [Visual C#] 未出現,請在 [其他語言] 底下尋找),並按一下 [主控台應用程式] 範本,然後將它命名為 EchoService。請使用預設 [位置]。按一下 [確定] 建立專案。

  3. 請注意,如果您執行的是 Visual Studio 2008 或更新版本,則不需執行下列這兩個步驟 (4 和 5)。

  4. 在 [方案總管] 中,於專案名稱上按一下滑鼠右鍵 (在此範例中為 [EchoService]),然後按一下 [屬性]。

  5. 按一下左側的 [應用程式] 索引標籤,然後從 [目標 Framework:] 下拉清單中選取 [.NET Framework 4]。系統提示重新載入專案時,請按一下 [是]。

  6. 若為 C# 專案,Visual Studio 會建立名為 Program.cs 的檔案。此類別會包含名為 Main() 的空白方法。需要有這個方法,才能正確建置主控台應用程式專案。因此,您可以放心地將它留在專案中。

  7. 將 System.ServiceModel.dll 的參考新增至專案:

    1. 在 [方案總管] 中,於專案資料夾底下的 [參考] 資料夾上按一下滑鼠右鍵,然後按一下 [新增參考]。

    2. 選取 [新增參考] 對話方塊中的 [.NET] 索引標籤並向下捲動,直到您看見 [System.ServiceModel] 為止,並加以選取,然後按一下 [確定]。

    note附註
    使用命令列編譯器 (例如,Csc.exe) 時,您還必須提供組件路徑。例如,在執行 Windows 7 的電腦上,此路徑預設為:Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation。

  8. 在 [方案總管] 中,按兩下 Program.cs 檔案,以在編輯器中開啟此檔案。

  9. System.ServiceModel 命名空間新增 using 陳述式。

    using System.ServiceModel;
    

    System.ServiceModel 是可讓您以程式設計方式存取 WCF 基本功能的命名空間。服務匯流排 使用 WCF 的許多物件和屬性來定義服務合約。您極有可能會在大多數的 服務匯流排 應用程式中使用此命名空間。

  10. 將命名空間名稱的預設名稱 EchoService 變更為 Microsoft.ServiceBus.Samples

    Important重要事項
    本教學課程使用 C# 命名空間 Microsoft.ServiceBus.Samples,此為步驟 6:設定 WCF 用戶端中的設定檔使用的合約管理類型命名空間。您可以在建置此範例時指定任何所需的命名空間;但是,除非您接著在應用程式設定檔中據以修改合約和服務的命名空間,否則本教學課程將不會運作。在 App.config 檔案中指定的命名空間必須與 C# 檔案中指定的命名空間相同。

  11. 直接在 Microsoft.ServiceBus.Samples 命名空間宣告之後,但在命名空間內,定義名為 IEchoContract 的新介面,並將 ServiceContractAttribute 屬性套用至命名空間值為 http://samples.microsoft.com/ServiceModel/Relay/ 的介面。此命名空間值與您在整個程式碼範圍內使用的命名空間不同。此命名空間值會作為此合約的唯一識別碼。明確指定命名空間可避免將預設命名空間值新增至合約名稱。

    [ServiceContract(Name = "IEchoContract", Namespace = "http://samples.microsoft.com/ServiceModel/Relay/")]
    public interface IEchoContract
    {
    }
    
    
    note附註
    服務合約命名空間通常會包含內有版本資訊的命名配置。在服務合約命名空間中加入版本資訊,可讓服務利用新命名空間定義新服務合約,並在新端點上公開,藉此來隔離重大變更。如此一來,用戶端就可以繼續使用舊服務合約,而不需加以更新。版本資訊是由資料或組建編號所組成。如需詳細資訊,請參閱 服務版本設定。基於本課程的目的,服務合約命名空間的命名配置未包含版本資訊。

  12. IEchoContract 介面中,針對 IEchoContract 合約在介面中公開的單一作業宣告方法,並將 OperationContractAttribute 屬性套用至您想當作公用 服務匯流排 合約的一部分公開的方法。

    [OperationContract]
    string Echo(string text);
    
  13. 在合約之外,宣告繼承自 IEchoChannel,同時也會繼承到 IClientChannel 介面的通道,如下所示:

    
    
        [ServiceContract(Name = "IEchoContract", Namespace = "http://samples.microsoft.com/ServiceModel/Relay/")]
        public interface IEchoContract
        {
            [OperationContract]
            String Echo(string text);
        }
    
        public interface IEchoChannel : IEchoContract, IClientChannel { }
    
    

    通道是主機和用戶端彼此用來傳遞資訊的 WCF 物件。您稍後將會根據通道來撰寫程式碼,以回應兩個應用程式之間的資訊。

  14. 從 [建置] 功能表,按一下 [建置方案] 或按 [F6],以確認工作的準確性。

範例

下列程式碼範例顯示可定義 服務匯流排 合約的基本介面。

using System;
using System.ServiceModel;

namespace Microsoft.ServiceBus.Samples
{
    [ServiceContract(Name = "IEchoContract", Namespace = "http://samples.microsoft.com/ServiceModel/Relay/")]
    public interface IEchoContract
    {
        [OperationContract]
        String Echo(string text);
    }

    public interface IEchoChannel : IEchoContract, IClientChannel { }


    class Program
    {
        static void Main(string[] args)
        {
        }
    }
}

現在已建立介面,您可以實作介面,如步驟 3:實作 WCF 合約以使用服務匯流排所述。

社群新增項目

新增
Microsoft 正展開一份線上問卷調查,了解您對於 MSDN 網站的看法。 如果您選擇參加,您離開 MSDN 網站時即會顯示線上問卷調查。

您是否想要參加?
顯示:
© 2014 Microsoft