O WCF (Windows Communication Foundation) é uma estrutura usada para a criação de aplicativos orientados a serviços. Usando o WCF, você poderá enviar dados como mensagens assíncronas de um ponto de extremidade de serviço para outro. Um ponto de extremidade de serviço pode ser parte de um serviço disponível continuamente 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 simples como um único caractere ou uma palavra enviada como XML ou complexo como 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 para outros, como um relatório de tráfego ou outro serviço de monitoramento.
Um serviço de chat que permite que duas pessoas se comuniquem ou troquem dados em tempo real.
Um aplicativo do painel que pesquisa um ou mais serviços para dados e os apresenta em uma apresentação lógica.
Expõe um fluxo de trabalho implementado usando o Windows Workflow Foundation como um serviço WCF.
Embora a criação desses aplicativos fosse possível antes da existência do WCF, o WCF facilita mais do que nunca o desenvolvimento de pontos de extremidade. 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 uma alternativa ao WCF
gRPC é uma estrutura RPC moderna que é uma alternativa popular ao WCF. O gRPC tem como base o HTTP/2, o que oferece várias vantagens sobre o WCF, incluindo:
Desempenho: o gRPC é muito mais eficiente que o WCF, especialmente para conexões de longa duração.
Escalabilidade: o gRPC foi projetado para escalar 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.
Plataforma cruzada: o gRPC é independente de 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, confira:
O WCF inclui o conjunto de recursos a seguir. Para obter mais informações, confira Detalhes dos recursos do WCF.
Orientação de serviço
Uma consequência de usar os padrões do WS é que o WCF permite que você crie aplicativos orientados a serviços. A arquitetura orientada a serviços (SOA) é a confiança nos serviços Web para enviar e receber dados. Os serviços têm a vantagem geral de serem fracamente acoplados em vez de embutidos no código de um aplicativo para outro. Uma relação fracamente acoplada significa que qualquer cliente criado em qualquer plataforma pode se conectar a qualquer serviço contanto que os contratos essenciais sejam atendidos.
Interoperabilidade
O WCF implementa os padrões modernos da indústria para a interoperabilidade de serviço Web. Para obter mais informações sobre os padrões compatíveis, confira 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, onde um ponto de extremidade solicita dados de um segundo ponto de extremidade. O segundo ponto de extremidade responde. Há outros padrões como uma mensagem unidirecional em que um único ponto de extremidade envia uma mensagem sem nenhuma expectativa de resposta. Um padrão mais complexo é o padrão de troca duplex onde dois pontos de extremidade estabelecem uma conexão de dados e enviar 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 o WCF, confira Contratos.
Metadados de serviço
O WCF dá suporte à publicação de metadados de serviço usando formatos especificados nos padrões do setor como WSDL, Esquema XML e WS-Policy. Esses metadados podem ser usados automaticamente para gerar e configurar clientes para acessar os serviços WCF. Os metadados podem ser publicados em HTTP e HTTPS ou usando o padrão Metadata Exchange do Serviço Web. Para obter mais informações, confira Metadados.
Contratos de dados
Como o WCF é compilado com o .NET Framework, ele também inclui métodos de código amigável de fornecer contratos que você deseja impor. Um dos tipos universais de contratos é o contrato de dados. Essencialmente, à medida que você codifica o serviço usando Visual C# ou Visual Basic, a maneira mais fácil de manipular dados é criando classes que representam uma entidade de dados com as propriedades que pertencem à entidade de dados. O WCF inclui um sistema abrangente para trabalhar com os dados dessa maneira fácil. Assim que você tiver criado as classes que representam dados, o serviço gera automaticamente os metadados que permitem que os clientes sejam compatíveis com os tipos de dados que você criou. Para saber mais, confira Como usar 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 de receber mensagens. A segurança pode ser implementada usando padrões conhecidos como SSL ou WS-SecureConversation. Para saber mais, consulte Segurança.
Vários transportes e codificações
As mensagens podem ser enviadas de qualquer um dos vários protocolos e codificações internos de transporte. O protocolo e a codificação mais comuns são enviar mensagens SOAP codificadas por texto usando o protocolo HTTP para uso na World Wide Web. Como alternativa, o WCF permite que você envie mensagens via TCP, por pipes nomeados ou pelo MSMQ. Essas mensagens podem ser codificadas como texto ou usando um formato binário otimizado. Os dados binários podem ser enviados com eficiência usando o padrão MTOM. Se nenhum dos transportes ou codificações fornecidos atender às suas necessidades, você poderá criar seu próprio transporte ou codificação personalizado. Para obter mais informações sobre os transportes e as codificações compatíveis com o WCF, confira Transportes.
Mensagens confiáveis e na fila
O WCF dá suporte à troca de mensagens confiáveis usando sessões confiáveis implementadas pelo WS-Reliable Messaging e usando o MSMQ. Para obter mais informações sobre o suporte à mensagens confiáveis e na fila no WCF, confira Filas e sessões confiáveis.
Mensagens duráveis
Uma mensagem é durável porque nunca é perdida devido a um rompimento na comunicação. As mensagens em um padrão durável são sempre salvas em um banco de dados. Se um rompimento ocorrer, o banco de dados permitirá que você retome a troca de mensagens quando a conexão for restaurada. Crie também uma mensagem durável usando o WF (Windows Workflow Foundation). Para obter mais informações, confira Serviços de fluxo de trabalho.
Transações
O WCF também dá suporte a transações usando um destes três modelos de transação: WS-AtomicTransactions, as APIs no namespace System.Transactions e o Coordenador de Transações Distribuídas da Microsoft. Para obter mais informações sobre o suporte a transações no WCF, confira Transações.
Suporte AJAX e REST
REST é um exemplo de uma tecnologia Web 2.0 em evolução. O WCF pode ser configurado para processar dados XML "básicos" que não estão encapsulados em um envelope SOAP. O WCF também pode ser estendido para dar suporte a formatos XML específicos, como ATOM (um padrão RSS popular), e até formatos não XML, como JSON (JavaScript Object Notation).
Extensibilidade
A arquitetura do WCF tem inúmeros pontos de extensibilidade. Se o recurso adicional for necessário, há inúmeros pontos de entrada que permitem que você personalize o comportamento de um serviço. Para obter mais informações sobre os pontos de extensibilidade disponíveis, confira Como estender o WCF.
Integração WCF com outras tecnologias da Microsoft
O WCF é uma plataforma flexível. Devido a essa flexibilidade extrema, o WCF também é usado em vários outros produtos da Microsoft. Ao entender os conceitos básicos do WCF, você terá uma vantagem imediata se também usar um desses produtos.
A primeira tecnologia a ser emparelhada com o WCF foi o WF (Windows Workflow Foundation). Os fluxos de trabalho simplificam o desenvolvimento de aplicativos encapsulando as etapas no fluxo de trabalho como "atividades". Na primeira versão do Windows Workflow Foundation, um desenvolvedor precisava criar um host para o fluxo de trabalho. A próxima versão do Windows Workflow Foundation foi integrada ao WCF. Isso permitia que qualquer fluxo de trabalho fosse hospedado com facilidade em um serviço WCF. Faça isso escolhendo automaticamente o tipo de projeto WF/WCF no Visual Studio 2012 ou posterior.
O Microsoft BizTalk Server R2 também utiliza o WCF como uma tecnologia de comunicação. O BizTalk é criado para receber e transformar dados de um formato padronizado para outro. As mensagens devem ser entregues a sua caixa de mensagens central onde a mensagem pode ser transformada usando um mapeamento restrito ou usando um dos recursos de BizTalk como o mecanismo de fluxo de trabalho. O BizTalk já pode usar o adaptador de LOB (linha de negócios) do WCF para enviar mensagens à caixa de mensagens.
Os recursos de hospedagem do servidor de aplicativos do Windows Server AppFabric foram projetados especificamente para implantar e gerenciar aplicativos que usam o WCF para comunicação. Os recursos de hospedagem incluem opções avançadas de ferramentas e configuração projetadas especificamente para aplicativos habilitados para o WCF.
Os aplicativos de microsserviço são compostos por serviços pequenos e com versão independente e serviços escalonáveis focados no cliente que se comunicam entre si usando protocolos padrão e interfaces bem definidas. Cada microsserviço normalmente encapsula uma logica de negócios simples, que você pode escalar horizontalmente ou parcialmente. Teste, implante e gerencie o microsserviço de forma independente. Equipes menores desenvolvem um microsserviço com base em um cenário de cliente e escolhem as tecnologi