(0) exportieren Drucken
Alle erweitern

Vorgehensweise:Entwerfen eines WCF-Dienstvertrags für die Verwendung mit Service Bus

Letzte Aktualisierung: Juni 2014

Nachdem Sie Ihr Microsoft Azure Service Bus-Projekt erstellt haben, können Sie mit dem Schreiben des Codes beginnen.Der erste Schritt beim Schreiben des Codes besteht im Definieren der Schnittstelle, die Ihre Dienstanwendung für die Kommunikation mit der Clientanwendung verwendet.Diese Schnittstelle (die als Dienstvertrag) bezeichnet wird, ist mit einem Windows Communication Foundation (WCF)-Vertrag fast identisch:Sie definiert den Namen der Schnittstelle sowie die Methoden und Eigenschaften, die von der Schnittstelle bereitgestellt werden.Sie können Attribute im WCF-Stil verwenden, um dem Vertrag Informationen hinzuzufügen, und Sie verwenden zu diesem Zweck die gleiche Syntax.Der Hauptunterschied besteht darin, dass das Servicebus-Relay eine Erweiterung von WCF ist.Aus diesem Grund müssen Sie außerdem einen Kanal für die Verbindung mit Servicebus definieren.Andere Erweiterungen von WCF verwenden jedoch einen ähnlichen Kanal.Aus diesem Grund ist der Kanal selbst für Servicebus nicht eindeutig.Die folgende Darstellung bietet eine kurze Übersicht über das Erstellen eines Servicebus-Vertrags.

