Modelo de objeto de programação HTTP Web do WCF
O modelo de programação HTTP WCF WEB permite que os desenvolvedores exponham serviços Web do Windows Communication Foundation (WCF) por meio de solicitações HTTP básicas sem exigir SOAP. O modelo de programação HTTP WCF WEB é construído sobre o modelo de extensibilidade WCF existente. Ele define as seguintes classes:
Modelo de Programação:
Canais e infraestrutura do dispatcher:
Classes de utilitários e pontos de extensibilidade:
AspNetCacheProfileAttribute
O AspNetCacheProfileAttribute, quando aplicado a uma operação de serviço, indica o perfil de cache de saída ASP.NET no arquivo de configuração que deve ser usado para armazenar em cache as respostas da operação no Cache de Saída ASP.NET. Essa propriedade usa apenas um parâmetro, o nome do perfil de cache que especifica as configurações de cache no arquivo de configuração.
WebGetAttribute
O atributo WebGetAttribute é usado para marcar uma operação de serviço como aquela que responde a solicitações HTTP GET. É um comportamento de operação passiva (os métodos IOperationBehavior não fazem nada) que adiciona metadados à descrição da operação. A aplicação de WebGetAttribute não tem efeito, a menos que um comportamento que procure esses metadados na descrição da operação (especificamente, o WebHttpBehavior) seja adicionado à coleção de comportamento do serviço. O atributo WebGetAttribute usa os parâmetros opcionais mostrados na tabela a seguir.
Parâmetro | Descrição |
---|---|
BodyStyle |
Controla se as solicitações e respostas enviadas e recebidas da operação de serviço à qual o atributo é aplicado devem ser agrupadas. |
RequestFormat |
Controla como as mensagens de solicitação são formatadas. |
ResponseFormat |
Controla como as mensagens de resposta são formatadas. |
UriTemplate |
Especifica o modelo de URI que controla quais solicitações HTTP são mapeadas para a operação de serviço à qual o atributo é aplicado. |
WebHttpBinding
A classe WebHttpBinding incorpora suporte para XML, JSON e dados binários brutos usando o WebMessageEncodingBindingElement. É composto por um objeto HttpsTransportBindingElement, HttpTransportBindingElement e WebHttpSecurity. WebHttpBinding foi projetado para ser usado em conjunto com o WebHttpBehavior.
WebInvokeAttribute
O atributo WebInvokeAttribute é semelhante ao WebGetAttribute, mas é usado para marcar uma operação de serviço como aquela que responde a solicitações HTTP diferentes de GET. É um comportamento de operação passiva (os métodos IOperationBehavior não fazem nada) que adiciona metadados à descrição da operação. A aplicação de WebInvokeAttribute não tem efeito, a menos que um comportamento que procure esses metadados na descrição da operação (especificamente, o WebHttpBehavior) seja adicionado à coleção de comportamento do serviço.
O atributo WebInvokeAttribute usa os parâmetros opcionais mostrados na tabela a seguir.
Parâmetro | Descrição |
---|---|
BodyStyle |
Controla se as solicitações e respostas enviadas e recebidas da operação de serviço à qual o atributo é aplicado devem ser agrupadas. |
Method |
Especifica o método HTTP para o qual a operação de serviço é mapeada. |
RequestFormat |
Controla como as mensagens de solicitação são formatadas. |
ResponseFormat |
Controla como as mensagens de resposta são formatadas. |
UriTemplate |
Especifica o modelo de URI que controla quais solicitações GET são mapeadas para a operação de serviço à qual o atributo é aplicado. |
UriTemplate
A classe UriTemplate permite definir um conjunto de URIs estruturalmente semelhantes. Os modelos são compostos de duas partes, um caminho e uma consulta. Um caminho consiste em uma série de segmentos delimitados por uma barra (/). Cada segmento pode ter um valor literal, um valor variável (escrito entre chaves [{ }], restrito para corresponder ao conteúdo de exatamente um segmento) ou um curinga (escrito como um asterisco [*], que corresponde ao "resto do o caminho"), que deve aparecer no final do caminho. A expressão de consulta pode ser omitida inteiramente. Se presente, especifica uma série não ordenada de pares nome/valor. Os elementos da expressão de consulta podem ser pares literais (?x=2) ou pares de variáveis (?x={valor}). Valores não pareados não são permitidos. UriTemplate é usado internamente pelo WCF WEB HTTP Programming Model para mapear URIs ou grupos de URIs específicos para operações de serviço.
UriTemplateTable
A classe UriTemplateTable representa um conjunto associativo de objetos UriTemplate vinculados a um objeto de escolha do desenvolvedor. Ele permite que você faça a correspondência de URIs (Uniform Resource Identifiers) candidatos com os modelos no conjunto e recupere os dados associados aos modelos correspondentes. UriTemplateTable é usado internamente pelo WCF WEB HTTP Programming Model para mapear URIs ou grupos de URIs específicos para operações de serviço.
WebServiceHost
WebServiceHost estende ServiceHost para facilitar a hospedagem de um serviço de estilo da Web não SOAP. Se WebServiceHost não encontrar pontos de extremidade na descrição do serviço, ele criará automaticamente um ponto de extremidade padrão no endereço base do serviço. Ao criar um terminal HTTP padrão, o WebServiceHost também desativa a página de Ajuda HTTP e a funcionalidade GET da Web Services Description Language (WSDL) para que o terminal de metadados não interfira no terminal HTTP padrão. WebServiceHost também garante que todos os pontos de extremidade que usam WebHttpBinding tenham o WebHttpBehavior obrigatório anexado. Por fim, WebServiceHost configura automaticamente a associação do ponto de extremidade para funcionar com as configurações de segurança do Internet Information Services (IIS) associadas quando usado em um diretório virtual seguro.
WebServiceHostFactory
A classe WebServiceHostFactory é usada para criar dinamicamente um WebServiceHost quando um serviço é hospedado no Internet Information Services (IIS) ou no Windows Process Activation Service (WAS). Ao contrário de um serviço auto-hospedado em que o aplicativo de hospedagem instancia o WebServiceHost, os serviços hospedados no IIS ou WAS usam essa classe para criar o WebServiceHost para o serviço. O método CreateServiceHost(Type, Uri[]) é chamado quando uma solicitação de entrada para o serviço é recebida.
WebHttpBehavior
A classe WebHttpBehavior fornece os formatadores necessários, seletores de operação e assim por diante, necessários para suporte de serviço estilo Web na camada do Modelo de Serviço. Isso é implementado como um comportamento de terminal (usado em conjunto com o WebHttpBinding) e permite que formatadores e seletores de operação sejam especificados para cada terminal, o que permite que a mesma implementação de serviço exponha terminais SOAP e POX.
Estendendo WebHttpBehavior
WebHttpBehavior é extensível usando vários métodos virtuais: GetOperationSelector(ServiceEndpoint), GetReplyClientFormatter(OperationDescription, ServiceEndpoint), GetRequestClientFormatter(OperationDescription, ServiceEndpoint), GetReplyDispatchFormatter(OperationDescription, ServiceEndpoint) e GetRequestDispatchFormatter(OperationDescription, ServiceEndpoint). Os desenvolvedores podem derivar uma classe de WebHttpBehavior e substituir esses métodos para personalizar o comportamento padrão.
O WebScriptEnablingBehavior é um exemplo de extensão de WebHttpBehavior. WebScriptEnablingBehavior permite que os pontos de extremidade do Windows Communication Foundation (WCF) recebam solicitações HTTP de um cliente ASP.NET AJAX baseado em navegador. O Serviço AJAX usando HTTP POST é um exemplo de uso desse ponto de extensibilidade.
Aviso
Ao usar o WebScriptEnablingBehavior, UriTemplate não são suportados nos atributos WebGetAttribute ou WebInvokeAttribute.
WebHttpDispatchOperationSelector
A classe WebHttpDispatchOperationSelector usa as classes UriTemplate e UriTemplateTable para despachar chamadas para operações de serviço.
Compatibilidade
O WCF WEB HTTP Programming Model não usa mensagens baseadas em SOAP e, portanto, não suporta os protocolos WS-*. No entanto, você pode expor o mesmo contrato por dois endpoints diferentes: um usando SOAP e o outro não usando SOAP. Consulte Como: expor um contrato a clientes SOAP e Web para obter um exemplo.
Segurança
Como o Modelo de Programação HTTP WCF WEB não suporta os protocolos WS-*, a única maneira de proteger um serviço da Web construído no Modelo de Programação HTTP WCF WEB é expor seu serviço usando SSL. Para obter mais informações sobre como configurar o SSL com o IIS 7.0, consulte Como implementar o SSL no IIS.