Arquitetura do Windows Communication Foundation

O gráfico a seguir ilustra as principais camadas da arquitetura do WCF (Windows Communication Foundation).

Arquitetura do WCF

The WCF Architecture

Contratos e descrições

Os contratos definem vários aspectos do sistema de mensagens. O contrato de dados descreve todos os parâmetros que compõem cada mensagem que um serviço pode criar ou consumir. Os parâmetros de mensagem são definidos por documentos XSD (linguagem de definição de esquema XML), permitindo que qualquer sistema que entenda XML processe os documentos. O contrato de mensagem define partes específicas de mensagem usando protocolos SOAP e permite um controle mais refinado sobre as partes da mensagem quando a interoperabilidade exige tal precisão. O contrato de serviço especifica as assinaturas de método reais do serviço e é distribuído como uma interface em uma das linguagens de programação com suporte, como Visual Basic ou Visual C#.

As políticas e as associações estipulam as condições necessárias para se comunicar com um serviço. Por exemplo, a associação deve (no mínimo) especificar o transporte usado (por exemplo, HTTP ou TCP) e uma codificação. As políticas incluem requisitos de segurança e outras condições que devem ser atendidas para se comunicar com um serviço.

Tempo de execução do serviço

A camada de runtime do serviço contém os comportamentos que ocorrem somente durante a operação real do serviço, ou seja, os comportamentos de runtime do serviço. A limitação controla quantas mensagens são processadas, o que poderá variar se a demanda pelo serviço aumentar até um limite predefinido. Um comportamento de erro especifica o que acontece quando ocorre um erro interno no serviço, por exemplo, controlando quais informações são comunicadas ao cliente. (Informações em excesso podem dar a um usuário mal-intencionado vantagem na montagem de um ataque.) O comportamento de metadados rege como e se metadados são disponibilizados para o mundo exterior. O comportamento da instância especifica quantas instâncias do serviço podem ser executadas (por exemplo, um singleton especifica apenas uma instância para processar todas as mensagens). O comportamento da transação permite a reversão de operações se ocorrer uma falha. O comportamento de expedição é o controle de como uma mensagem é processada pela infraestrutura do WCF.

A extensibilidade permite a personalização de processos de runtime. Por exemplo, a inspeção de mensagens é a instalação para inspecionar partes de uma mensagem, e a filtragem de parâmetros permite que ações predefinidas ocorram com base em filtros que atuam em cabeçalhos de mensagem.

Mensagens

A camada de mensagens é composta por canais. Um canal é um componente que processa uma mensagem de alguma forma, por exemplo, autenticando a mensagem. Um conjunto de canais também é conhecido como pilha de canais. Os canais operam em mensagens e em cabeçalhos de mensagens. Isso é diferente da camada de runtime do serviço, que se preocupa principalmente com o processamento do conteúdo dos corpos das mensagens.

Há dois tipos de canais: canais de protocolo e canais de transporte.

Os canais de transporte leem e gravam mensagens da rede (ou de algum outro ponto de comunicação com o mundo exterior). Alguns transportes usam um codificador para converter mensagens (que são representadas como Infosets XML) de e para a representação de fluxo de bytes usada pela rede. Exemplos de transportes são HTTP, pipes nomeados, TCP e MSMQ. Exemplos de codificações são XML e binário otimizado.

Os canais de protocolo implementam protocolos de processamento de mensagens, geralmente lendo ou gravando cabeçalhos adicionais na mensagem. Exemplos desses protocolos incluem WS-Security e WS-Reliability.

A camada de mensagens ilustra os possíveis formatos e padrões de troca dos dados. WS-Security é uma implementação da especificação WS-Security que habilita a segurança na camada de mensagem. O canal de mensagens WS-Reliable habilita a garantia de entrega da mensagem. Os codificadores apresentam uma variedade de codificações que podem ser usadas para atender às necessidades da mensagem. O canal HTTP especifica que o Protocolo de Transporte HyperText seja usado para entrega de mensagens. De modo semelhante, o canal TCP especifica o protocolo TCP. O canal Fluxo de Transação rege os padrões de mensagem das transações. O canal Pipe Nomeado habilita a comunicação entre processos. O canal MSMQ habilita a interoperação com aplicativos MSMQ.

Hospedagem e ativação

Em sua forma final, um serviço é um programa. Assim como outros programas, um serviço deve ser executado em um executável. Isso é conhecido como um serviço auto-hospedado.

Os serviços também podem ser hospedados ou executados em um executável gerenciado por um agente externo, como IIS ou WAS (Serviço de Ativação do Windows). O WAS permite que aplicativos WCF sejam ativados automaticamente quando implantados em um computador que executa o WAS. Os serviços também podem ser executados manualmente como executáveis (arquivos .exe). Um serviço também pode ser executado automaticamente como um serviço do Windows. Componentes COM+ também podem ser hospedados como serviços WCF.

Confira também