Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Esta seção mostra como definir e implementar contratos WCF. Um contrato de serviço especifica o que um ponto de extremidade comunica ao mundo externo. Em um nível mais concreto, é uma declaração sobre um conjunto de mensagens específicas organizadas em modelos básicos de troca de mensagens (MEPs), como solicitação/resposta, unidirecional e duplex. Se um contrato de serviço for um conjunto logicamente relacionado de trocas de mensagens, uma operação de serviço será uma única troca de mensagens. Por exemplo, a operação Hello deve obviamente aceitar uma mensagem (para que quem chama possa anunciar a saudação) e pode ou não retornar uma mensagem (dependendo da cortesia da operação).
Para obter mais informações sobre contratos e outros conceitos básicos do Windows Communication Foundation (WCF), consulte conceitos fundamentais do Windows Communication Foundation. Este tópico se concentra na compreensão dos contratos de serviço. Para obter mais informações sobre como criar clientes que usam contratos de serviço para se conectar aos serviços, consulte a Visão geral do cliente do WCF.
Visão geral
Este tópico fornece uma orientação conceitual de alto nível para projetar e implementar serviços do WCF. Os subtópicos fornecem informações mais detalhadas sobre as especificidades do design e da implementação. Antes de projetar e implementar seu aplicativo WCF, é recomendável que você:
Entenda o que é um contrato de serviço, como ele funciona e como criar um.
Entenda que os contratos estabelecem requisitos mínimos que a configuração em tempo de execução ou o ambiente de hospedagem podem não suportar.
Contratos de Serviço
Um contrato de serviço especifica o seguinte:
As operações que um contrato expõe.
A assinatura de operações em termos de mensagens trocadas.
Os tipos de dados dessas mensagens.
O local das operações.
Os protocolos específicos e os formatos de serialização usados para dar suporte à comunicação bem-sucedida com o serviço.
Por exemplo, um contrato de pedido de compra pode ter uma CreateOrder operação que aceita uma entrada de tipos de informações de pedido e retorna informações de êxito ou falha, incluindo um identificador de pedido. Ele também pode ter uma GetOrderStatus operação que aceita um identificador de pedido e retorna informações de status do pedido. Um contrato de serviço desse tipo especificaria:
Que o contrato de ordem de compra consistia nas operações
CreateOrdereGetOrderStatus.Que as operações especificaram mensagens de entrada e mensagens de saída.
Os dados que essas mensagens podem carregar.
Instruções categóricas sobre a infraestrutura de comunicação necessárias para processar as mensagens com êxito. Por exemplo, esses detalhes incluem se e quais formas de segurança são necessárias para estabelecer uma comunicação bem-sucedida.
Para transmitir esse tipo de informação a outros aplicativos em muitas plataformas (incluindo plataformas não Microsoft), os contratos de serviço XML são expressos publicamente em formatos XML padrão, como WSDL ( Linguagem de Descrição dos Serviços Web ) e XSD (Esquema XML ), entre outros. Os desenvolvedores de muitas plataformas podem usar essas informações de contrato público para criar aplicativos que possam se comunicar com o serviço, tanto porque entendem o idioma da especificação quanto porque esses idiomas foram projetados para habilitar a interoperação descrevendo os formulários públicos, formatos e protocolos aos quais o serviço dá suporte. Para obter mais informações sobre como o WCF lida com esse tipo de informação, consulte Metadados.
Os contratos podem ser expressos de várias maneiras e, embora WSDL e XSD sejam excelentes idiomas para descrever os serviços de forma acessível, são linguagens difíceis de usar diretamente e são meramente descrições de um serviço, não implementações de contrato de serviço. Portanto, os aplicativos WCF usam atributos gerenciados, interfaces e classes para definir a estrutura de um serviço e implementá-la.
O contrato resultante definido em tipos gerenciados pode ser exportado como metadados , WSDL e XSD, quando necessário por clientes ou outros implementadores de serviço. O resultado é um modelo de programação simples que pode ser descrito (usando metadados públicos) para qualquer aplicativo cliente. Os detalhes das mensagens SOAP subjacentes, as informações relacionadas ao transporte e à segurança, e assim por diante, podem ser deixados para o WCF, que executa as conversões necessárias de e para o sistema de tipo de contrato de serviço para o sistema de tipos XML automaticamente.
Para obter mais informações sobre a criação de contratos, consulte Designing Service Contracts. Para obter mais informações sobre como implementar contratos, consulte Implementando contratos de serviço.
Mensagens na frente e no centro
Usar interfaces gerenciadas, classes e métodos para modelar operações de serviço é simples quando você está acostumado a assinaturas de método de chamada de procedimento remoto (RPC), nas quais passar parâmetros para um método e receber valores retornados é a forma normal de requerer funcionalidades de um objeto ou outro tipo de código. Por exemplo, programadores que usam linguagens gerenciadas, como Visual Basic e C++ COM, podem aplicar seu conhecimento da abordagem de estilo RPC (seja usando objetos ou interfaces) à criação de contratos de serviço WCF sem experimentar os problemas inerentes aos sistemas de objetos distribuídos no estilo RPC. A orientação de serviço fornece os benefícios da programação vagamente acoplada e orientada a mensagens, mantendo a facilidade e familiaridade da experiência de programação RPC.
Muitos programadores estão mais confortáveis com interfaces de programação de aplicativos orientadas a mensagens, como filas de mensagens como o Microsoft MSMQ, os System.Messaging namespaces no .NET Framework ou o envio de XML não estruturado em solicitações HTTP, para citar alguns. Para obter mais informações sobre programação no nível da mensagem, consulte Usando Contratos de Mensagem, Programação de Serviço Channel-Level e Interoperabilidade com Aplicativos POX.
Noções básicas sobre a hierarquia de requisitos
Um contrato de serviço agrupa as operações; especifica o padrão de troca de mensagens, os tipos de mensagem e os tipos de dados que essas mensagens carregam; e indica categorias de comportamento de runtime que uma implementação deve ter para dar suporte ao contrato (por exemplo, pode exigir que as mensagens sejam criptografadas e assinadas). O contrato de serviço em si não especifica precisamente como esses requisitos são atendidos, apenas que eles devem ser. O tipo de criptografia ou a maneira como uma mensagem é assinada está em conformidade com a implementação e a configuração de um serviço em conformidade.
Observe a maneira como o contrato requer determinados itens da implementação do contrato de serviço e da configuração de runtime para adicionar comportamento. O conjunto de requisitos que deve ser atendido para expor um serviço para uso baseia-se no conjunto de requisitos anterior. Se um contrato fizer requisitos da implementação, uma implementação poderá exigir ainda mais da configuração e das associações que permitem a execução do serviço. Por fim, o aplicativo host também deve dar suporte a todos os requisitos que a configuração de serviço e as associações adicionam.
Esse processo de requisito aditivo é importante ter em mente durante a criação, implementação, configuração e hospedagem de um aplicativo de serviço do WCF (Windows Communication Foundation). Por exemplo, o contrato pode especificar que ele precisa dar suporte a uma sessão. Nesse caso, você deve configurar a associação para dar suporte a esse requisito contratual ou a implementação do serviço não funcionará. Ou se o serviço exigir a Autenticação Integrada do Windows e estiver hospedado no IIS (Serviços de Informações da Internet), o aplicativo Web no qual o serviço reside deverá ter a Autenticação Integrada do Windows ativada e o suporte anônimo desativado. Para obter mais informações sobre os recursos e o impacto dos diferentes tipos de aplicativos host de serviço, consulte Serviços de Hospedagem.