Freigeben über


Interoperieren mit WSE

Dieses Beispiel veranschaulicht, wie zwischen einem Web Services Enhancements (WSE) 3.0-Dienst und einem Windows Communication Foundation (WCF)-Client oder -Dienst Interoperabilität erzielt werden kann.

Im Beispiel wird eine benutzerdefinierte Bindung namens WseHttpBinding implementiert. Diese Bindung ermöglicht die Verwendung einer WSE 3.0-Richtliniendatei, um einen WCF-Client- oder -Dienst zu konfigurieren und Interoperabilität mit WSE 3.0 herzustellen. WseHttpBinding erreicht dies durch eine Zuordnung der WSE 3.0-Eigenschaften in der Richtliniendatei zu den Eigenschaften in den WCF-Bindungen. Die WseHttpBinding kann als identisch mit einer Standardbindung betrachtet werden, da sie eine eingeschränkte Übersicht über die Eigenschaften von anderen Bindungen in dem Stapel bereitstellt, vor allem SecurityBindingElement.

Das Beispiel ist in zwei Teile gegliedert. Der erste Teil veranschaulicht die Verwendung der WseHttpBinding, um einen Aufruf von einem WCF-Client zu einem selbst gehosteten WCF -Dienst auszuführen. Für den zweiten Teil ist es erforderlich, dass WSE 3.0 SDK installiert ist.

Verwenden der WseHttpBinding zwischen einem WCF-Client und einem Dienst

Auf dem Client erstellt die CallWcfService-Methode eine Instanz der WseHttpBinding und legt die Eigenschaften für die Sicherheitsanforderungen des Clients fest:

static void Main(string[] args)
{
    CallWcfService();
    ...
}

Diese Anforderungen müssen den innerhalb der Main-Funktion des Diensts festgelegten Werten entsprechen, wie im folgenden Code dargestellt:

//Create a ServiceHost for the CalculatorService type.
using (ServiceHost serviceHost =        new ServiceHost(typeof(CalculatorService)))
{
    //Create and configure the WseHttpBinding.
    WseHttpBinding binding = new WseHttpBinding();
    binding.SecurityAssertion =        WseSecurityAssertion.AnonymousForCertificate;
    binding.EstablishSecurityContext = true;
    binding.RequireDerivedKeys = true;
    binding.MessageProtectionOrder =        MessageProtectionOrder.SignBeforeEncrypt;

    serviceHost.AddServiceEndpoint(typeof(ICalculator), binding, "");
    ServiceCredentials creds = new ServiceCredentials();
    creds.ServiceCertificate.SetCertificate(StoreLocation.LocalMachine,
                                            StoreName.My,                                            X509FindType.FindBySubjectName,                                             "localhost");
    serviceHost.Description.Behaviors.Add(creds);
    serviceHost.Open();
    ...
}

So richten Sie das Beispiel ein, erstellen es und führen es aus

  1. Stellen Sie sicher, dass Sie Beispiele zum einmaligen Setupverfahren für Windows Communication Foundation ausgeführt haben.

  2. Folgen Sie zum Erstellen der C#-Lösung den unter Erstellen der Windows Communication Foundation-Beispiele aufgeführten Anweisungen.

  3. Wenn Sie das Beispiel in einer Konfiguration mit einem einzigen Computer ausführen möchten, folgen Sie den unter Durchführen der Windows Communication Foundation-Beispiele aufgeführten Anweisungen.

  4. Der Dienst in diesem Beispiel ist selbst gehostet. Daher müssen Sie die Datei "Service.exe" im Verzeichnis "/service/bin" ausführen, bevor Sie den Client ausführen.

Verwenden der WseHttpBinding, um mit WSE 3.0-Diensten zu kommunizieren

Der Client in diesem Projekt kann auch für die Kommunikation mit den Schnellstartbeispielen in der WSE 3.0 SDK verwendet werden.

Nachdem Sie die WSE 3.0 SDK installiert haben, können Sie mithilfe des Tools "Svcutil.exe" einen Client generieren, der für die Kommunikation mit einem WSE 3.0-Dienst verwendet werden kann, nachdem der Dienst erstellt wurde. Im folgenden Beispiel wird die Vorgehensweise erläutert, wenn der WSE 3.0-Dienst auf dem lokalen Computer ausgeführt wird.

svcutil.exe /out:wseproxy.cs /n:"http://Microsoft.ServiceModel.Samples,Microsoft.ServiceModel.Samples" https://localhost/WSSecurityAnonymousPolicy/WSSecurityAnonymousService.asmx

