Modelo de objeto de programação Web HTTP do WCF
O modelo de programação WCF WEB HTTP 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 WCF WEB HTTP é construído sobre o modelo de extensibilidade WCF existente. Define as seguintes classes:
Modelo de Programação:
Canais e Infraestrutura de Despachantes:
Classes de utilidade 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 do 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 WebGetAttribute atributo é usado para marcar uma operação de serviço como uma que responde a solicitações HTTP GET. É um comportamento de operação passiva (os IOperationBehavior métodos não fazem nada) que adiciona metadados à descrição da operação. A aplicação do não tem efeito, a WebGetAttribute 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 WebGetAttribute atributo usa os parâmetros opcionais mostrados na tabela a seguir.
Parâmetro | Description |
---|---|
BodyStyle |
Controla se as solicitações e respostas enviadas e recebidas da operação de serviço à qual o atributo é aplicado devem ser encapsuladas. |
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 WebHttpBinding classe incorpora suporte para XML, JSON e dados binários brutos usando o WebMessageEncodingBindingElement. É composto por um HttpsTransportBindingElement, HttpTransportBindingElement e um WebHttpSecurity objeto. O WebHttpBinding é projetado para ser usado em conjunto com o WebHttpBehavior.
WebInvokeAttribute
O WebInvokeAttribute atributo é semelhante ao WebGetAttribute, mas é usado para marcar uma operação de serviço como uma que responde a solicitações HTTP diferentes de GET. É um comportamento de operação passiva (os IOperationBehavior métodos não fazem nada) que adiciona metadados à descrição da operação. A aplicação do não tem efeito, a WebInvokeAttribute 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 WebInvokeAttribute atributo usa os parâmetros opcionais mostrados na tabela a seguir.
Parâmetro | Description |
---|---|
BodyStyle |
Controla se as solicitações e respostas enviadas e recebidas da operação de serviço à qual o atributo é aplicado devem ser encapsuladas. |
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 UriTemplate classe permite definir um conjunto de URIs estruturalmente semelhantes. Os modelos são compostos por 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 caminho"), que deve aparecer no final do caminho. A expressão de consulta pode ser totalmente omitida. 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 variáveis (?x={value}). Não são permitidos valores não emparelhados. UriTemplate é usado internamente pelo modelo de programação WCF WEB HTTP para mapear URIs específicos ou grupos de URIs para operações de serviço.
UriTemplateTable
A UriTemplateTable classe representa um conjunto associativo de UriTemplate objetos vinculados a um objeto escolhido pelo desenvolvedor. Ele permite que você faça a correspondência entre URIs (Uniform Resource Identifiers) candidatos e os modelos no conjunto e recupere os dados associados aos modelos correspondentes. UriTemplateTable é usado internamente pelo modelo de programação WCF WEB HTTP para mapear URIs específicos ou grupos de URIs para operações de serviço.
WebServiceHost
WebServiceHost estende o ServiceHost para facilitar a hospedagem de um serviço no estilo Web não-SOAP. Se WebServiceHost não encontrar nenhum ponto 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 ponto de extremidade HTTP padrão, o WebServiceHost também desabilita a página Ajuda HTTP e a funcionalidade GET WSDL (Web Services Description Language) para que o ponto de extremidade de metadados não interfira com o ponto de extremidade HTTP padrão. WebServiceHost também garante que todos os pontos de extremidade que usam WebHttpBinding tenham o necessário WebHttpBehavior anexado. Finalmente, WebServiceHost configura automaticamente a associação do ponto de extremidade para trabalhar com as configurações de segurança do IIS (Serviços de Informações da Internet) associadas quando usado em um diretório virtual seguro.
WebServiceHostFactory
A WebServiceHostFactory classe é usada para criar dinamicamente um WebServiceHost quando um serviço é hospedado em Serviços de Informações da Internet (IIS) ou Serviço de Ativação de Processos do Windows (WAS). Ao contrário de um serviço auto-hospedado em que o aplicativo de hospedagem instancia o , os WebServiceHostserviços hospedados em IIS ou WAS usam essa classe para criar o WebServiceHost para o serviço. O CreateServiceHost(Type, Uri[]) método é chamado quando uma solicitação de entrada para o serviço é recebida.
WebHttpBehavior
A WebHttpBehavior classe fornece os formatters, seletores de operação e assim por diante, necessários para o suporte de serviço no estilo da Web na camada de Modelo de Serviço. Isso é implementado como um comportamento de ponto de extremidade (usado em conjunto com o WebHttpBinding) e permite que formatters e seletores de operação sejam especificados para cada ponto de extremidade, o que permite que a mesma implementação de serviço exponha os pontos de extremidade 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 e WebHttpBehavior substituir esses métodos para personalizar o comportamento padrão.
O WebScriptEnablingBehavior é um exemplo de extensão WebHttpBehavior. WebScriptEnablingBehavior permite que os pontos de extremidade do Windows Communication Foundation (WCF) recebam solicitações HTTP de um cliente AJAX ASP.NET 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 há suporte para WebGetAttribute atributos ou WebInvokeAttribute atributos.
WebHttpDispatchOperationSelector
A WebHttpDispatchOperationSelector classe usa UriTemplate e UriTemplateTable classes para enviar chamadas para operações de serviço.
Compatibilidade
O modelo de programação WCF WEB HTTP 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 pontos de extremidade diferentes: um usando SOAP e outro não usando SOAP. Consulte Como: Expor um contrato para clientes SOAP e Web para obter um exemplo.
Segurança
Como o modelo de programação WCF WEB HTTP não suporta os protocolos WS-*, a única maneira de proteger um serviço Web criado no modelo de programação WCF WEB HTTP é 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.