Ebenso wie in WCF müssen die Dienst- und die Clientanwendung über eine Kopie des Vertrags in ihrem Code verfügen.Dies kann auf vier Arten erfolgen:

  1. Manuelles Definieren des Vertrags – Dies ist die Standardeinstellung. Sie wird beim Entwickeln der Schnittstelle am häufigsten verwendet.Eine vereinfachte Verfahrensweise für diesen Vorgang wird weiter unten in diesem Abschnitt vorgestellt.Eine vollständige Beschreibung finden Sie unter Designing Service Contracts in der WCF-Dokumentation.

  2. Kopieren des Vertrags aus dem Dienstcode – Dieser Vorgang beinhaltet das Kopieren und Einfügen des Vertrags aus dem Dienstcode oder das Freigeben des Projekts.Diese Möglichkeit kann genutzt werden, wenn Sie schnellen Zugriff auf den Code besitzen (wenn Sie z. B. auch der Entwickler sind, der den Client erstellt).Viele der Beispielanwendungen im Azure SDK verwenden dieselbe Schnittstellendefinition gemeinsam, weil sich der Client und der Dienst im selben Projekt befinden.

  3. Verwenden des ServiceModel-Metadaten-Dienstprogrammtools (Scvutil.exe) – Dies ist eine Anwendung, mit der Sie auf einen bereitgestellten Metadatenendpunkt für eine ausgeführte Dienstanwendung verweisen.Sie gibt eine Datei zurück, die den zugehörigen Dienstvertrag enthält.Eine vereinfachte Verfahrensweise für diesen Vorgang wird weiter unten in diesem Abschnitt beschrieben.Eine vollständige Darstellung finden Sie unter Accessing Services Using a WCF Client und ServiceModel Metadata Utility Tool (Svcutil.exe) in der WCF-Dokumentation.Der Hauptunterschied bei der Verwendung von Svcutil.exe für eine Servicebus-Anwendung besteht darin, dass der an das Tool übergebene URI für Servicebus statt für den lokalen Host ist.Beachten Sie, dass Svcutil.exe erfordert, dass der Zieldienst die entsprechenden Metadaten bereitstellt.Weitere Informationen finden Sie unter Vorgehensweise:Bereitstellen eines Metadatenendpunkts.

  4. Hinzufügen eines Dienstverweises über Visual Studio – Dies ist die Benutzeroberflächenversion von Svcutil.exe. Auf sie kann über die Visual Studio-Umgebung zugegriffen werden.Eine vereinfachte Verfahrensweise für den Zugriff auf das Dialogfeld Dienstverweis hinzufügen wird weiter unten in diesem Abschnitt vorgestellt.Weitere Informationen finden Sie unter Vorgehensweise:Hinzufügen, Aktualisieren oder Entfernen eines Dienstverweises in der Visual Studio-Dokumentation.Wie bereits zuvor angemerkt wurde, ist es für das Hinzufügen eines Dienstverweises erforderlich, dass der Zieldienst die erforderlichen Informationen über einen Metadatenendpunkt bereitstellt.

  1. Erstellen Sie den Dienstvertrag, indem Sie das Attribut System.ServiceModel.ServiceContractAttribute auf die Schnittstelle anwenden, die die Methoden definiert, die der Dienst implementieren soll.

    [ServiceContract]
    public interface IMyContract
    {
        void Send(int count);
    }
    
    
  2. Geben Sie an, welche Methoden in der Schnittstelle ein Client aufrufen kann, indem Sie das Attribut System.ServiceModel.OperationContractAttribute auf sie anwenden.

    [ServiceContract]
    public interface IMyContract
    {
        [OperationContract]
        void Send(int count);
    }
    
    
  3. Es wird empfohlen, den Namen Ihres Vertrags und den Namespace Ihrer Anwendung ausdrücklich zu definieren, wenn der Vertrag deklariert wird.Auf diese Weise wird verhindert, dass die Infrastruktur die Standardnamen- und -namespacewerte verwendet.Beachten Sie, dass dies nicht der Dienstnamespace ist:In diesem Fall handelt es sich um einen eindeutigen Bezeichner für Ihren Vertrag, der einige Versionsinformationen enthalten sollte.

    [ServiceContract(Name = "IMyContact", Namespace = "http://samples.microsoft.com/ServiceModel/Relay/MyContractV1")]
    public interface IMyContract
    {
        [OperationContract]
        void Send(int count);
    }
    
    
  4. Deklarieren Sie einen Kanal, der von Ihrer Schnittstelle und auch von der IClientChannel-Schnittstelle erbt.

    [ServiceContract(Name = "IMyContact", Namespace = "http://samples.microsoft.com/ServiceModel/Relay/MyContractV1")]
    public interface IMyContract
    {
        [OperationContract]
        void Send(int count);
    }
    
    public interface IOnewayChannel : IOnewayContract, IClientChannel { }
    
  5. Wenn Sie eine Dienstanwendung erstellen, implementieren Sie die Schnittstelle an einer anderen Position im Code.

  1. Stellen Sie sicher, dass der Dienst ausgeführt wird, bevor Sie versuchen, die Metadaten abzurufen.

  2. Verwenden Sie die Befehlszeile, um zum Speicherort des Tools Svcutil.exe im Windows SDK zu navigieren.

    Der Standardinstallationspfad lautet C:\Programme\Microsoft SDKs\Windows\<Version>\Bin.

    Geben Sie den folgenden Befehl an der Befehlszeile aus:

    Svcutil.exe <service's Metadata Exchange (MEX) address or HTTP GET address>
    

    Wenn an der Zieladresse die entsprechenden Metadaten bereitgestellt werden, rufen Sie eine Datei ab, die WCF-Clientcode enthält, den die Clientanwendung zum Starten der Dienstanwendung verwenden kann.

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Namen des Projekts, dem Sie den Dienst hinzufügen möchten.Klicken Sie dann auf Dienstverweis hinzufügen.

    Das Dialogfeld Dienstverweis hinzufügen wird angezeigt.

  2. Geben Sie die URL für den Dienst im Feld Adresse ein.Klicken Sie dann auf Suche starten, um nach dem Dienst zu suchen.Wenn der Dienst Benutzername-/Kennwortsicherheit implementiert, werden Sie ggf. aufgefordert, einen Benutzernamen und ein Kennwort einzugeben.

  3. Erweitern Sie in der Liste Dienst den Knoten für den Dienst, den Sie verwenden möchten, und wählen Sie dann einen Dienstvertrag aus.

  4. Geben Sie im Feld Namespace den Namespace ein, der für den Verweis verwendet werden soll.

  5. Klicken Sie auf OK, um dem Projekt den Verweis hinzuzufügen.

  6. Ein Dienstclient (Proxy) wird generiert, und Metadaten, die den Dienst beschreiben, werden der Datei App.config hinzugefügt.

Anzeigen:
© 2014 Microsoft