WCF - Arquitetura
O WCF tem uma arquitetura em camadas que oferece amplo suporte para o desenvolvimento de vários aplicativos distribuídos. A arquitetura é explicada em detalhes abaixo.
Contratos
A camada de contratos fica próxima à camada de aplicativo e contém informações semelhantes às de um contrato do mundo real que especifica a operação de um serviço e o tipo de informação acessível que ele fará. Os contratos são basicamente de quatro tipos discutidos abaixo em breve -
Service contract - Este contrato fornece informações para o cliente e também para o mundo exterior sobre as ofertas do terminal e os protocolos a serem usados no processo de comunicação.
Data contract- Os dados trocados por um serviço são definidos por um contrato de dados. Tanto o cliente quanto o serviço devem estar de acordo com o contrato de dados.
Message contract- Um contrato de dados é controlado por um contrato de mensagem. Ele faz principalmente a customização da formatação de tipo dos parâmetros de mensagem SOAP. Aqui, deve ser mencionado que o WCF emprega o formato SOAP para fins de comunicação. SOAP significa Simple Object Access Protocol.
Policy and Binding- Existem certas pré-condições para a comunicação com um serviço, e tais condições são definidas por política e contrato vinculativo. Um cliente precisa seguir este contrato.
Tempo de execução do serviço
A camada de tempo de execução do serviço está logo abaixo da camada de contratos. Ele especifica os vários comportamentos de serviço que ocorrem durante o tempo de execução. Existem muitos tipos de comportamentos que podem sofrer configuração e entrar no tempo de execução do serviço.
Throttling Behavior - Gerencia o número de mensagens processadas.
Error Behavior - Define o resultado de qualquer ocorrência de erro interno do serviço.
Metadata Behavior - Especifica a disponibilidade de metadados para o mundo externo.
Instance Behavior - Define o número de instâncias que precisam ser criadas para disponibilizá-las para o cliente.
Transaction Behavior - Permite uma mudança no estado da transação em caso de qualquer falha.
Dispatch Behavior - Controla a maneira como uma mensagem é processada pela infraestrutura do WCF.
Concurrency Behavior - Controla as funções que são executadas paralelamente durante uma comunicação cliente-servidor.
Parameter Filtering - Apresenta o processo de validação de parâmetros para um método antes de ser invocado.
Mensagens
Essa camada, composta por diversos canais, trata principalmente do conteúdo da mensagem a ser comunicada entre dois terminais. Um conjunto de canais forma uma pilha de canais e os dois principais tipos de canais que compõem a pilha de canais são os seguintes -
Transport Channels - Esses canais estão presentes na parte inferior de uma pilha e são responsáveis pelo envio e recebimento de mensagens usando protocolos de transporte como HTTP, TCP, Ponto a Ponto, Pipes Nomeados e MSMQ.
Protocol Channels - Presente no topo de uma pilha, esses canais também conhecidos como canais em camadas, implementam protocolos de nível de fio modificando mensagens.
Ativação e Hospedagem
A última camada da arquitetura WCF é o local onde os serviços são realmente hospedados ou podem ser executados para fácil acesso pelo cliente. Isso é feito por vários mecanismos discutidos abaixo em breve.
IIS- IIS significa Internet Information Service. Ele oferece uma infinidade de vantagens usando o protocolo HTTP por um serviço. Aqui, não é necessário ter o código do host para ativar o código do serviço; em vez disso, o código de serviço é ativado automaticamente.
Windows Activation Service- Isso é conhecido popularmente como WAS e vem com o IIS 7.0. A comunicação baseada em HTTP e não HTTP é possível aqui usando os protocolos TCP ou Namedpipe.
Self-hosting- Este é um mecanismo pelo qual um serviço WCF fica auto-hospedado como um aplicativo de console. Esse mecanismo oferece uma flexibilidade incrível em termos de escolha dos protocolos desejados e configuração do próprio esquema de endereçamento.
Windows Service - Hospedar um serviço WCF com este mecanismo é vantajoso, pois os serviços então permanecem ativados e acessíveis ao cliente devido a nenhuma ativação em tempo de execução.