Die Datei "Wseproxy.cs" ist in diesem Projekt enthalten. Der Name der generierten Proxyklasse ist WSSecurityAnonymousServiceSoapProxy, diese wird mit einer WseHttpBinding bereitgestellt, die entweder mithilfe von Eigenschaften im Code oder unter Verwendung einer von der Konfigurationsdatei "Wse3PolicyCache.config" geladenen WSE 3.0-Richtliniendatei konfiguriert wurde. Eine Konfigurationsdatei "Wse3PolicyCache.config" ist auch in diesem Projekt enthalten.

Nachdem das Beispiel WSE 3.0 WSSecurityAnonymous erfolgreich erstellt wurde, werden bei der Ausführung des Clients Aktienkurse vom WSE 3.0-Dienst sicher zurückgegeben.

Die Setupanweisungen für WSE 3.0 werden am Ende dieses Themas aufgelistet.

Kommentieren Sie auf dem Client den Aufruf für CallWcfService aus, und heben Sie die Auskommentierung des Codes für CallWseService auf. Durch die Übergabe von true oder false wird festgelegt, ob eine Richtliniendatei verwendet wird, um die WseHttpBinding durch den Aufruf der LoadPolicy(String filename, String policyName)-Methode zu konfigurieren. Diese verwendet einen XmlReader, um die WSE 3.0-Richtliniendatei zu analysieren.

Tipp

Wenn Sie WSE 3.0 auf dem Client installiert haben, anstatt einen XmlReader zum Laden der Richtliniendatei zu verwenden, können Sie den Code ändern, um die WSE 3.0 Microsoft.Web.Services3.Design.Policies-Klasse zum Laden der Richtlinie zu verwenden. Dies hat den Vorteil, dass die Microsoft.Web.Services3.Design.Policies-Klasse alle gültigen Formen der WSE 3.0-Richtliniendatei analysieren und das Ergebnis der WseHttpBinding bereitstellen kann. Wenn der Code den XmlReader-Typ verwendet, kann nur ein beschränkter Satz von Richtliniendateien analysiert werden.

