Compartir a través de


Interoperarabilidad con WSE

Download sample

Este ejemplo muestra cómo se puede lograr la interoperabilidad entre las mejoras de un servicio Web (WSE) 3.0 y un cliente o servicio Windows Communication Foundation (WCF).

El ejemplo implementa un enlace personalizado llamado WseHttpBinding. Este enlace le permite utilizar un archivo de directivas WSE 3.0 para configurar un cliente o servicio WCF o reparar y lograr la interoperabilidad con WSE 3.0. WseHttpBinding hace esta función proporcionando una asignación de las propiedades WSE 3.0 en el archivo de directivas a las propiedades en los enlaces WCF. Puede considerar WseHttpBinding como algo similar a un enlace de la norma porque proporciona una vista encogida sobre las propiedades de otros enlaces en la pila, notablemente SecurityBindingElement.

El ejemplo está dividido en dos partes. La primera parte muestra cómo utilizar WseHttpBinding para llamar de un cliente WCF al servicio WCF hospedado por sí mismo. La segunda parte requiere que el WSE 3.0 SDK se instale.

Utilizar WseHttpBinding entre un cliente WCF y un servicio

En el cliente, el método CallWcfService crea una instancia de WseHttpBinding y establece las propiedades para los requisitos de seguridad del cliente:

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

Estos requisitos deben coincidir con los valores establecidos dentro de la función Main del servicio, como se muestra en el código siguiente:

//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();
    ...
}

Para configurar, generar y ejecutar el ejemplo

  1. Asegúrese de que ha realizado Procedimiento de instalación único para ejemplos de Windows Communication Foundation.

  2. Para generar la solución C#, siga las instrucciones de Generación de ejemplos de Windows Communication Foundation.

  3. Para ejecutar el ejemplo en una configuración de equipos única, siga las instrucciones de Ejecución de ejemplos de Windows Communication Foundation.

  4. El servicio en este ejemplo es hospedado por sí mismo. Por consiguiente, asegúrese de que ha ejecutado el archivo Service.exe en el directorio /service/bin antes de ejecutar el cliente.

Utilizar WseHttpBinding para comunicarse con WSE 3.0 servicios

El cliente en este proyecto también se puede utilizar para comunicar con los ejemplos del Tutorial rápido en el WSE 3.0 SDK.

Cuando se haya instalado el WSE 3.0 SDK, puede utilizar la herramienta Svcutil.exe para generar un cliente que se pueda utilizar para comunicar con un WSE 3.0 servicio una vez estado generado el servicio. El ejemplo siguiente muestra cómo hacer esto con el servicio WSE 3.0 que se ejecuta en el equipo local.

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

El archivo Wseproxy.cs está incluido en este proyecto. El nombre de la clase de proxy generado es WSSecurityAnonymousServiceSoapProxy y se proporciona con WseHttpBinding que se ha configurado o bien con propiedades en el código o utilizando un archivo de directivas WSE 3.0 cargado del archivo de configuración de Wse3PolicyCache.config. También está incluido en este proyecto un archivo de configuración de Wse3PolicyCache.config.

Una vez se haya generado correctamente el ejemplo de WSE 3.0 WSSecurityAnonymous, se devuelve una cotización bursátil de manera segura desde el servicio WSE 3.0 cuando se ejecuta el cliente.

Las instrucciones de instalación para WSE 3.0 se detallan al final de este tema.

En el cliente, marque como comentario la llamada a CallWcfService y quite los comentarios del código a CallWseService. Pasar true o false determina si un archivo de directivas se utiliza para configurar WseHttpBinding llamando al método, que utiliza una LoadPolicy(String filename, String policyName)XmlReader para analizar el archivo de directivas WSE 3.0.

Nota

Si tiene WSE 3.0 instalado en el cliente en lugar de utilizar XmlReader para cargar un archivo de directivas usted puede modificar el código para utilizar la clase WSE 3.0 Microsoft.Web.Services3.Design.Policies para cargar la directiva. La ventaja de esto es que la clase Microsoft.Web.Services3.Design.Policies puede analizar todos los formularios válidos de los archivos de directivas WSE 3.0 y, a continuación, proporcionar esto a WseHttpBinding. Con el código que utiliza el tipo XmlReader se puede analizar sólo un conjunto limitado de archivos de directivas.

