Prerequisitos:
- Tener creado un service bus en Windows Azure y conocer las credenciales de autenticación a este bus de servicio, nuestro bus se llama sbtestrelay:
2. Luego seleccionar CONNECTION INFORMATION del menú inferior para obtener las credenciales de autenticación al bus de servicios creado:
3. Copiar en un block de notas el default issuer y el Default Key ya que de aquí en adelante necesitaremos de estas credenciales.
En la Solución de Visual Studio del Servicio:
4. Para exponer un servicio en el bus de servicio de Windows Azure se requiere incluir a nuestra solución de visual studio, el paquete con el que trabaja Windows Azure Service Bus:
4.1. Para instalar este paquete puede seguir los pasos de la siguiente página:
http://www.nuget.org/packages/WindowsAzure.ServiceBus/
Una vez adicionado este paquete al proyecto, en el archivo de configuración debe aparecer un tag de extensiones como la siguiente:
<!– In this extension section we are introducing all known service bus extensions. User can remove the ones they don’t need. –>
<behaviorExtensions>
<addname=“connectionStatusBehavior“type=“Microsoft.ServiceBus.Configuration.ConnectionStatusElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35“ />
<addname=“transportClientEndpointBehavior“type=“Microsoft.ServiceBus.Configuration.TransportClientEndpointBehaviorElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35“ />
<addname=“serviceRegistrySettings“type=“Microsoft.ServiceBus.Configuration.ServiceRegistrySettingsElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35“ />
</behaviorExtensions>
<bindingElementExtensions>
<addname=“netMessagingTransport“type=“Microsoft.ServiceBus.Messaging.Configuration.NetMessagingTransportExtensionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35“ />
<addname=“tcpRelayTransport“type=“Microsoft.ServiceBus.Configuration.TcpRelayTransportElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35“ />
<addname=“httpRelayTransport“type=“Microsoft.ServiceBus.Configuration.HttpRelayTransportElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35“ />
<addname=“httpsRelayTransport“type=“Microsoft.ServiceBus.Configuration.HttpsRelayTransportElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35“ />
<addname=“onewayRelayTransport“type=“Microsoft.ServiceBus.Configuration.RelayedOnewayTransportElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35“ />
</bindingElementExtensions>
<bindingExtensions>
<addname=“basicHttpRelayBinding“type=“Microsoft.ServiceBus.Configuration.BasicHttpRelayBindingCollectionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35“ />
<addname=“webHttpRelayBinding“type=“Microsoft.ServiceBus.Configuration.WebHttpRelayBindingCollectionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35“ />
<addname=“ws2007HttpRelayBinding“type=“Microsoft.ServiceBus.Configuration.WS2007HttpRelayBindingCollectionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35“ />
<addname=“netTcpRelayBinding“type=“Microsoft.ServiceBus.Configuration.NetTcpRelayBindingCollectionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35“ />
<addname=“netOnewayRelayBinding“type=“Microsoft.ServiceBus.Configuration.NetOnewayRelayBindingCollectionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35“ />
<addname=“netEventRelayBinding“type=“Microsoft.ServiceBus.Configuration.NetEventRelayBindingCollectionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35“ />
<addname=“netMessagingBinding“type=“Microsoft.ServiceBus.Messaging.Configuration.NetMessagingBindingCollectionElement, Microsoft.ServiceBus, Culture=neutral, PublicKeyToken=31bf3856ad364e35“ />
</bindingExtensions>
</extensions>
Configurar el web Config del Servicio
5. Es necesario realizar la siguiente configuración en el web config del servicio:
5.1. Ubicar los tags de Bindings <bindings></bindings> y dentro de estos tags incluir el siguiente binding:
<bindingname=“NombreBinding“>
<securitymode=“None“relayClientAuthenticationType=“None“ />
</binding> </basicHttpRelayBinding>
</bindings>
Donde,
<NombreBinding>. Es el nombre que usted le quiere asignar al binding.
Para nuestro binding de ejemplo, tendriamos lo siguiente:
<bindingname=“customBinding“>
<securitymode=“None“relayClientAuthenticationType=“None“ />
</binding>
</basicHttpRelayBinding>
5.2. Dentro de los tags del servicio correspondiente <service name=”NombreServicio” behaviorConfiguration=”ServiceBehaviour”> </service> , incluir el siguiente endpoint:
contract=“Namespace.InterfazDelServicio“
binding=“TipoBinding“
bindingConfiguration=“NombreBindingConfiguration“
behaviorConfiguration=“NombreBehaviorConfigurationEndpoint“
address=“http://NamespaceServiceBus.servicebus.windows.net/NombreServicioenRelay/“ />
Donde:
<NombreEndpoint>. Es el nombre con el cual se identifica el servicio.
<Namespace.InterfazDelServicio>. Nombre del contrato del servicio
<TipoBinding>. El tipo de binding que se quiere implementar. Para este ejemplo usaremos basicHttpRelayBinding
<NombreBindingConfiguration>. Es el nombre que se le asigno al binding en el punto anterior (5.1)
<NombreBehaviorConfigurationEndpoint>. Es el nombre del Behavior que se asigno. Para este ejemplo usaremos sharedSecretClientCredentials
<NamespaceServiceBus>. Es el nombre del namespace del service bus, creado en el punto 1 de los prerrequisitos que para nuestro caso sería sbtestrelay.
<NombreServicioenRelay>. Nombre con el cual se va identificar el servicio expuesto en relay, para este ejemplo sería ServicioPruebasRelay.
Finalmente para este ejemplo el endpoint qudaría de la siguiente manera:
<endpointname=“BasicHttpRelayBinding“
contract=“TestWCF.IWCFServiceTest“
binding=“basicHttpRelayBinding“
bindingConfiguration=“customBinding“
behaviorConfiguration=“sharedSecretClientCredentials“
address=“http://sbtestrelay.servicebus.windows.net/ServicioPruebasRelay/“ />
</service>
Con la inclusión de este endpoint se expondrá nuestro servicio en el relay del bus de Servicios.
5.3. Dentro de los tags <endpointBehaviors> </endpointBehaviors> incluir las siguientes líneas de código.
<transportClientEndpointBehavior>
<tokenProvider>
<sharedSecretissuerName=“NombreUsuariosb“issuerSecret=“Clavesb“ />
</tokenProvider>
</transportClientEndpointBehavior>
</behavior>
Donde:
<NombreBehaviorEndpoint>. Nombre del behavior para este ejemplo usaremos sharedSecretClientCredentials
<NombreUsuariosb>. Usuario (Default Issuer) del service bus obtenido en el punto 3 de los prerrequisitos. Para nuestro caso sería owner
<Clavesb>. Clave (Default key ) del services bus obtenido en el punto 3 de los prerrequisitos. Para nuestro caso seria XXXXXXXXXXXXXXXXXXXXXXXXXXXXX.
Con este paso lo que se pretende es autenticación frente al bus de Servicios de azure para poder exponer nuestro servicio en el Relay.
Nuestro behavior quedaria de la siguiente manera:
<transportClientEndpointBehavior>
<tokenProvider>
<sharedSecretissuerName=“owner“issuerSecret=“XXXXXXXXXXXXXXXXXXXXXXXX“ />
</tokenProvider>
</transportClientEndpointBehavior>
</behavior>
Y asi de esta manera nuestro servicio quedará expuesto en el bus de servicio de Windows Azure
Verificar si el servicio está expuesto en el Relay.
Cuando el servicio esta ejecutándose en el IIS automanticamente en Windows Azure en el ítem service Bus Aparecerá el service bus creado en el punto 1 (sbtestrelay) y al seleccionar este bus de servicio se desplegará un menú en el panel derecho en la parte superior que contiene:
All, Queques, Topics, Relays, Notifications, Configure
Seleccionar el item Relays y allí aparecerá nuestro servicio (ServicioPruebasRelay) expuesto en el Relay del Bus de servicio, como lo muestra la siguiente pantalla: