O Windows Communication Foundation (WCF) é uma estrutura para criar aplicativos orientados a serviços. Usando o WCF, você pode enviar dados como mensagens assíncronas de um ponto de extremidade de serviço para outro. Um ponto de extremidade de serviço pode fazer parte de um serviço continuamente disponível hospedado pelo IIS ou pode ser um serviço hospedado em um aplicativo. Um ponto de extremidade pode ser um cliente de um serviço que solicita dados de um ponto de extremidade de serviço. As mensagens podem ser tão simples quanto um único caractere ou palavra enviada como XML, ou tão complexas quanto um fluxo de dados binários. Alguns cenários de exemplo incluem:
Um serviço seguro para processar transações comerciais.
Um serviço que fornece dados atuais a outras pessoas, como um relatório de tráfego ou outro serviço de monitoramento.
Um serviço de chat que permite que duas pessoas comuniquem ou troquem dados em tempo real.
Um aplicativo de painel que sonda um ou mais serviços em busca de dados e os apresenta em uma apresentação lógica.
Expor um fluxo de trabalho implementado usando o Windows Workflow Foundation como um serviço WCF.
Embora a criação de tais aplicativos fosse possível antes da existência do WCF, o WCF torna o desenvolvimento de pontos de extremidade mais fácil do que nunca. Em resumo, o WCF foi projetado para oferecer uma abordagem gerenciável para a criação de serviços Web e clientes de serviços Web.
gRPC como alternativa ao WCF
gRPC é uma estrutura RPC moderna que é uma alternativa popular ao WCF. O gRPC é construído com base no HTTP/2, que oferece uma série de vantagens em relação ao WCF, incluindo:
Desempenho: o gRPC é muito mais eficiente do que o WCF, especialmente para conexões de longa duração.
Escalabilidade: o gRPC foi projetado para ser dimensionado para um grande número de clientes e servidores.
Segurança: o gRPC suporta uma variedade de mecanismos de segurança, incluindo TLS e autenticação.
Multiplataforma: o gRPC é neutro em relação à plataforma e pode ser usado com uma variedade de linguagens de programação.
Para obter mais informações sobre como desenvolver ou migrar aplicativos WCF para gRPC, consulte:
WCF inclui o seguinte conjunto de recursos. Para obter mais informações, consulte Detalhes do recurso WCF.
Orientação para o serviço
Uma consequência do uso de padrões WS é que o WCF permite que você crie aplicativos orientados a serviços. A arquitetura orientada a serviços (SOA) é a dependência de serviços da Web para enviar e receber dados. Os serviços têm a vantagem geral de serem acoplados de forma flexível em vez de codificados de um aplicativo para outro. Uma relação de acoplamento flexível implica que qualquer cliente criado em qualquer plataforma pode se conectar a qualquer serviço, desde que os contratos essenciais sejam cumpridos.
Interoperabilidade
O WCF implementa padrões modernos do setor para interoperabilidade de serviços da Web. Para obter mais informações sobre os padrões suportados, consulte Interoperabilidade e integração.
Vários padrões de mensagem
As mensagens são trocadas em um dos vários padrões. O padrão mais comum é o padrão de solicitação/resposta, em que um ponto de extremidade solicita dados de um segundo ponto de extremidade. O segundo parâmetro de avaliação responde. Existem outros padrões, como uma mensagem unidirecional, na qual um único ponto de extremidade envia uma mensagem sem qualquer expectativa de resposta. Um padrão mais complexo é o padrão de troca duplex onde dois pontos de extremidade estabelecem uma conexão e enviam dados para frente e para trás, semelhante a um programa de mensagens instantâneas. Para obter mais informações sobre como implementar diferentes padrões de troca de mensagens usando WCF, consulte Contratos.
Metadados do serviço
O WCF oferece suporte à publicação de metadados de serviço usando formatos especificados nos padrões do setor, como WSDL, XML Schema e WS-Policy. Esses metadados podem ser usados para gerar e configurar automaticamente clientes para acessar serviços WCF. Os metadados podem ser publicados por HTTP e HTTPS ou usando o padrão Web Service Metadata Exchange. Para obter mais informações, consulte Metadados.
Contratos de Dados
Como o WCF é criado usando o .NET Framework, ele também inclui métodos amigáveis ao código para fornecer os contratos que você deseja impor. Um dos tipos universais de contratos é o contrato de dados. Em essência, como você codifica seu serviço usando Visual C# ou Visual Basic, a maneira mais fácil de lidar com dados é criando classes que representam uma entidade de dados com propriedades que pertencem à entidade de dados. O WCF inclui um sistema abrangente para trabalhar com dados dessa maneira fácil. Depois de criar as classes que representam dados, seu serviço gera automaticamente os metadados que permitem que os clientes estejam em conformidade com os tipos de dados que você criou. Para obter mais informações, consulte Usando contratos de dados.
Segurança
As mensagens podem ser criptografadas para proteger a privacidade e você pode exigir que os usuários se autentiquem antes de terem permissão para receber mensagens. A segurança pode ser implementada usando padrões bem conhecidos, como SSL ou WS-SecureConversation. Para obter mais informações, consulte Segurança.
Vários transportes e codificações
As mensagens podem ser enviadas em qualquer um dos vários protocolos de transporte e codificações incorporados. O protocolo e codificação mais comuns é enviar mensagens SOAP codificadas em texto usando o protocolo HTTP (HyperText Transfer Protocol) para uso na World Wide Web. Como alternativa, o WCF permite que você envie mensagens por TCP, pipes nomeados ou MSMQ. Essas mensagens podem ser codificadas como texto ou usando um formato binário otimizado. Os dados binários podem ser enviados de forma eficiente usando o padrão MTOM. Se nenhum dos transportes ou codificações fornecidos atender às suas necessidades, você pode criar seu próprio transporte ou codificação personalizados. Para obter mais informações sobre transportes e codificações suportados pelo WCF, consulte Transportes.
Mensagens confiáveis e enfileiradas
O WCF suporta troca de mensagens confiável usando sessões confiáveis implementadas sobre WS-Reliable Messaging e usando MSMQ. Para obter mais informações sobre o suporte a mensagens confiáveis e enfileiradas no WCF, consulte Filas e sessões confiáveis.
Mensagens duráveis
Uma mensagem duradoura é aquela que nunca se perde devido a uma interrupção na comunicação. As mensagens em um padrão de mensagem durável são sempre salvas em um banco de dados. Se ocorrer uma interrupção, o banco de dados permitirá que você retome a troca de mensagens quando a conexão for restaurada. Você também pode criar uma mensagem durável usando o Windows Workflow Foundation (WF). Para obter mais informações, consulte Serviços de fluxo de trabalho.
Transações
O WCF também oferece suporte a transações usando um dos três modelos de transação: WS-AtomicTransactions, as APIs no namespace e o System.Transactions Microsoft Distributed Transaction Coordinator. Para obter mais informações sobre o suporte a transações no WCF, consulte Transações.
Suporte a AJAX e REST
REST é um exemplo de uma tecnologia Web 2.0 em evolução. O WCF pode ser configurado para processar dados XML "simples" que não são encapsulados em um envelope SOAP. O WCF também pode ser estendido para suportar formatos XML específicos, como ATOM (um padrão RSS popular), e até mesmo formatos não-XML, como JavaScript Object Notation (JSON).
Extensibilidade
A arquitetura WCF tem vários pontos de extensibilidade. Se for necessária capacidade extra, há vários pontos de entrada que permitem personalizar o comportamento de um serviço. Para obter mais informações sobre os pontos de extensibilidade disponíveis, consulte Estendendo o WCF.
Integração do WCF com outras tecnologias Microsoft
WCF é uma plataforma flexível. Devido a essa extrema flexibilidade, o WCF também é usado em vários outros produtos da Microsoft. Ao entender os conceitos básicos do WCF, você tem uma vantagem imediata se também usar qualquer um desses produtos.
A primeira tecnologia a emparelhar com o WCF foi o Windows Workflow Foundation (WF). Os fluxos de trabalho simplificam o desenvolvimento de aplicativos encapsulando etapas no fluxo de trabalho como "atividades". Na primeira versão do Windows Workflow Foundation, um desenvolvedor tinha que criar um host para o fluxo de trabalho. A próxima versão do Windows Workflow Foundation foi integrada ao WCF. Isso permitiu que qualquer fluxo de trabalho fosse facilmente hospedado em um serviço WCF. Você pode fazer isso escolhendo automaticamente o tipo de projeto WF/WCF no Visual Studio 2012 ou posterior.
Microsoft BizTalk Server R2 também utiliza WCF como uma tecnologia de comunicação. O BizTalk foi projetado para receber e transformar dados de um formato padronizado para outro. As mensagens devem ser entregues em sua caixa de mensagem central, onde a mensagem pode ser transformada usando um mapeamento estrito ou usando um dos recursos do BizTalk, como seu mecanismo de fluxo de trabalho. O BizTalk agora pode usar o adaptador WCF Line of Business (LOB) para entregar mensagens para a caixa de mensagem.
Os recursos de hospedagem do servidor de aplicativos Windows Server AppFabric são projetados especificamente para implantar e gerenciar aplicativos que usam WCF para comunicação. Os recursos de hospedagem incluem ferramentas avançadas e opções de configuração especificamente projetadas para aplicativos habilitados para WCF.
Os aplicativos de microsserviço são compostos por serviços pequenos, com versões independentes e escaláveis, focados no cliente, que se comunicam entre si usando protocolos padrão e interfaces bem definidas. Cada microsserviço normalmente encapsula uma lógica de negócios simples, que pode ser dimensionada ou ampliada. Você testa, implanta e gerencia o microsserviço de forma independente. Equipes menores desenvolvem um microsserviço com base em um cenário de cliente e escolhem as tecnologias que usam. Este m