NetHttpBinding

Das NetHttpBinding-Beispiel veranschaulicht, wie eine Bindung implementiert wird, die das HttpTransportBindingElement oder das HttpsTransportBindingElement oben auf das BinaryMessageEncodingBindingElement stapelt. Die HTTP-basierten systemdefinierten Bindungen, die mit Windows Communication Foundation (WCF) geliefert werden (wie BasicHttpBinding oder WsHttpBinding), schichten vorzugsweise HTTP oben auf das TextMessageEncodingBindingElement, um das Senden und Empfangen von Nachrichten als Text/Xml zu Interoperabilitätszwecken zu erlauben. Die TCP- und NamedPipe-basierten systemdefinierten Bindungen, die mit Windows Communication Foundation (WCF) geliefert werden (wie NetTcpBinding oder NetNamedPipeBinding), schreiben und verarbeiten Nachrichten in Binärform. Das Binärformat ist zwar nicht interoperabel, jedoch effizienter und leistungsoptimiert.

Aa395198.note(de-de,VS.100).gifHinweis:
Die Setupprozedur und die Erstellungsanweisungen für dieses Beispiel befinden sich am Ende dieses Abschnitts.

Aa395198.Important(de-de,VS.100).gif Hinweis:
Die Beispiele sind möglicherweise bereits auf dem Computer installiert. Überprüfen Sie das folgende (standardmäßige) Verzeichnis, bevor Sie fortfahren.

<Installationslaufwerk>:\WF_WCF_Samples

Wenn dieses Verzeichnis nicht vorhanden ist, rufen Sie Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4 auf, um alle Windows Communication Foundation (WCF)- und WF-Beispiele herunterzuladen. Dieses Beispiel befindet sich im folgenden Verzeichnis.

<Installationslaufwerk>:\WF_WCF_Samples\WCF\Extensibility\Binding\NetHttpBinding

Das Beispiel veranschaulicht, wie Sie mithilfe der Architektur vonWCF Bindungselemente kombinieren können, die Ihre Bindungen in einem Kanalstapel wie von Ihnen gewünscht konfigurieren sollen. Die Schritte zum Erstellen einer benutzerdefinierten Bindung lauten wie folgt:

  1. Entscheiden Sie, welche Bindungselemente zusammen gestapelt werden sollen, um die Bindung zu erstellen.

  2. Stellen Sie sicher, dass Sie wissen, in welcher Reihenfolge die Bindungselemente gestapelt werden müssen, damit der Stapel ordnungsgemäß funktioniert. So können Sie beispielsweise den Transport am unteren Ende des Stapels hinzufügen.

  3. Erstellen Sie eine Binding-Klasse, die von Binding erbt. Im vorliegenden Fall implementiert die NetHttpBinding auch die ISecurityCapabilities-Schnittstelle, da diese dem Benutzer dieser Bindung erlaubt, die ProtectionLevel zu untersuchen und zu ermitteln, ob seine Bindung Client- und Serverauthentifizierung unterstützt.

  4. Die Bindung macht andere Eigenschaften verfügbar, die dem Benutzer zugänglich gemacht werden müssen, damit er die konstituierenden Bindungselemente konfigurieren kann. Machen Sie zum Beispiel die BypassProxyOnLocal-Eigenschaft zugänglich, damit dieselbe Eigenschaft im zugrunde liegenden HTTP- oder HTTPS-TransportBindingElement konfiguriert werden kann.

  5. Die Reihenfolge, in der die Bindungselemente gestapelt werden müssen, demonstriert das Beispiel in der CreateBindingElements-Methode. So wird zum Beispiel zuerst der Encoder und dann der Transport hinzugefügt, da sich der Transport am unteren Ende des Bindungsstapels befinden muss.

  6. Zum Schluss wird die ApplyConfiguration-Methode implementiert, damit die NetHttpBinding mit der Konfiguration aufgefüllt werden kann. Tatsächlich sind noch verschiedene weitere Klassen erforderlich, damit Ihre Bindung aus einer Konfigurationsdatei konfiguriert werden kann. Sie können glücklicherweise das Tool ConfigurationCodeGenerator verwenden, um diese Klassen für sich zu erstellen. Das Tool ConfigurationCodeGenerator ist auch als WCF-Beispiel verfügbar.

