Israel Aéce

Microsoft MVP, MCP, MCAD, MCTS, MCPD e MCT

My Links

Blog Stats

Archives

Post Categories

Links

Login

Pool de Objetos - COM+

Não sou lá um especialista em COM+, mas leio sobre. Aliás, é algo que me tenta, ou seja, estou obsecado para fazer um projeto que utilize componentes no COM+ para trabalhar com Pool de Objetos, Transações, entre outras coisas que o mesmo nos oferece, mas até então não tive oportunidade para isto. :'(

Estou nas horas vagas lendo um livro de Juval Löwy chamado COM + e .NET onde é mostrado como criar e manter componentes .NET no COM+, e lendo sobre Pooling de Objeto COM+, algo que achei interessante foi dito, e gostaria de aqui expor:

O objeto é retornado para o pool quando o cliente libera a sua referencia a ele. Sendo assim, sabemos que objetos gerenciados utilizam a chamada “coleta de lixo” (Garbage Collector), e com isso, o objeto gerenciado só retorna ao pool quando este lixo é coletado.

Isso pode ser de certa forma prejudicial, pois poderá haver um retardo entre o momento em que este objeto não é mais necessário até o momento em que o mesmo retorna ao pool, pois lembre-se que o “coletor de lixo” tem um período/tempo para passar, pois ele não sai varrendo o nosso objeto assim que nós o descartamos. Agora o que de mais interessante achei: como já sabemos, um objeto é colocado em pool porque a sua criação é custosa e se este objeto gastar um tempo esperando que o “coletor de lixo” o recolha, então o aplicativo quase não se beneficia do pool de objetos.

Vi que existem duas maneiras de resolver este problema. A primeira é utilizando JITA e a segunda já requer a participação do cliente, pois como todo componente .NET que tira proveito dos serviços COM+ precisa derivar da classe base ServicedComponent que tem um método público estático chamado DisposeObject(), definido como:

public static void DisposeObject(ServicedComponent sc);

Assim que continuar os testes e a leitura por aqui, dou o feedback do uso do método DisposeObject() e sobre o JITA. ;) Mas claro que se alguém quiser contribuir, fico/ficaremos grato ;)

posted on Monday, August 16, 2004 9:01 PM

Feedback

# re: Pool de Objetos - COM+ 8/17/2004 7:50 AM Nuno Godinho

Sobre essa questão aquilo que te posso dizer é em 1º lugar que o "Garbage Collector" funciona realmente muito bem, pois actua quase imediatamente, em 2º lugar, para que o processo seja mais rápido podes utilizar o método Dispose() que aquilo que faz é retornar imediatamente o objecto à pool.
Sobre o JITA (Just-In-Time Activation) a sua vantagem e a razão da sua utilização é devido a podermos fazer uma utilização muito mais performante dos componentes de COM+, uma vez que conseguimos que esses mesmos componentes sejam activados e desactivados à medida que chamamos os objectos, tornando a programação stateless. Podes dar uma vista de olhos no url seguinte http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cossdk/htm/pgservices_jitactivation_74by.asp.
Espero ter ajudado.

Title  
Name  
Url
Box Code
Protected by FormShield
Comments