War diese Seite hilfreich?
Ihr Feedback ist uns wichtig. Teilen Sie uns Ihre Meinung mit.
Weiteres Feedback?
1500 verbleibende Zeichen
Exportieren (0) Drucken
Alle erweitern

Schritt 2: Definieren eines WCF-Dienstvertrags für die Verwendung mit Service Bus

Letzte Aktualisierung: Juli 2015

Dies ist die zweite von sieben Aufgaben, die erforderlich sind, um einen Windows Communication Foundation (WCF)-Basisdienst sowie einen Client zu erstellen, der den Dienst aufrufen kann, der Microsoft Azure Service Bus verwendet. Eine Übersicht über alle sieben Aufgaben finden Sie im Lernprogramm zu Service Bus-Relaymessaging. Der vorherige Schritt ist Schritt 1: Registrieren für ein Konto, der nachfolgende Schritt 3: Implementieren des WCF-Vertrags für die Verwendung von Service Bus.

Wenn Sie einen WCF-Basisdienst erstellen (für Servicebus oder einen anderen Basisdienst), müssen Sie den Dienstvertrag definieren, der angibt, welche Vorgänge (Webdienstterminologie für Methoden oder Funktionen) der Dienst unterstützt. Verträge werden erstellt, indem eine C++-, C#- oder Visual Basic-Schnittstelle definiert wird. Dieses Lernprogramm zeigt, wie ein solcher Vertrag mithilfe von C# erstellt wird. Jede Methode in der Schnittstelle entspricht einem bestimmten Dienstvorgang. Auf jede Schnittstelle muss das Attribut ServiceContractAttribute und auf jeden Vorgang das Attribut OperationContractAttribute angewendet werden. Wenn eine Methode in einer Schnittstelle das Attribut ServiceContractAttribute, nicht jedoch das Attribut OperationContractAttribute besitzt, wird diese Methode nicht bereitgestellt. Der Code für diese Aufgaben wird im Beispiel im Anschluss an das Verfahren bereitgestellt. Weitere Informationen über zum Definieren eines Vertrags finden Sie unter Entwerfen eines WCF-Vertrags für Service Bus. Eine ausführlichere Darstellung von Verträgen und Diensten finden Sie unter Designing and Implementing Services in der WCF-Dokumentation.