Der NetHttpBinding-Beispieldienst

Der Beispieldienst, der die NetHttpBinding verwendet, befindet sich im Dienstunterverzeichnis. Die Bindung, die zum Konfigurieren des Endpunkts verwendet wird, ist die NetHttpBinding. Der Beispieldienst wird mithilfe einer Main-Methode selbst gehostet, kann jedoch auch in IIS (Internet Information Services, Internetinformationsdienste) gehostet werden.

Der NetHttpBinding-Beispielclient

Auch der Client konfiguriert seine Bindung an die NetHttpBinding, um eine Verbindung mit dem Dienst herzustellen. Der Client zeigt, dass er die Bindung im Code oder in der Konfiguration konfigurieren kann. Der Umstand, dass er die NetHttpBinding über die Konfiguration konfigurieren kann, wird durch die Klassen ermöglicht, die er hinzugefügt hat, um die Bindung für die Konfiguration zugänglich zu machen. Wie schon erwähnt, kann das Tool ConfigurationCodeGenerator Ihnen helfen, diese Klassen zu generieren.

So richten Sie das Beispiel ein und erstellen es

  1. Installieren Sie ASP.NET 4.0 mithilfe des folgenden Befehls.

    %windir%\Microsoft.NET\Framework\v4.0.XXXXX\aspnet_regiis.exe /i /enable
    
  2. Vergewissern Sie sich, dass Sie Einmaliges Setupverfahren für Windows Communication Foundation-Beispiele ausgeführt haben.

  3. Folgen Sie den unter Erstellen der Windows Communication Foundation-Beispiele aufgeführten Anweisungen, um die Projektmappe zu erstellen.

  4. Stellen Sie sicher, dass der Pfad den Ordner enthält, in dem sich Makecert.exe befindet.

  5. Führen Sie auf dem Computer, auf dem der Server ausgeführt werden soll, die Datei Setup.bat aus dem Beispielinstallationsordner aus, um das Serverzertifikat und dessen vom Server benötigtes Herausgeberzertifikat zu erstellen.

  6. Konfigurieren Sie auf demselben Computer das Serverzertifikat mit HTTP.SYS gemäß der Anleitung in der Begriffsdokumentation unter Konfigurieren von HTTP und HTTPS.

So führen Sie das Beispiel auf demselben Computer aus

  1. Starten Sie Service.exe aus dem Ordner service\bin. Im Dienstkonsolenfenster wird Dienstaktivität angezeigt.

  2. Starten Sie Client.exe aus dem Ordner \client\bin. In der Clientkonsolenanwendung wird Clientaktivität angezeigt.

  3. Wenn Sie mit dem Beispiel fertig sind, führen Sie die Datei Cleanup.bat aus, um die Zertifikate zu entfernen.

So führen Sie das Beispiel computerübergreifend aus

  1. Starten Sie "Service.exe" aus dem Ordner "service\bin". Im Dienstkonsolenfenster wird die Dienstaktivität angezeigt.

  2. Da der Server selbst gehostet ist, müssen Sie in der App.conf-Datei des Clients eine Identität angeben, wenn Sie den Client und den Server als Domänenbenutzer ausführen:

         <client>
           <endpoint
              name="EchoServer"
              address=
              https://localhost:8000/TestService/BinaryEncoderOverHTTP
              binding=
              "netHttpBinding" bindingConfiguration="netHttpBinding"
              contract=
              "Microsoft.ServiceModel.Samples.Client.IEchoService" >
              <identity>
                 <userPrincipalName value="user_name@service_domain"/>
              </identity>
           </endpoint>
         </client>
    
  3. Starten Sie Client.exe aus \client\bin. Übergeben Sie die im Dienstfenster angezeigte HTTPS-URL als Befehlszeilenparameter. In der Clientkonsolenanwendung wird Clientaktivität angezeigt.

  4. Wenn Sie mit dem Beispiel fertig sind, führen Sie die Datei Cleanup.bat aus, um die Zertifikate zu entfernen.