Pontos de extremidade SOAP e HTTP
O exemplo SoapAndHttpEndpoints demonstra como implementar um serviço baseado em RPC e expô-lo no formato SOAP e no formato "Plain Old XML" (POX) usando o modelo de programação da Web WCF. Consulte o Exemplo de Serviço HTTP Básico para obter mais detalhes sobre a associação HTTP para o serviço. Este exemplo se concentra nos detalhes que dizem respeito à exposição do mesmo serviço por SOAP e HTTP usando associações diferentes.
Demonstra
Expor um serviço RPC sobre SOAP e HTTP usando WCF.
Debate
Este exemplo consiste em dois componentes: um projeto de aplicativo Web (Service) que contém um serviço WCF e um aplicativo de console (Client) que invoca operações de serviço usando ligações SOAP e HTTP.
O serviço WCF expõe 2 operações –GetData
e PutData
– que ecoam a cadeia de caracteres que foi passada como entrada. As operações de serviço são anotadas com WebGetAttribute e WebInvokeAttribute. Esses atributos controlam a projeção HTTP dessas operações. Além disso, eles são anotados com OperationContractAttribute, o que permite que eles sejam expostos através de ligações SOAP. O método do PutData
serviço lança um WebFaultException, que é enviado de volta por HTTP usando o código de status HTTP e é enviado de volta por SOAP como uma falha SOAP.
O arquivo Web.config configura o serviço WCF com 3 pontos de extremidade:
O ponto de extremidade ~/service.svc/mex que expõe os metadados do serviço para acesso por clientes baseados em SOAP.
O ponto de extremidade ~/service.svc/http que permite que os clientes acessem o serviço usando a associação HTTP.
O ponto de extremidade ~/service.svc/soap que permite que os clientes acessem o serviço usando a ligação SOAP sobre HTTP.
O ponto de extremidade HTTP é configurado com um ponto de <webHttp>
extremidade padrão que foi helpEnabled
definido como true
. Como resultado, o serviço expõe uma página de ajuda baseada em XHTML em ~/service.svc/http/help que os clientes baseados em HTTP podem usar para acessar o serviço.
O projeto cliente demonstra acessar o serviço usando um proxy SOAP (gerado por meio de Adicionar Referência de Serviço) e acessar o serviço usando WebClient.
O exemplo consiste em um serviço hospedado na Web e um aplicativo de console. À medida que o aplicativo de console é executado, o cliente faz solicitações ao serviço e grava as informações pertinentes das respostas na janela do console.
Para executar o exemplo
Abra a solução para o exemplo de pontos de extremidade SOAP e HTTP.
Pressione Ctrl+Shift+B para criar a solução.
Se ainda não estiver aberto, pressione CTRL+W, S para abrir a janela Gerenciador de Soluções .
Na janela Gerenciador de Soluções, clique com o botão direito do mouse no projeto Serviço e coloque o cursor sobre a opção do menu de contexto Depurar para que o menu de contexto Iniciar Nova Instância seja exibido. Clique em Iniciar nova instância. Isso inicia o servidor de desenvolvimento ASP.NET, que hospeda o serviço.
Nas janelas do Gerenciador de Soluções, clique com o botão direito do mouse no projeto Cliente e coloque o cursor sobre a opção do menu de contexto Depurar para que o menu de contexto Iniciar Nova Instância seja exibido. Clique em Iniciar nova instância.
A janela do console do cliente é exibida e fornece o URI do serviço em execução e o URI da página de ajuda HTML para o serviço em execução. A qualquer momento, você pode exibir a página de ajuda HTML digitando o URI da página de ajuda em um navegador.
À medida que o exemplo é executado, o cliente grava o status da atividade atual.
Pressione qualquer tecla para encerrar o aplicativo de console do cliente.
Pressione SHIFT+F5 para parar de depurar o serviço.
Na Área de Notificação do Windows, clique com o botão direito do mouse no ícone do servidor de desenvolvimento ASP.NET e selecione Parar no menu de contexto.