Dando continuidade ao post anterior “Iniciando com WCF”, vamos ver hoje um pouco sobre a arquitetura WCF.

A figura 1 mostra a arquitetura principal do Windows Communication Foundation. Vamos ver cada item par que você possa começar a se familiarizar com o WCF.

 

wcf_02

Figura 1 – Arquitetura WCF

 

Contracts

O contrato expõe quais membros de uma classe serão visíveis. Através de interfaces podemos definir um contrato entre um serviço e as aplicações que irão consumí-lo, expondo somente os métodos desejados.

O WCF conta com os seguintes tipos de contratos:

  • Service Contract – Um contrato para um serviço. Define os detalhes do serviço, e será utilizado na interface de contrato.
  • Operational Contract – Define uma operação individual, e será aplicado na assinatura dos métodos da interface de contrato.
  • Data Contract – Define a serialização para objetos complexos. Esta propriedade necessita da inclusão do namespace System.Runtime.Serialization.
  • Message Contract – Este contrato descreve a mensagem SOAP completa.
  • Fault Contract – Utilizado para documentar erros no WCF.

Policies and Binding – Especifica as condições que serão requeridas para a comunicação, como exemplo podemos destacar os requisitos de segurança a serem utilizados na comunicação com o serviço.

Os contratos do WCF são utilizados como propriedades, podendo ser atribuído a classes e interfaces.

 

Service Runtime

Ele contém os comportamentos que ocorrem durante a execução do serviço.

– Throttling Behavior: controla quantas mensagens são processadas.
– Error Behavior: especifica um erro interno ocorrido no serviço.
– Metadata Behavior: informa como e se os metadados estarão disponíveis.
– Instance Behavior: especifica quantas instâncias do serviço deverão ser criadas durante a execução do serviço.
– Transaction Behavior: permite a reversão de operações caso uma falha venha a ocorrer.
– Dispatch Behavior: controla como uma mensagem é processada pela infra-estrutura do WCF

 

Messaging

A camada Message é composta de Canais. Canais são componentes que fazem o processamento das mensagens, por exemplo, autenticando uma mensagem.

Um conjunto de Canais é conhecido como Channel Stack. Os canais são o núcleo para o envio e recebimento de mensagens para um EndPoint.

Existem dois tipos de canais:

– Transport Channels: realiza o envio/ recebimento de mensagens pela rede. Ex.: HTTP, TCP e MSMQ.

– Protocol Channels: implementa o protocolo SOAP possibilitando a modificação da mensagem. Ex.: WS-Security e WS-Reliability.

 

Activation and Hosting

Para que um serviço possa ser consumido ele deve estar ativado e hospedado. No caso do WCF, este pode ser hospedado de diversas formas como:

  • IIS – Internet Information Service: provê várias vantagens como controle do serviço. Porém só pode ser utilizado o protocolo HTTP para o tráfego de informações.
  • Windows Activation Service  – (WAS)
    É uma forma mais atual de ser ativar um serviço, foi incorporado ao IIS 7. Trabalha com os seguinte protocolos: TCP e Named Pipes.
  • Self-Hosting

    WCF Service pode ser hospedado também em um aplicativo do tipo Console Application, Windows Form ou aplicações gráficas WPF.

  • Windows Service

    WCF também pode ser hospedado em um Serviço do Windows onde você pode ter o controle do aplicativo pelo Service Control  Manager (SCM).

Como podem ver o WCF nos dá uma flexibilidade muito grande quanto a forma de hospedagem o que nos abre um enorme leque de possibilidades.

 

Aguardo vocês no próximo post!!

 

Enjoy!