Para configurar, generar y ejecutar el ejemplo con WSE 3.0

  1. Instale el producto WSE 3.0 de Mejoras de servicios web (WSE) 3.0 para Microsoft .NET.

  2. Lea la guía de ejemplo de Tutorial rápido de WSE 3.0 sobre cómo configurar y ejecutar los ejemplos del WSE. Esto se requiere tanto para instalar los certificados X.509 correctos como para crear un directorio virtual para hospedar el Servicio Web en IIS (Internet Information Server) (IIS). Ejecutar específicamente el archivo Setup.bat en el directorio de instalación predeterminado C:\Program Files\Microsoft WSE\v3 .0\Samples.

  3. Genere el ejemplo de directiva del tutorial rápido WSE 3.0, WSSecurityAnonymous, que se instala de forma predeterminada en el directorio siguiente (Nota: hay sólo un código la versión de WSSecurityAnonymous que también funciona si se desea utilizar esto en su lugar. Si se desea utilizar sólo la versión de sólo código, se debe cambiar la dirección URL del servicio en el cliente a https://localhost/WSSecurityAnonymousCode/WSSecurityAnonymousService.asmx).

  4. Este proyecto WSE 3.0 C:\Program Files\Microsoft WSE\v3.0\Samples\CS\QuickStart\Security\WSSecurityAnonymous\Policy.

  5. El cliente WCF en este ejemplo interoperacional se ha diseñado para interoperar con este ejemplo de Tutorial rápido WSE 3.0.

  6. En la función Main en el archivo Client.cs, quite los comentarios de las llamadas al método CallWseService. También puede desear marcar como comentario la llamada aCallWcfServicepara evitar el llamar al servicioWCF.

  7. Para generar la solución C#, siga las instrucciones de Generación de ejemplos de Windows Communication Foundation.

  8. Para ejecutar el ejemplo en una configuración de equipos única, siga las instrucciones de Ejecución de ejemplos de Windows Communication Foundation.

Para configurar, generar y ejecutar el ejemplo con WSE 3.0 entre equipos

  1. Primero configure un servicio WSE 3.0. Instale el producto WSE 3.0 en el equipo remoto de Mejoras de servicios web (WSE) 3.0 para Microsoft .NET.

  2. Lea la guía de ejemplo de Tutorial rápido de WSE 3.0 sobre cómo configurar y ejecutar los ejemplos del WSE. Esto se requiere tanto para instalar los certificados X.509 correctos como para crear un directorio virtual para hospedar el Servicio Web en IIS (Internet Information Server) (IIS). Ejecutar específicamente el archivo Setup.bat en el directorio de instalación predeterminado C:\Program Files\Microsoft WSE\v3 .0\Samples.

  3. Genere el ejemplo de directiva Tutorial rápido WSE 3.0, WSSecurityAnonymous, que se instala de forma predeterminada en el directorio siguiente.

    Nota

    Hay una versión de código único de WSSecurityAnonymous que también funciona si desea utilizar esto en su lugar.

  4. Este es el proyecto WSE 3.0: C:\Program Files\Microsoft WSE\v3.0\Samples\CS\QuickStart\Security\WSSecurityAnonymous\Policy

  5. Una vez configurado el servidor no se configura el cliente WCF en otro equipo. Con la herramienta MMC, exporte el certificado de WSE2QuickStartServer que se puede buscar en LocalMachine/almacén de certificados personales donde instaló WSE 3.0, exporte a un archivo utilizando Todas las tareas-> la opción del menú contextual. No necesita exportar la clave privada, sólo la clave pública para crear un archivo .CER. Vea el archivo readme.htm en el directorio WSE 3.0 C:\Program Files\Microsoft WSE\v3.0\Samples para obtener detalles sobre cómo utilizar el complemento de administración de certificado de MMC para ver los certificados en un almacén de certificados.

  6. Copie el archivo .CER del equipo del servidor en el equipo cliente e importe el certificado público en el almacén de certificados de CurrentUser/Personas de confianza. Vea el archivo readme.htm en el directorio WSE 3.0 C:\Program Files\Microsoft WSE\v3.0\Samples para obtener detalles sobre cómo utilizar el complemento de administración de certificado de MMC.

    Nota

    Al ejecutar el archivo WSE 3.0 setup.bat que copia el certificado de servidor de WSE2QuickStartServer de un almacén de certificados en otro para usted.

  7. Para ejecutar el ejemplo en la configuración del equipo del cruce, siga las instrucciones en Ejecución de ejemplos de Windows Communication Foundation para el cliente WCF y configure el cliente para utilizar la dirección del servicio WSE 3.0 en lugar del host local. Por ejemplo, en un equipo llamado "mymachine" la dirección es la siguiente de forma predeterminada: http://mymachine/WSSecurityAnonymousPolicy/WSSecurityAnonymousService.asmx

  8. En la función Main en el archivo Client.cs, quite los comentarios de las llamadas al método CallWseService. También puede desear marcar como comentario la llamada aCallWcfServicepara evitar el llamar al servicioWCF.

  9. Para generar la solución C#, siga las instrucciones de Generación de ejemplos de Windows Communication Foundation.

  10. Ejecute el cliente.

Para limpiar después de ejecutar el ejemplo

  • Para quitar los certificados del cliente o del servidor utilice la herramienta MMC. Alternativamente en el servidor puede ejecutar el archivo Cleanup.bat en el directorio C:\Program Files\Microsoft WSE\v3.0\Samples.

Footer image

Copyright © 2007 Microsoft Corporation. Reservados todos los derechos.