So richten Sie das Beispiel mit WSE 3.0 ein, erstellen es und führen es aus

  1. Installieren Sie das WSE 3.0-Produkt von Web Services Enhancements (WSE) 3.0 für Microsoft .NET (möglicherweise nur in englischer Sprache).

  2. Lesen Sie das Handbuch für das WSE 3.0-Schnellstartbeispiel, um die WSE-Beispiele zu konfigurieren und einzurichten. Dies ist erforderlich, um die richtigen X.509-Zertifikate zu installieren und um ein virtuelles Verzeichnis zu erstellen, um den Webdienst in Internet Information Services (IIS) zu hosten. Führen Sie vor allem die Datei "Setup.bat" im Standardinstallationsverzeichnis C:\Programme\Microsoft WSE\v3.0\Samples aus.

  3. Erstellen Sie das WSE 3.0-Schnellstart-Richtlinienbeispiel WSSecurityAnonymous, das standardmäßig im folgenden Verzeichnis installiert wird (Hinweis: Es gibt eine Nur-Code-Version von WSSecurityAnonymous, die Sie ebenfalls verwenden können. Wenn Sie das Nur-Code-Beispiel verwenden möchten, müssen Sie die URL des Diensts auf dem Client zu https://localhost/WSSecurityAnonymousCode/WSSecurityAnonymousService.asmx ändern).

  4. Dieses WSE 3.0-Projekt C:\Programme\Microsoft WSE\v3 .0 \Samples\CS\QuickStart\Security\WSSecurityAnonymous\Policy.

  5. Der WCF-Client in diesem Interoperationsbeispiel wurde für die Interoperation mit diesem WSE 3.0-Schnellstartbeispiel entwickelt.

  6. Heben Sie in der Datei "Client.cs" in der Main-Funktion die Auskommentierung der Aufrufe der CallWseService-Methode auf. Sie können auch den Aufruf für den CallWcfService auskommentieren, um den Aufruf des WCF-Diensts zu verhindern.

  7. Folgen Sie zum Erstellen der C#-Lösung den unter Erstellen der Windows Communication Foundation-Beispiele aufgeführten Anweisungen.

  8. Wenn Sie das Beispiel in einer Konfiguration mit einem einzigen Computer ausführen möchten, folgen Sie den unter Durchführen der Windows Communication Foundation-Beispiele aufgeführten Anweisungen.

So richten Sie das Beispiel mit WSE 3.0 für mehre Computer ein, erstellen es und führen es aus

  1. Richten Sie zuerst einen WSE 3.0-Dienst ein. Installieren Sie das WSE 3.0-Produkt von Web Services Enhancements (WSE) 3.0 für Microsoft .NET (möglicherweise nur in englischer Sprache) auf dem Remotecomputer.

  2. Lesen Sie das Handbuch für das WSE 3.0-Schnellstartbeispiel, um die WSE-Beispiele zu konfigurieren und einzurichten. Dies ist erforderlich, um die richtigen X.509-Zertifikate zu installieren und um ein virtuelles Verzeichnis zu erstellen, um den Webdienst in Internet Information Services (IIS) zu hosten. Führen Sie vor allem die Datei "Setup.bat" im Standardinstallationsverzeichnis C:\Programme\Microsoft WSE\v3.0\Samples aus.

  3. Erstellen Sie das WSE 3.0-Schnellstart-Richtlinienbeispiel WSSecurityAnonymous, das standardmäßig im folgenden Verzeichnis installiert wird.

    Tipp

    Es gibt eine Nur-Code-Version von WSSecurityAnonymous, die Sie ebenfalls verwenden können.

  4. Dies ist das WSE 3.0-Projekt: C:\Programme\Microsoft WSE\v3.0\Samples\CS\QuickStart\Security\WSSecurityAnonymous\Policy.

  5. Nach der Einrichtung des Servers wird anschließend der WCF-Client auf einem anderen Computer eingerichtet. Exportieren Sie mithilfe des MMC-Tools das WSE2QuickStartServer-Zertifikat, das sich am Installationsort von WSE 3.0 im LocalMachine/Personal-Zertifikatspeicher befindet, in eine Datei. Wählen Sie dazu im Kontextmenü die Option Alle Aufgaben->Export. Für die Erstellung einer .CER-Datei brauchen Sie nicht den privaten Schlüssel zu exportieren, sondern nur den öffentlichen Schlüssel. Detaillierte Informationen zur Verwendung des MMC-Zertifikatverwaltungs-Snap-Ins für die Anzeige von Zertifikaten im Zertifikatspeicher finden Sie in der Datei "readme.html" im WSE 3.0-Verzeichnis C:\Programme\Microsoft WSE\v3.0\Samples.

  6. Kopieren Sie die .CER-Datei von dem Servercomputer auf den Clientcomputer, und importieren Sie das öffentliche Zertifikat in den Zertifikatspeicher CurrentUser/Vertrauenswürdige Personen. Detaillierte Informationen zur Verwendung des MMC-Zertifikatverwaltungs-Snap-Ins finden Sie in der Datei "readme.html" im WSE 3.0-Verzeichnis C:\Programme\Microsoft WSE\v3.0\Samples.

    Tipp

    Wenn die WSE 3.0-Datei "setup.bat" ausgeführt wird, wird das Serverzertifikat WSE2QuickStartServer von einem Zertifikatspeicher in einen anderen kopiert.

  7. Wenn Sie das Beispiel in einer Konfiguration mit mehreren Computern ausführen möchten, befolgen Sie für den WCF-Client die Anweisungen unter Durchführen der Windows Communication Foundation-Beispiele, und konfigurieren Sie den Client für die Verwendung der Adresse des WSE 3.0-Diensts anstatt von "localhost". Auf einem Computer namens "meincomputer" ist die Adresse beispielsweise standardmäßig: http://meincomputer/WSSecurityAnonymousPolicy/WSSecurityAnonymousService.asmx

  8. Heben Sie in der Datei "Client.cs" in der Main-Funktion die Auskommentierung der Aufrufe der CallWseService-Methode auf. Sie können auch den Aufruf für den CallWcfService auskommentieren, um den Aufruf des WCF-Diensts zu verhindern.

  9. Folgen Sie zum Erstellen der C#-Lösung den unter Erstellen der Windows Communication Foundation-Beispiele aufgeführten Anweisungen.

  10. Führen Sie den Client aus.

Bereinigung nach Ausführung des Beispiels

  1. Um die Zertifikate vom Client oder Server zu entfernen, verwenden Sie das Tool MMC. Alternativ können Sie auf dem Server die Datei "Cleanup.bat" im Verzeichnis C:\Programme\Microsoft WSE\v3 .0 \Samples ausführen.

Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.