USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Dicas

  ASP - Active Server Page    (Miscelâneas)

Título da Dica:  Utilizando componentes Free Threaded com ASP
Postada em 1/10/2003 por ~Ð@®£@Ñ            
Como muitos de vocês sabem guardar componentes em sessão ou aplicação é uma prática não recomendada. Por que ?

O IIS cria um pool de threads para atender as requisições dos clients. Quando um client faz uma requisição ele é atendido pela primeira thread disponível.

Quando um componente é inserido em ambiente de sessão ou aplicação isso não mais pode acontecer. O client só poderá ser atendido pela mesma thread, mesmo que existam outras disponíveis. Isso gera um gargalo de respostas no servidor que tende a derruba-lo.

No caso do ambiente de aplicação isso é ainda um pouco pior que com o ambiente de sessão, pois nesse caso o ASP cria uma thread em separado para executar o componente, o que gera a necessidade de marshaling para transferencia de parâmetros de uma thread para outra.

No Windows 2000/COM+ surgiu um novo Threading Model para os componentes : Free Threaded. Um componente Free Threaded permite que o IIS faça o pool de threads e atenda ao client utilizando qualquer thread, não necessariamente a thread original.

Componentes Free Threaded não podem ser criados no VB, apenas no C++. Porém temos uma novidade importante : O Recordset do ADO pode ser configurado para rodar como Free Threaded. Isso significa que podemos colocar em sessão o recordset do ADO desde que o servidor esteja devidamente configurado para isso.

Para configurar o registry para que o ADO seja free threaded é necessário executar um bat chamado makfre15.bat que encontra-se normalmente em \Program Files\Common\System\ADO.

Outra questão importante é que o recordset inserido em sessão precisa estar desconectado. Resumindo :

1) Objetos free-threaded podem ser inseridos em sessão
2) O recordset do ADO pode ser marcado como free-threaded
3) O recordset do ADO precisa estar desconectado para ser colocado em sessão
4) ISSO NÃO FUNCIONA COM ACCESS
5) Objetos connection não podem ser colocados em sessão ou aplicação.

Mesmo sabendo que o Recordset pode ser colocado em sessão evite exageros, você poderá estar sobrecarregando a memória do servidor.
 


CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página