Hospedando um serviço WCF no WAS - Windows Process Activation Services
Dando continuidade à nossa série de posts sobre serviços WCF, chegamos ao último post sobre o tópico de hospedagem. Hoje vamos falar sobre como hospedar serviços WCF no WAS - Windows Process Activation Services.
O WAS é um modelo de hospedagem de serviços WCF e está disponível à partir do Windows Vista e Windows Server 2008. Ele generaliza o modelo de funcionamento do IIS removendo a dependência do HTTP e permitindo o uso de outros protocolos, como TCP e MSMQ. Como utiliza o mesmo modelo de funcionamento do IIS, herda suas características, como, escalabilidade e gerenciamento de memória, permitindo a hospedagem de vários serviços e suportando alta carga de requisições.
O primeiro passo é instalar o WAS. Isso é feito habilitando a opção Windows Process Activation Service em Turn Windows Features on or off do painel de controle, o que pode ser verificado abaixo.
Depois de instalar o WAS é necessário hospedar o serviço no IIS, para isto basta seguir os passos do post Hospedando um serviço WCF no IIS.
O próximo passo é habilitar os protocolos de funcionamento, o que é feito com o utilitário de linha de comando AppCmd.exe, que por padrão fica no diretório c:\windows\system32\inetsrv.
Primeiro deve ser habilitado o protocolo no Web site. No exemplo abaixo estou habilitando o funcionamento do protocolo Tcp no Default Web Site.
appcmd.exe set site "Default Web Site" -+bindings.[protocol='net.tcp',bindingInformation='9090:*']
Em seguida deve-se habilitar o protocolo no Application que o serviço está instalado:
appcmd.exe set app "Default Web Site/WebApplication" /enabledProtocols:http,net.tcp
Agora que temos o serviço hospedado e o protocolo tcp habilitado, precisamos agora configurar os seus endpoints. Eles são do tipo netTcpBinding e mexTcpBinding, onde o primeiro é utilizado para comunicação com protocolo tcp e o outro para consulta do metadados. O seu arquivo web.config deve ficar assim:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.web>
<compilation debug="true" />
</system.web>
<system.serviceModel>
<services>
<service behaviorConfiguration="ServicoWCF.Service1Behavior"
name="ServicoWCF.CalcService">
<endpoint address="net.tcp://localhost:9090/WebApplication/CalcService.svc"
binding="netTcpBinding" contract="ServicoWCF.ICalcService" />
<endpoint address="net.tcp://localhost:9090/WebApplication/CalcService.svc/mex"
binding="mexTcpBinding" bindingConfiguration="" contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="ServicoWCF.Service1Behavior">
<serviceMetadata httpGetEnabled="True"/>
<serviceDebug includeExceptionDetailInFaults="False" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
Com tudo configurado podemos testar o serviço, para isso devemos executar o WCF Test Client e apontar para o endereço net.tcp://localhost:9090/WebApplication/CalcService.svc, conforme pode ser observado abaixo:
Nos próximos posts colocarei o screencast com a demo. Lembrem-se de deixar comentário e até a próxima pessoal!
Comments
Anonymous
May 06, 2009
PingBack from http://asp-net-hosting.simplynetdev.com/hospedando-um-servico-wcf-no-was-windows-process-activation-services/Anonymous
May 11, 2009
Dando continuidade à nossa série de screencasts sobre WCF, segue o do post Hospedando um serviço WCF