Compartir a través de


NetHttpBinding

El ejemplo de NetHttpBinding muestra cómo implementar un enlace que apila HttpTransportBindingElement o HttpsTransportBindingElement encima de BinaryMessageEncodingBindingElement. Los enlaces definidos por el sistema basados en HTTP que se distribuyen con Windows Communication Foundation (WCF), como HTTP de nivel BasicHttpBinding o WsHttpBinding encima de TextMessageEncodingBindingElement para permitir principalmente el envío y la recepción de mensajes como texto/xml que a su vez permite la interoperabilidad. Los enlaces definidos por el sistema basados en TCP y NamedPipe que se distribuyen con Windows Communication Foundation (WCF), como NetTcpBinding o NetNamedPipeBinding escriben y utilizan mensajes como binarios. El formato binario, aunque no interoperable, es más eficaz y se ajusta para el rendimiento.

Aa395198.note(es-es,VS.100).gifNota:
El procedimiento de instalación y las instrucciones de compilación de este ejemplo se encuentran al final de este tema.

Aa395198.Important(es-es,VS.100).gif Nota:
Puede que los ejemplos ya estén instalados en su equipo. Compruebe el siguiente directorio (valor predeterminado) antes de continuar.

<InstallDrive>:\WF_WCF_Samples

Si no existe este directorio, vaya a la página de ejemplos de Windows Communication Foundation (WCF) y Windows Workflow Foundation (WF) Samples para .NET Framework 4 para descargar todos los ejemplos de WF y Windows Communication Foundation (WCF). Este ejemplo se encuentra en el siguiente directorio.

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

El ejemplo muestra cómo puede utilizar la arquitectura de WCF para combinar elementos de enlace que desee en su pila de canales a fin de configurar sus enlaces de la manera que quiera. Los pasos para crear un enlace personalizado son los siguientes:

  1. Decida cuál de los elementos de enlace desea apilar para crear su enlace.

  2. Asegúrese de que conoce el orden en el que los elementos de enlace deben apilarse para que la pila funcione correctamente. Por ejemplo, desea agregar el transporte en la parte inferior de la pila.

  3. Cree su clase Binding, que hereda desde Binding. En este caso en concreto, NetHttpBinding implementa también la interfaz ISecurityCapabilities porque permite que el usuario de este enlace inspeccione el ProtectionLevel y si el enlace admite la autenticación del cliente y del servidor.

  4. El enlace expone al usuario otras propiedades que se deben emerger para permitirles configurar los elementos de enlace constitutivos. Por ejemplo, emergemos la propiedad BypassProxyOnLocal de manera que pueda configurar la misma propiedad en el TransportBindingElement HTTP o HTTPS subyacente.

  5. En el método CreateBindingElements, el ejemplo muestra el orden en el que se deben apilar los elementos de enlace. Por ejemplo, agregue primero el codificador y después el transporte porque este debe estar en la parte inferior de la pila de enlaces.

  6. Finalmente, implementamos el método ApplyConfiguration para permitir que se rellene NetHttpBinding utilizando la configuración. De hecho, hay varias clases que son necesarias para permitir que el enlace se configure a partir de un archivo de configuración. Afortunadamente, puede utilizar la herramienta ConfigurationCodeGenerator para crear estas clases para usted. La herramienta ConfigurationCodeGenerator también está disponible como un ejemplo de WCF.

Servicio de ejemplo NetHttpBinding

El servicio del ejemplo que utiliza NetHttpBinding se encuentra en el subdirectorio del servicio. El enlace utilizado para configurar el extremo es NetHttpBinding. El servicio del ejemplo se autoaloja mediante un método Main aunque podría hospedarse en Internet Information Services (IIS) también.

Cliente de prueba de NetHttpBinding

El cliente también configura su enlace como NetHttpBinding para conectar con el servicio. El cliente muestra que puede configurar el enlace en el código o la configuración. El hecho de que pueda configurar NetHttpBinding a través de la configuración es posible mediante las clases añadidas para exponer el enlace en la configuración. Tal y como se ha mencionado previamente, la herramienta ConfigurationCodeGenerator puede ayudarle a generar estas clases.

Para configurar y compilar el ejemplo

  1. Instale ASP.NET 4.0 mediante el siguiente comando.

    %windir%\Microsoft.NET\Framework\v4.0.XXXXX\aspnet_regiis.exe /i /enable
    
  2. Asegúrese de realizar los Procedimiento de instalación única para los ejemplos de Windows Communication Foundation.

  3. Para compilar la solución, siga las instrucciones de Compilación de los ejemplos de Windows Communication Foundation.

  4. Asegúrese de que la ruta de acceso incluye la carpeta donde se encuentra Makecert.exe.

  5. En el equipo donde se está ejecutando el servidor, ejecute Setup.bat desde la carpeta de instalación del ejemplo para crear el certificado de servidor y su certificado de emisor exigido por el servidor.

  6. En el mismo equipo del servidor, configure el certificado de servidor con HTTP.SYS seguida de la instrucción en el documento conceptual en Configuración de HTTP y HTTPS.

Para ejecutar el ejemplo en el mismo equipo

  1. Inicie Service.exe desde \service\bin. La actividad del servicio se muestra en la ventana de la consola del servicio.

  2. Inicie Client.exe desde \client\bin. La actividad del cliente se muestra en la aplicación de consola del cliente.

  3. Ejecute Cleanup.bat para quitar los certificados cuando haya finalizado con el ejemplo.

Para ejecutar el ejemplo en los equipos

  1. Inicie Service.exe desde \service\bin. La actividad del servicio se muestra en la ventana de la consola del servicio.

  2. Dado que el servidor se autoaloja, debe especificar una identidad en el archivo App.config del cliente si ejecuta el cliente y el servidor como usuarios del dominio:

         <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. Inicie Client.exe desde \client\bin: pase la URL de HTTPS mostrada en la ventana de servicio como un parámetro de línea de comandos. La actividad del cliente se muestra en la aplicación de consola del cliente.

  4. Ejecute Cleanup.bat para quitar los certificados cuando haya finalizado con el ejemplo.