ContratosContracts

Esta seção mostra como definir e implementar contratos do Windows Communication Foundation (WCF).This section shows you how to define and implement Windows Communication Foundation (WCF)contracts. Um contrato de serviço Especifica o que um ponto de extremidade comunica ao mundo externo.A service contract specifies what an endpoint communicates to the outside world. Em um nível mais concreto, é uma afirmação sobre um conjunto de mensagens específicas, organizados em padrões de troca de mensagens básicas (MEPs), como solicitação/resposta, unidirecional e duplex.At a more concrete level, it is a statement about a set of specific messages organized into basic message exchange patterns (MEPs), such as request/reply, one-way, and duplex. Se um contrato de serviço é um conjunto de trocas de mensagens relacionadas logicamente, uma operação de serviço é uma troca de mensagens única.If a service contract is a logically related set of message exchanges, a service operation is a single message exchange. Por exemplo, um Hello operação obviamente deve aceitar uma mensagem (de modo que o chamador pode anunciar a saudação) e podem ou não pode retornar uma mensagem (dependendo de cortesia da operação).For example, a Hello operation must obviously accept one message (so the caller can announce the greeting) and may or may not return a message (depending upon the courtesy of the operation).

Para obter mais informações sobre contratos e outros conceitos de WCF, consulte conceitos fundamentais do Windows Communication Foundation.For more information about contracts and other core WCF concepts, see Fundamental Windows Communication Foundation Concepts. Este tópico enfoca a compreensão de contratos de serviço.This topic focuses on understanding service contracts. Para obter mais informações sobre como criar os clientes que usam os contratos de serviço para se conectar aos serviços, consulte visão geral do cliente WCF.For more information about how to build clients that use service contracts to connect to services, see WCF Client Overview. Para obter mais informações sobre os canais de cliente, a arquitetura do cliente e outros problemas de cliente, consulte clientes.For more information about client channels, the client architecture, and other client issues, see Clients.

Visão geralOverview

Este tópico fornece uma orientação conceitual de alto nível para projetar e implementar serviços WCF.This topic provides a high-level conceptual orientation to designing and implementing WCF services. Subtópicos fornecem que informações mais detalhadas sobre as especificações de design e implementação.Subtopics provide more detailed information about the specifics of designing and implementation. Antes de criar e implementar seu aplicativo do WCF, é recomendável que você:Before designing and implementing your WCF application, it is recommended that you:

  • Entender é que um contrato de serviço, como ele funciona e como criá-lo.Understand what a service contract is, how it works, and how to create one.

  • Entender o que os contratos de estado requisitos mínimos não pode dar suporte a essa configuração de tempo de execução ou o ambiente de hospedagem.Understand that contracts state minimum requirements that run-time configuration or the hosting environment may not support.

Contratos de serviçoService Contracts

Um contrato de serviço é uma instrução que fornece informações sobre:A service contract is a statement that provides information about:

  • O agrupamento de operações em um serviço.The grouping of operations in a service.

  • A assinatura das operações em termos de mensagens trocadas.The signature of the operations in terms of messages exchanged.

  • Os tipos de dados dessas mensagens.The data types of these messages.

  • O local das operações.The location of the operations.

  • Os protocolos específicos e formatos de serialização que são usados para dar suporte à comunicação bem-sucedida com o serviço.The specific protocols and serialization formats that are used to support successful communication with the service.

Por exemplo, um contrato de ordem de compra pode ter um CreateOrder tipos de operação que aceita uma entrada de informações do pedido e retorna informações de êxito ou falha, incluindo um identificador do pedido.For example, a purchase order contract might have a CreateOrder operation that accepts an input of order information types and returns success or failure information, including an order identifier. Ele também pode ter um GetOrderStatus operação que aceita um identificador do pedido e retorna informações de status do pedido.It might also have a GetOrderStatus operation that accepts an order identifier and returns order status information. Um contrato de serviço desse tipo deve especificar:A service contract of this sort would specify:

  • Se o contrato de ordem de compra consistiu CreateOrder e GetOrderStatus operações.That the purchase order contract consisted of CreateOrder and GetOrderStatus operations.

  • Que especificou as operações de mensagens de entrada e as mensagens de saída.That the operations have specified input messages and output messages.

  • Os dados que podem ser executadas por essas mensagens.The data that these messages can carry.

  • Categóricas instruções sobre a infraestrutura de comunicação necessária para processar com êxito as mensagens.Categorical statements about the communication infrastructure necessary to successfully process the messages. Por exemplo, esses detalhes incluem se e que formas de segurança são necessárias para estabelecer a comunicação bem-sucedida.For example, these details include whether and what forms of security are required to establish successful communication.

Para transmitir esse tipo de informação para aplicativos em outras plataformas (incluindo plataformas de não-Microsoft), os contratos de serviço XML são publicamente expressas em formatos XML padrão, como descrição linguagem WSDL (Web Services) e esquema XML (XSD), entre outros.To convey this kind of information to applications on other platforms (including non-Microsoft platforms), XML service contracts are publicly expressed in standard XML formats, such as Web Services Description Language (WSDL) and XML Schema (XSD), among others. Os desenvolvedores para várias plataformas podem usar essas informações de contrato público para criar aplicativos que podem se comunicar com o serviço, pois eles entendem o idioma da especificação e como essas linguagens são projetadas para habilitar a interoperação descrevendo o públicos formulários, formatos e protocolos que o serviço oferece suporte.Developers for many platforms can use this public contract information to create applications that can communicate with the service, both because they understand the language of the specification and because those languages are designed to enable interoperation by describing the public forms, formats, and protocols that the service supports. Para obter mais informações sobre como o WCF trata esse tipo de informação, consulte metadados.For more information about how WCF handles this kind of information, see Metadata.

