O objetivo Create and configure a WCF service on Windows Azure (finalmente sobre Azure) fala principalmente sobre o Azure Service Bus, serviço que permite que você exponha seu serviço WCF (ou qualquer outro) hospedado no seu próprio datacenter. Isso evita os problemas de instalação e configuração de deixar tudo on premises e te dá as vantagens que o Azure pode oferecer. Vamos lá?
Criando E Configurando Bindings
Apenas revisando, um serviço WCF basicamente precisa do ABC (address, binding e contract). Para fazer o deploy de um serviço WCF no Azure em uma Web Role ou Web Site você não precisa fazer nenhuma modificação no código ou nas configurações.
Usando a feature de relay do Azure Service Bus, você pode configurar alguns bindings adicionais no seu projeto adicionando o pacote NuGet Windows Azure Service Bus.
Considere o código a seguir, assumindo que ISecretService e SecretService formam o contrato e a implementação de um serviço:
Nesse exemplo, o serviço está exposto em dois endpoints, um interno (com NetTcpBinding) e um externo, usando a feature de relay do Azure Service Bus (com NetTcpRelayBinding). Ao fechar a aplicação (sh.Close()), o endpoint é removido do Azure.
Você pode configurar também o endpoint no Azure pelo arquivo de configuração:
Nos dois exemplos o binding NetTcpRelayBinding é usado, mas há outros disponíveis.
Tanto por código ou arquivo de configuração, você deve setar o nome do serviço e a Default Key.
Outro ponto interessante é que o Azure Service Bus não requer nenhuma configuração no seu servidor on premise. Normalmente a comunicação é feita por TCP, mas se as portas não estiverem disponíveis, o relay pode usar as portas HTTP ou HTTPS.
Criando Um Azure Service Bus
Para criar um Azure Service Bus, basta ir no portal do Azure, selecionar a criação de um Azure Service Bus, configurar um namespace e selecionar uma região.
O portal vai informar a connection string de conexão, que contém o nome do serviço e a Default Key:
Endpoint=sb://wcfonazure.servicebus.windows.net/;SharedSecretIssuer=owner;SharedSecretValue=D1Kmb83CCLrAtz4du9vb3xn99DaM2dH4jQqSec98if4=
Integrando Com O Azure Service Bus Relay
Após criar um novo service bus no Azure e hospedar um serviço WCF, você pode criar um client para se comunicar com seu serviço on premise pelo Azure.
É necessário ter o namespace especificado, o nome do serviço e a Default Key. O código a seguir mostra como o consumo pode ser feito via ChannelFactory:
O método CreateSharedSecretTokenProvider se autentica no service bus pelo owner e a key, mas há outros mecanismos de autenticação como SAML ou SimpleWebToken.
Isso é tudo 🙂
O próximo post será sobre o objetivo 3.8, Implement messaging patterns.
Até lá!