Diretrizes de design para componentes do Visual Basic em ASP

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 243548
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Sumário
Este artigo fornece vários as diretrizes específicas e recomendações para criar componentes COM Visual Basic para melhorar o desempenho e escalabilidade em Active Server Pages (ASP).
Mais Informações
Em geral, as seguintes recomendações comprovaram resolver vários problemas, bem como otimizar a escalabilidade e desempenho para componentes do Visual Basic em Active Server Pages (ASP):
  • Não armazene objetos de thread Apartment de Visual Basic [Single-Threaded Apartment (STA)] no escopo Session ou Application. Armazenar esses objetos no escopo de sessão faz com que futuras solicitações para o objeto por sessão para ser manipulado pelo mesmo thread que criou o objeto.
  • Crie componentes sem monitoração de estado. Preferencialmente, informações de estado devem ser armazenadas e recuperadas de um banco de dados. Como alternativa, você pode passar estado solicitações de informações através de cookies ou ASP.Para obter informações adicionais, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
    175167Como armazenar o estado em aplicativos ASP
  • Para componentes do VB destinados a ambientes multithread, por exemplo, IIS, MTS ou COM +, evite usar variáveis de nível de módulo em módulos .bas, porque cada segmento possui sua própria cópia e somente objetos ou solicitações no mesmo thread pode compartilhá-los. Da perspectiva de um aplicativo ’s, isso causa um comportamento imprevisível porque cada solicitação de usuário potencialmente pode ser tratada por um thread diferente, que deve conter um valor diferente para a variável. Consulte os seguintes recursos para obter mais informações:
  • Não use objetos Single-Threaded Visual Basic em ASP.
  • Não usar componentes que dependem de interface de usuário elementos.
  • Componentes não devem fazer suposições sobre o usuário que está sendo executada em para evitar problemas com acesso de área de trabalho e do Registro. Como os componentes executados em área de trabalho da sistema, não confie em chaves do Registro armazenadas em HKEY_CURRENT_USER. Se você precisar usar o registro, armazene valores em HKEY_LOCAL_MACHINE. Um exemplo comum desse problema é quando você tenta imprimir em ASP.Para obter informações adicionais, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
    184291Objetos COM falham imprimir quando chamado a partir do ASP
  • Não use as funções de VBScript CreateObject e GetObject em scripts do lado do servidor. Use Server.CreateObject em vez disso, para que esse ASP pode controlar a instância do objeto. Objetos criados por CreateObject ou GetObject não podem acessar objetos ASP incorporados e não podem participar de transações.
  • Você não deve colocar código nos eventos Class_Initialize e Class_Terminate de um componente Microsoft Transaction Server (MTS) que tenta acessar o objeto ou seu objeto de contexto correspondente. O ambiente de tempo de execução do Visual Basic chama Class_Initialize antes do objeto e seu contexto são ativados, portanto, quaisquer operações Class_Initialize tenta executar em seu contexto de objeto ou o objeto falhar. Da mesma forma, o objeto e seu contexto são desativados antes Class_Terminate é chamado, portanto, operações que esse método tenta sobre o objeto e seu contexto também falhar. Você não deve definir um ponto de interrupção no evento Class_Terminate de um componente MTS. Quando o depurador atinge o ponto de interrupção, ele tenta ativar o objeto, uma tentativa falha e faz com que Visual Basic para parar.
  • Parâmetros ByRef devem ser passados como Variant ao ByVal parâmetros podem ser tipos de dados específicos.Para obter informações adicionais, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
    197956Passar parâmetros por referência a um objeto VB COM
  • Não registrar seu componente com MTS a menos que você precise transações. ObjectContext pode ser caro em termos de desempenho.
  • Não use métodos OnStartPage e OnEndPage para acessar o intrinsics ASP. Esses métodos são fornecidos para suporte legado com Internet Information Server (IIS) 3. Use ObjectContext. No entanto, se você tiver um EXE ActiveX, em seguida, você não pode usar o ObjectContext e deve usar OnStartPage.
  • Execute seus aplicativos da Web em um espaço de memória separado, ao executar o componente em um pacote de biblioteca. Isso ajuda com a tolerância a falhas ao minimizar a sobrecarga cara de empacotamento.
  • Se você for em máquinas ou processos, passe os parâmetros de ByVal para seu componente do Visual Basic. Isso minimiza a sobrecarga de empacotamento.
  • Inclua tratamento em cada método de erro robusto. Use App.LogEvent do Visual Basic para registrar as seguintes informações para o log de eventos quando ocorre um erro:
    • Err.Number, Err.Description, Err.Source
    • Usuário atual (use a API GetUserName())
    • Thread ID (use a API GetCurrentThreadId())
    • O nome do método onde ocorreu o erro.
    • Todos os argumento valores em para o método.
    • O tempo que o erro ocorreu (usar o GetTickCount() API).
    • O número de linha de código do fonte usando ERL.
  • Certifique-se Unattended Execution está definido para ambos os EXEs ActiveX e DLLs de DLLs. ActiveX também devem ter seus Threading Model definido como Apartment thread e reter na memória selecionado.
  • Durante o desenvolvimento, use o Project compatibilidade e selecione compatibilidade binária para lançamento.
Referências
Para obter mais informações, visite os seguintes sites da MSDN:

Agilidade em componentes de servidor
http://msdn.microsoft.com/en-us/library/ms951557.aspx

Melhor escalabilidade e desempenho do servidor
http://msdn.microsoft.com/en-us/library/ms951773.aspx
Para obter informações adicionais, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
264957DLL do Visual Basic tem vazamentos de memória e falhas no COM + se "Manter na memória" não está definida

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 243548 - Última Revisão: 12/05/2015 16:15:11 - Revisão: 5.2

Microsoft Active Server Pages 4.0, Microsoft Visual Basic 5.0 Learning Edition, Microsoft Visual Basic 6.0 Learning Edition, Microsoft Visual Basic 5.0 Professional Edition, Microsoft Visual Basic 6.0 Professional Edition, Microsoft Visual Basic 5.0 Enterprise Edition, Microsoft Visual Basic Enterprise Edition for Windows 6.0

  • kbnosurvey kbarchive kbmt kbaspobj kbinfo kbperformance kbscalability kbstate KB243548 KbMtpt
Comentários