Contratos podem ser expressos muitas maneiras, no entanto, e embora WSDL e XSD são excelentes linguagens para descrever serviços de forma acessível, elas são difíceis de idiomas a serem usados diretamente — em qualquer caso, eles são meramente descrições de um contrato de serviço, o service não implementações.Contracts can be expressed many ways, however, and while WSDL and XSD are excellent languages to describe services in an accessible way, they are difficult languages to use directly—in any case, they are merely descriptions of a service, not service contract implementations. Portanto, os aplicativos do WCF usarem atributos gerenciados, interfaces e classes para definir a estrutura de e para implementar um serviço.Therefore, WCF applications use managed attributes, interfaces, and classes both to define the structure of and to implement a service.

O contrato resultante definido em tipos gerenciados pode ser convertido (também chamado de exportados) como metadados — WSDL e XSD — quando necessário, os clientes ou outros implementadores de serviço, especialmente em outras plataformas.The resulting contract defined in managed types can be converted (also called exported) as metadata—WSDL and XSD—when needed by clients or other service implementers, especially on other platforms. O resultado é um modelo de programação simples que pode ser descrito usando metadados públicos para qualquer aplicativo cliente.The result is a straightforward programming model that can be described using public metadata to any client application. Os detalhes das mensagens SOAP subjacentes, como o transporte e informações relacionadas à segurança, podem ser mantidos no WCF, que executa automaticamente as conversões necessárias para e do sistema de tipo de contrato de serviço para o sistema de tipo XML.The details of the underlying SOAP messages, such as the transportation and security-related information, can be left to WCF, which automatically performs the necessary conversions to and from the service contract type system to the XML type system.

Para obter mais informações sobre a criação de contratos, consulte Criando contratos de serviço.For more information about designing contracts, see Designing Service Contracts. Para obter mais informações sobre como implementar contratos, consulte implementar contratos de serviço.For more information about implementing contracts, see Implementing Service Contracts.

Além disso, o WCF também fornece a capacidade de desenvolver os contratos de serviço inteiramente no nível da mensagem.In addition, WCF also provides the ability to develop service contracts entirely at the message level. Para obter mais informações sobre o desenvolvimento de contratos de serviço no nível da mensagem, consulte contratos de mensagem usando.For more information about developing service contracts at the message level, see Using Message Contracts. Para obter mais informações sobre o desenvolvimento de serviços em XML não SOAP, consulte interoperabilidade com aplicativos de POX.For more information about developing services in non-SOAP XML, see Interoperability with POX Applications.

Noções básicas sobre a hierarquia de requisitosUnderstanding the Hierarchy of Requirements

Um contrato de serviço agrupa as operações; Especifica MEP, tipos de mensagem, e a realização dessas mensagens; tipos de dados e indica as categorias de comportamento de tempo de execução, uma implementação deve ter para o contrato de suporte (por exemplo, ele pode exigir que as mensagens de ser criptografadas e assinadas).A service contract groups the operations; specifies the MEP, message types, and data types those messages carry; and indicates categories of run-time behavior an implementation must have to support the contract (for example, it may require that messages be encrypted and signed). No entanto, o contrato de serviço em si, não especifica exatamente como esses requisitos forem atendidos, é só isso, eles devem ser.The service contract itself, however, does not specify precisely how these requirements are met, only that they must be. O tipo de criptografia ou como uma mensagem for assinada é até a implementação e configuração de um serviço em conformidade.What type of encryption or how a message is signed is up to the implementation and configuration of a compliant service.

Observe a maneira que o contrato requer certas coisas da implementação do contrato de serviço e a configuração de tempo de execução para Adicionar comportamento.Notice the way that the contract requires certain things of the service contract implementation and the run-time configuration to add behavior. O conjunto de requisitos que devem ser atendidos para expor um serviço para uso se baseia o conjunto anterior de requisitos.The set of requirements that must be met to expose a service for use builds on the preceding set of requirements. Se um contrato de tornar os requisitos da implementação, uma implementação pode exigir ainda mais da configuração e as associações que permitem que o serviço seja executado.If a contract makes requirements of the implementation, an implementation can require yet more of the configuration and bindings that enable the service to run. Por fim, o aplicativo host deve também dão suporte a todos os requisitos que adicionar a configuração de serviço e associações.Finally, the host application must also support any requirements that the service configuration and bindings add.

Esse processo aditivas requisito é importante ter em mente ao projetar, implementar, configurando e hospedando seu aplicativo de serviço do Windows Communication Foundation (WCF).This additive requirement process is important to keep in mind while designing, implementing, configuring, and hosting your Windows Communication Foundation (WCF) service application. Por exemplo, o contrato pode especificar que ele precisa dar suporte a uma sessão.For example, the contract can specify that it needs to support a session. Nesse caso, em seguida, você deve configurar a associação para dar suporte a esse requisito contratual ou a implementação do serviço não funcionará.If so, then you must configure the binding to support that contractual requirement, or the service implementation will not work. Ou, se seu serviço requer autenticação do Windows integrada e está hospedado no Internet Information Services (IIS), o aplicativo Web no qual reside o serviço deve ter autenticação Windows integrada ativada e suporte anônimo desativado.Or if your service requires Integrated Windows authentication and is hosted in Internet Information Services (IIS), the Web application in which the service resides must have Integrated Windows authentication turned on and anonymous support turned off. Para obter mais informações sobre os recursos e o impacto dos tipos de aplicativos de host de serviço diferentes, consulte hospedagem.For more information about the features and impact of the different service host application types, see Hosting.

Consulte tambémSee also