PerSession, PerCall, Single Instance- Gerenciamento de Instâncias WCF

Para desenvolvedores que utilizam WCF como tecnologia associada ao projeto, já devem ter passado por algumas situações em que é analisada diversas vezes a forma de controle dos objetos que são instanciados pelo WCF Server. O framework WCF possui 3(Três) formas de controle de instâncias, neste artigo irei apresentar as três formas, exemplifica-las e no final compara-las.

Para desenvolvedores que utilizam WCF como tecnologia associada ao projeto, já devem ter passado por algumas situações em que é analisada diversas vezes a forma de controle dos objetos que são instanciados pelo WCF Server.

O framework WCF possui 3(Três) formas de controle de instâncias, neste artigo irei apresentar as três formas, exemplifica-las e no final compara-las.

Modo 1: Per call(Por Chamada):

Quando o desenvolvedor configura um serviço WCF como per call, novas instâncias do serviço são criadas para cada método chamado via um cliente proxy WCF.

Fluxo:  O Cliente WCF faz a primeira chamada no método, uma nova instância é criada no servidor para esta chamada. O servidor recebe essa requisição e envia a resposta, feito isso essa instância é destruída pelo Garbage Collector. Caso seja realizada uma nova chamada, o mesmo fluxo é realizado.
Modo 2: Per Session( Por Sessão):

Muito comum em uma aplicação ter que manter o estado entre as chamadas de métodos ou por uma sessão particular. Para este tipo de cenário é necessário configurar o serviço por sessão. No modo per session(por sessão), somente uma instância de um serviço WCF é criado para uma sessão.

Fluxo: O cliente cria o proxy de um serviço WCF e faz uma chamada a um método. A instância do serviço WCF é criada e o método responde a requisição. O cliente faz uma ou diversas chamadas na mesma sessão e a mesma instância a responde. Quando o cliente finalizar a atividade a instância WCF é destruída pelo garbage collector.
Modo 3: Single Instance(Instância Única):

Em alguns casos é necessário criar somente uma única instância para todos os clientes WCF. Para criar uma única instância de um serviço WCF é necessário configurar o serviço WCF como Single(único).

Fluxo: O cliente WCF faz a requisição em um método do serviço WCF. Uma instância do serviço WCF é criada no servidor e não é destruída, a instância é persistida no servidor para outras requisições.
Quando usar  Per call X Per session X Single.
Per Call:

  • Caso haja a necessidade de manter o consumo de memória do servidor em baixo nível.
  • Seu serviço possui recursos intensivos como objetos de de conexão e grande volume de objetos de memória.
  • A escalabilidade é um requisito primário.
  • Suas funções WCF são chamadas em uma única thread.

Per Session:

  • -Caso haja a nacessidade de manter estados entre as chamadas WCF.

Single:

  • Caso haja a necessidade de compartilhar os dados através dos serviços WCF.
  • Neste modo a escalabilidade não é algo levado a rigor.

Implementando as chamadas utilizadas no artigo.
Após criar um Projeto WCF, em sua classe svc.cs, acima da declaração da classe informe o tipo de chamada.

Single instance, per call, per session.

 

 

Dúvidas, sugestões?.

Outras pessoas podem ter as mesmas dúvidas que você, ajude o próximo compartilhando este artigo.

Obrigado pela leitura.

Até a próxima.

www.facebook.com/jucineisantosbsb

@jucinei

www.jucineisantos.com

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s