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.

Como vimos neste artigo, para disponibilizarmos o serviço para que ele possa ser consumido via REST, precisamos utilizar a classe WebServiceHost 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 e já 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.

Anúncios

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s