Geschätzte Zeit bis zum Abschließen des Vorgangs: 10 Minuten.

  1. Öffnen Sie Visual Studio 2012 als Administrator, indem Sie mit der rechten Maustaste im Startmenü auf das Programm klicken und dann Als Administrator ausführen auswählen.

  2. Erstellen Sie ein neues Konsolenanwendungsprojekt. Klicken Sie auf das Menü Datei, und wählen Sie Neu aus. Klicken Sie anschließend auf Projekt. Klicken Sie im Dialogfeld Neues Projekt auf Visual C# (wenn Visual C# nicht angezeigt wird, suchen Sie unter Andere Sprachen), klicken Sie auf die Vorlage Konsolenanwendung, und geben Sie ihr den Namen EchoService. Verwenden Sie den Standardspeicherort. Klicken Sie auf OK, um das Projekt zu erstellen.

  3. Beachten Sie, dass die folgenden zwei Schritte (4 und 5) nicht erforderlich sind, wenn Sie Visual Studio 2008 oder höher ausführen.

  4. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf Ihr Projekt (in diesem Beispiel EchoService), und klicken Sie dann auf Eigenschaften.

  5. Klicken Sie links auf die Registerkarte Anwendung, und wählen Sie dann .NET Framework 4 aus der Dropdownliste Zielframework aus. Klicken Sie auf Ja, wenn Sie aufgefordert werden, das Projekt neu zu laden.

  6. Für ein C#-Projekt erstellt Visual Studio eine Datei namens Program.cs. Diese Klasse enthält eine leere Methode namens Main(). Diese Methode ist erforderlich, damit ein Konsolenanwendungsprojekt ordnungsgemäß erstellt wird. Sie kann daher problemlos im Projekt verbleiben.

  7. Fügen Sie dem Projekt einen Verweis auf System.ServiceModel.dll hinzu:

    1. Klicken Sie in Projektmappen-Explorer mit der rechten Maustaste unter dem Projektordner auf den Ordner Verweise, und klicken Sie dann auf Verweis hinzufügen.

    2. Wählen Sie die Registerkarte .NET im Dialogfeld Verweis hinzufügen aus, und führen Sie dann einen Bildlauf nach unten durch, bis System.ServiceModel angezeigt wird. Wählen Sie diesen Eintrag aus, und klicken Sie dann auf OK.

  8. Doppelklicken Sie in Projektmappen-Explorer auf die Datei Program.cs, um sie im Editor zu öffnen.

  9. Fügen Sie eine Anweisung using für den Namespace System.ServiceModel hinzu.

    using System.ServiceModel;
    

    System.ServiceModel ist der Namespace, mit dem Sie programmgesteuert auf die grundlegenden Funktionen von WCF zugreifen können. Servicebus verwendet viele Objekte und Attribute von WCF, um Dienstverträge zu definieren. Wahrscheinlich verwenden Sie diesen Namespace in den meisten Ihrer Servicebus-Anwendungen.

  10. Ändern Sie den Namespacenamen aus dem Standardnamen EchoService in Microsoft.ServiceBus.Samples.

    ImportantWichtig
    In diesem Lernprogramm wird der C#-Namespace Microsoft.ServiceBus.Samples verwendet, der dem Namespace des durch den Vertrag verwalteten Typs entspricht, der in der Konfigurationsdatei in Schritt 6: Konfigurieren des WCF-Clients entspricht. Sie können beim Erstellen dieses Beispiels jeden gewünschten Namespace angeben, das Lernprogramm funktioniert jedoch nur, wenn Sie anschließend die Namespaces des Vertrags und des Diensts in der Anwendungskonfigurationsdatei entsprechend ändern. Der in der Datei App.config angegebene Namespace muss mit dem in Ihren C#-Dateien angegebenen Namespace identisch sein.

  11. Definieren Sie direkt hinter der Deklaration des Namespaces Microsoft.ServiceBus.Samples (jedoch innerhalb des Namespaces) eine neue Schnittstelle namens IEchoContract, und wenden Sie das Attribut ServiceContractAttribute auf die Schnittstelle mit dem Namespacewert http://samples.microsoft.com/ServiceModel/Relay/ an. Der Namespacewert unterscheidet sich von dem Namespace, den Sie im Bereich Ihres Codes verwenden. Der Namespacewert wird stattdessen als eindeutiger Bezeichner für diesen Vertrag verwendet. Durch das explizite Angeben des Namespaces wird verhindert, dass der Namespacestandardwert dem Vertragsnamen hinzugefügt wird.

    [ServiceContract(Name = "IEchoContract", Namespace = "http://samples.microsoft.com/ServiceModel/Relay/")]
    public interface IEchoContract
    {
    }
    
    
    noteHinweis
    Normalerweise enthält der Dienstvertragnamespace ein Namenschema, das Versionsinformationen umfasst. Durch das Berücksichtigen von Versionsinformationen im Dienstvertragnamespace können Dienste größere Änderungen isolieren, indem ein neuer Dienstvertrag mit einem neuen Namespace definiert und an einem neuen Endpunkt bereitgestellt wird. Auf diese Weise können Clients weiterhin den alten Dienstvertrag verwenden, ohne dass sie aktualisiert werden müssen. Versionsinformationen könne aus einer Datumsangabe oder einer Buildnummer bestehen. Weitere Informationen finden Sie unter Dienstversionsverwaltung. In diesem Lernprogramm enthält das Namenschema des Dienstvertragnamespace keine Versionsinformationen.

  12. Deklarieren Sie in der Schnittstelle IEchoContract eine Methode für den einzelnen Vorgang, den der Vertrag IEchoContract in der Schnittstelle bereitstellt, und wenden Sie das Attribut OperationContractAttribute auf die Methode an, die Sie als Teil des öffentlichen Servicebus-Vertrags bereitstellen möchten.

    [OperationContract]
    string Echo(string text);
    
  13. Deklarieren Sie außerhalb des Vertrags einen Kanal, der von IEchoChannel und von der Schnittstelle IClientChannel erbt. Das folgende Beispiel zeigt dies:

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

    Ein Kanal ist das WCF-Objekt, über das der Host und der Client Informationen aneinander übergeben. Später schreiben Sie Code für den Kanal, um ein Echo der Informationen zwischen den beiden Anwendungen zu erzeugen.

  14. Klicken Sie im Menü Erstellen auf Projektmappe erstellen, oder drücken Sie F6, um die bisherige Richtigkeit Ihrer Arbeitsschritte zu bestätigen.

Beispiel

Im folgenden Codebeispiel ist eine Basisschnittstelle gezeigt, die einen Servicebus-Vertrag definiert.

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)
        {
        }
    }
}

Nachdem die Schnittstelle jetzt erstellt ist, können Sie die Schnittstelle implementieren, wie in Schritt 3: Implementieren des WCF-Vertrags für die Verwendung von Service Bus beschrieben.

Anzeigen:
© 2015 Microsoft