Desenvolvimento - WCF

Habilitando REST em projetos WCF

Quando criamos projetos através das templates WCF Service Application ou WCF Service, por padrão, o serviço será disponibilizado através do binding wsHttpBinding e utilizando o objeto ServiceHost como sendo o gerenciador da instancia do serviço.

por Israel Aéce



Quando criamos projetos através das templates WCF Service Application ou WCF Service, por padrão, o serviçoserá disponibilizado através do binding wsHttpBinding e utilizando o objeto ServiceHost como sendo o gerenciador da instancia do serviço.

Como vimos neste artigo, para disponibilizarmos o serviço paraque ele possa serconsumido via REST, precisamos utilizara classeWebServiceHost ou invés do ServiceHost e também utilizar o binding webHttpBinding. Para realizar essas mudanças nessas templates, primeiramente precisamos definir a Factory resposável pela criação do host. Para configurar isso, recorremos ao atributo Factory da diretiva @ServiceHost, que encontra-se no markup do serviço, ou seja, no arquivo *.svc. Quando omitida (que é o padrão), ela assume o tipo System.ServiceModel.Activation.ServiceHostFactory que, por sua vez, retornará instancias da classe ServiceHost. Como estamos trabalhando com REST ejá vimos que devemos utilizar o WebServiceHost, então devemos alterar o valor do atributo Factory para System.ServiceModel.Activation.WebServiceHostFactory. Abaixo a configuração na íntegra:

<%@ ServiceHost
Language="C#"
Debug="true"
Service="WcfService1.Service1"
CodeBehind="Service1.svc.cs"
Factory="System.ServiceModel.Activation.WebServiceHostFactory" %>

Além disso, atente-se para trocar o valor do atributo binding do elemento endpoint para webHttpBinding, que está definido no arquivo Web.config. As classes necessárias para habilitar o REST estão contidas no Assembly System.ServiceModel.Web.dll.
Israel Aéce

Israel Aéce - Especialista em tecnologias de desenvolvimento Microsoft, atua como desenvolvedor de aplicações para o mercado financeiro utilizando a plataforma .NET. Como instrutor Microsoft, leciona sobre o desenvolvimento de aplicações .NET. É palestrante em diversos eventos Microsoft no Brasil e autor de diversos artigos que podem ser lidos a partir de seu site http://www.israelaece.com/. Possui as seguintes credenciais: MVP (Connected System Developer), MCP, MCAD, MCTS (Web, Windows, Distributed, ASP.NET 3.5, ADO.NET 3.5, Windows Forms 3.5 e WCF), MCPD (Web, Windows, Enterprise, ASP.NET 3.5 e Windows 3.5) e MCT.