Exportar (0) Imprimir
Expandir todo

Procedimiento: Hospedar un servicio en Windows que obtenga acceso al Service Bus

La creación de una aplicación de servicio que se ejecuta en Windows Azure sigue los patrones de programación tanto para una aplicación de Windows Azure como para una tradicional de Service Bus de Windows Azure: debe definir e implementar el contrato de servicio, configurar el extremo, crear los credenciales y, posteriormente, iniciar el host. Una vez que finalice, puede detener el host. No obstante, tenga en cuenta que hay dos problemas exclusivos al crear un servicio en Windows Azure:

  • Windows Azure no almacena información de configuración de Service Bus y Access Control en el archivo Machine.config

    Dado que Windows Azure no instala el SDK de Windows Azure, el archivo Machine.config en un equipo Windows Azure no posee información acerca de enlaces o extremos de Service Bus. Como se ha indicado anteriormente, las restricciones de seguridad de Windows Azure le impiden que modifique el archivo Machine.config de Windows Azure. En consecuencia, hay dos opciones para que la información de configuración de Service Bus y Access Control esté disponible en sus aplicaciones del Service Bus.

    1. La solución recomendada es usar las API de Service Bus para configurar su aplicación mediante programación. Por ejemplo, aunque podría almacenar información de nombre y contraseña en el archivo App.config, podría definir mediante programación cualquier configuración de enlace de retransmisión. Para obtener más información sobre definir la configuración mediante programación, consulte Configuración de un servicio de WCF para registrar con el Service Bus.

    2. La segunda solución es modificar manualmente el archivo App.config para su aplicación añadiendo toda la información relevante. Una vez que lo haga, puede usar el archivo App.config para configurar enlaces y extremos. Para ello, puede ver el archivo Machine.config en un equipo que tenga instalado el SDK de Windows Azure, buscar toda la información de configuración relacionada con Windows Azure y copiarla en el archivo App.config de su aplicación. Aunque esto le permitirá usar el archivo App.config en el servicio host, será difícil probar el código: es posible que tenga problemas de duplicación con el archivo Machine.config del equipo de prueba local, que ya deberá tener instalado el SDK de Windows Azure. En consecuencia, recomendamos que use la opción anterior y defina todo mediante programación.

  • El Service Bus Service Bus debe tener autorización de Plena confianza para su ejecución en Windows Azure

    Al igual que con todas las demás aplicaciones de Service Bus, deberá asegurarse de que el sistema operativo funcione con autorización de Plena confianza. Esto puede definirse en el archivo ServiceDefinition.csdef de su proyecto de Windows Azure, con el siguiente procedimiento.

Para empaquetar el ensamblado del Service Bus con su aplicación

  1. En el Explorador de soluciones, debajo del nodo WorkerRole o WebRole (dependiendo de dónde tenga localizado el código), añada el ensamblado Microsoft.ServiceBus.dll a su proyecto de Windows Azure como referencia.

    Este paso es el proceso estándar para agregar una referencia a un conjunto.

  2. En la carpeta Referencia, haga clic con el botón secundario en Microsoft.ServiceBus. A continuación, haga clic en Propiedades.

  3. En el cuadro de diálogo Propiedades, configure Copia local en True.

    De esta forma se asegurará de que el ensamblado de Microsoft.ServiceBus.dll se copia en la ruta \bin local y estará disponible para su aplicación cuando se ejecute en Windows Azure.

Para configurar la aplicación de Windows Azure en Plena confianza

  1. En el archivo ServiceDefinition.csdef del proyecto, defina el campo enableNativeCodeExecution en "true", como se muestra en el código siguiente. Sustituya "ApplicationNameHere" por el nombre de la aplicación:

    <?xml version="1.0" encoding="utf-8"?>
    <ServiceDefinition name="ApplicationNameHere" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition">
      <WebRole name="WebRole" enableNativeCodeExecution="true">
        <InputEndpoints>
          <!-- Must use port 80 for http and port 443 for https when running in the cloud -->
          <InputEndpoint name="HttpIn" protocol="http" port="80" />
        </InputEndpoints>
      </WebRole>
      <WorkerRole name="WorkerRole" enableNativeCodeExecution="true">
      </WorkerRole>
    </ServiceDefinition>
    
    

Adiciones de comunidad

Mostrar:
© 2014 Microsoft