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éceQuando 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.
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.