Gerenciando serviços WCF RIA Services com o Windows Server AppFabric

Olá pessoal,

Esta semana estava conversando com o Waldemir Cambiucci sobre a possibilidade do Windows Server AppFabric conseguir gerenciar serviços WCF RIA Services. A boa notícia é que é possível sim, a má notícia é que isso não ocorre por padrão.

Para fazer o Windows Server AppFabric identificar os WCF RIA Services expostos, é necessário fazer uma pequena alteração no arquivo web.config adicionando Service Activations para cada Domain Service exposto, um exemplo está abaixo:

 <system.serviceModel>
  <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true">
    <serviceActivations>
      <add service="BusinessApplication1.Web.Services.DomainService1"
            factory="System.ServiceModel.DomainServices.Hosting.DomainServiceHostFactory, System.ServiceModel.DomainServices.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
            relativeAddress="~/Services/BusinessApplication1-Web-Services-DomainService1.svc" />
    </serviceActivations>
  </serviceHostingEnvironment>
</system.serviceModel>

Note que o endereço do serviço é composto pelo endereço da classe, incluindo o seu Namespace, substituindo “.” por “-“.

O passo acima foi feito porque o arquivo .svc para o Domain Service não existe fisicamente, ele é criado pelo runtime do WCF RIA Services quando o serviço é chamado. Devido à isso o Windows Server AppFabric não tem como identificar quais são os serviços expostos para gerenciar. Ao adicionarmos um Service Activation, o Windows Server AppFabric consegue identificar que o Domain Service existe antes mesmo de alguma chamada ser realizada para ele.

Segue abaixo um print do Domain Service configurado acima sendo reconhecido pela console de gerenciamento do Windows Server AppFabric.

image