Este é um post disponível para assinantes MVPEste post também está disponível para assinantes da .net Magazine DIGITAL
ou para quem possui Créditos DevMedia. Clique aqui para saber mais!
ou para quem possui Créditos DevMedia. Clique aqui para saber mais!
WCF - Artigo .net Magazine 85
Neste artigo abordaremos um dos assuntos de extrema importância no Windows Communication Foundation - WCF, o gerenciamento de instâncias. Mostraremos os tipos de instâncias existentes, e em quais situações melhor utilizá-las, e em seguida usaremos alguns conceitos, criando uma aplicação.
.net Magazine 85
[Artigo disponível no Leitor Digital DevMedia. Clique aqui para acessá-lo]
> Clique aqui para ler todos os artigos da .net Magazine 85
[Artigo disponível no Leitor Digital DevMedia. Clique aqui para acessá-lo]
> Clique aqui para ler todos os artigos da .net Magazine 85
WCF
Gerenciamento de instâncias
Gerenciamento de instância é uma técnica usada pelo Windows Communication Foundation, que vincula o cliente (Proxy) ao serviço, determinando quais delas lidam com quais requisições. Saber qual técnica usar é muito importante porque aplicativos diferem de suas necessidades como escalabilidade, desempenho, transações e chamadas em filas. No Windows Communication Foundation existem três tipos de instâncias, são elas: PerCall, PerSession e Single. A configuração do modo como será instanciado um serviço é estritamente um detalhe de implementação que não deve transparecer para o cliente de forma alguma. O modo de como será a escolha da instância, será dado em comportamentos (behavior).
Um behavior é um atributo local de um serviço que não afeta sua comunicação, que pode ser definido opcionalmente. Os clientes não precisam saber da existência dos behaviors. O Windows Communication Foundation define três tipos de behaviors: ServiceBehavior, OperationBehavior e EndPointBehavior. No artigo é utilizado o ServiceBehavior, pois esse atributo é usado para configurar o modo de gerenciamento de instâncias. Nele existe uma propriedade InstanceContextMode, que recebe uma enumeração com o mesmo nome. O valor dessa enumeração controla qual o modelo de instância é utilizado: InstanceContextMode.PerSession, InstanceContextMode.PerCall, InstanceContextMode.Single. O ServiceBehaviorAttribute é usado para configurar comportamentos de operação, ou seja, afetam somente a implementação de uma operação em particular. É nesse atributo, que se informam configurações adicionais como sessões, transações e o modelos de instâncias.
PerCall
Quando o serviço é configurado no modo PerCall somente uma instância existe para cada método chamado, ou seja, para cada Proxy instanciado e chamado um método por ele. Uma instância do serviço é criada, não importando sé é o mesmo Proxy ou não, conforme Figura 1.
Assim que o método retornar com o resultado esperado a instância é liberada da memória. Descartar a instância é um item muito importante a se lembrar, e que se o serviço implementar a interface IDisposable, o Windows Communication Foundation automaticamente chamará o método Dispose(), permitindo que se execute qualquer operação de finalização que seja necessária antes de descartá-lo. No modelo de instância PerCall o Dispose é executado na mesma thread que executou a chamada ao método original.
Ter somente uma instância por chamada, realocar ou conectar seus recursos em cada chamada combina muito bem com programação transacional, uma vez que facilita a tarefa de garantir consistência com os estados da instância (para saber mais sobre transação no WCF veja a edição 82). Outro beneficio é que eles podem trabalhar em conjunto com chamadas desconectadas enfileiradas, porque facilitam o mapeamento de instâncias de serviços para mensagens enfileiradas.
"
Este é um post disponível para assinantes MVP
Gerenciamento de instâncias
Gerenciamento de instância é uma técnica usada pelo Windows Communication Foundation, que vincula o cliente (Proxy) ao serviço, determinando quais delas lidam com quais requisições. Saber qual técnica usar é muito importante porque aplicativos diferem de suas necessidades como escalabilidade, desempenho, transações e chamadas em filas. No Windows Communication Foundation existem três tipos de instâncias, são elas: PerCall, PerSession e Single. A configuração do modo como será instanciado um serviço é estritamente um detalhe de implementação que não deve transparecer para o cliente de forma alguma. O modo de como será a escolha da instância, será dado em comportamentos (behavior).
Um behavior é um atributo local de um serviço que não afeta sua comunicação, que pode ser definido opcionalmente. Os clientes não precisam saber da existência dos behaviors. O Windows Communication Foundation define três tipos de behaviors: ServiceBehavior, OperationBehavior e EndPointBehavior. No artigo é utilizado o ServiceBehavior, pois esse atributo é usado para configurar o modo de gerenciamento de instâncias. Nele existe uma propriedade InstanceContextMode, que recebe uma enumeração com o mesmo nome. O valor dessa enumeração controla qual o modelo de instância é utilizado: InstanceContextMode.PerSession, InstanceContextMode.PerCall, InstanceContextMode.Single. O ServiceBehaviorAttribute é usado para configurar comportamentos de operação, ou seja, afetam somente a implementação de uma operação em particular. É nesse atributo, que se informam configurações adicionais como sessões, transações e o modelos de instâncias.
PerCall
Quando o serviço é configurado no modo PerCall somente uma instância existe para cada método chamado, ou seja, para cada Proxy instanciado e chamado um método por ele. Uma instância do serviço é criada, não importando sé é o mesmo Proxy ou não, conforme Figura 1.
Assim que o método retornar com o resultado esperado a instância é liberada da memória. Descartar a instância é um item muito importante a se lembrar, e que se o serviço implementar a interface IDisposable, o Windows Communication Foundation automaticamente chamará o método Dispose(), permitindo que se execute qualquer operação de finalização que seja necessária antes de descartá-lo. No modelo de instância PerCall o Dispose é executado na mesma thread que executou a chamada ao método original.
Ter somente uma instância por chamada, realocar ou conectar seus recursos em cada chamada combina muito bem com programação transacional, uma vez que facilita a tarefa de garantir consistência com os estados da instância (para saber mais sobre transação no WCF veja a edição 82). Outro beneficio é que eles podem trabalhar em conjunto com chamadas desconectadas enfileiradas, porque facilitam o mapeamento de instâncias de serviços para mensagens enfileiradas.
"
A exibição deste artigo foi interrompida.
Este é um post disponível para assinantes MVPEste post também está disponível para assinantes da .net Magazine DIGITAL
ou para quem possui Créditos DevMedia. Clique aqui para saber mais!
ou para quem possui Créditos DevMedia. Clique aqui para saber mais!
Fernando Rodrigues Da Silva
MCTS - Pós graduado em Engenharia de Software. Trabalha com a plataforma .NET há 9 anos, atualmente trabalha na FCamara.
O que você achou deste post?
Cursos relacionados
Publicidade



