CORRECÇÃO: O desempenho cai quando chamada de métodos de um ServicedComponent

Traduções deste artigo Traduções deste artigo
ID do artigo: 327782 - Exibir os produtos aos quais esse artigo se aplica.
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Expandir tudo | Recolher tudo

Neste artigo

Sintomas

Quando você faz uma chamada de um AppDomain .NET remoto para um componente do Microsoft .NET que esteja configurado no COM +, você pode enfrentar diminuição de desempenho no AppDomain que iniciou a chamada. Esse problema ocorre somente quando você chama métodos em um ServicedComponent é hospedado por um aplicativo COM + para servidor.

Causa

Quando um aplicativo gerenciado despacha chamadas de método para um ServicedComponent que está hospedado em um aplicativo COM + para servidor, o .NET Framework deve empacotar os parâmetros de método. Para melhorar o desempenho, a camada de empacotamento interna usa um objeto MemoryStream em cache para empacotar e descontrolar os parâmetros. No entanto, o empacotador sempre usa o buffer de MemoryStream total para cada chamada, em vez de passar os dados mínimos necessários.

Porque o fluxo empacotado pode se tornar maior do que o necessário, aplicativos que usam parâmetros grandes ao mesmo tempo podem enfrentar degradação do desempenho para chamadas que usam parâmetros pequenos posteriormente.

Resolução

Uma correção suportada está agora disponível da Microsoft, mas destina-se somente a corrigir o problema descrito neste artigo. Aplique-o somente aos computadores que apresentarem esse problema específico. Pode ser nessa correção testes adicionais. Portanto, se você não tiver sido gravemente afetado por esse problema, a Microsoft recomenda que você aguarde o próximo service pack do .NET Framework que contém essa correção.

Para resolver esse problema imediatamente, contate o Microsoft serviços de suporte para obter a correção. Para obter uma lista completa dos números de telefone do Atendimento Microsoft do e informações sobre os custos de suporte, visite o seguinte site:
http://support.microsoft.com/contactus/?ws=support
Observação : em alguns casos, as taxas cobradas pelas ligações para chamadas de suporte podem ser canceladas se um profissional de suporte da Microsoft determinar que uma atualização específica resolverá o problema. Os custos de suporte normais serão aplicados a questões e problemas que não se qualificam à atualização específica em questão de suporte adicionais.

A versão em inglês dessa correção apresenta os atributos de arquivo (ou posteriores) listados na tabela a seguir. As datas e horas desses arquivos são listadas na acordo hora universal coordenada (UTC). Quando você exibe as informações do arquivo, ele é convertido para a hora local. Para encontrar a diferença entre o UTC e a hora local, use a guia fuso horário na ferramenta Data e hora no painel de controle.
   Date          Time    Version        Size      File name
   ----------------------------------------------------------------------------------
   10-Aug-2002   09:51   1.0.3705.302   208,896   System.EnterpriseServices.dll
   09-Aug-2002   23:23   1.0.3705.302    47,104   System.EnterpriseServices.Thunk.dll
				

Essa correção foi projetada especificamente para ser instalado em um sistema que já tenha o Microsoft .NET Framework Service Pack 1 instalado. Se você deve possui essa correção em um sistema que tenha o Microsoft .NET Framework Service Pack 2 instalado, clique no número de artigo abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
328545INFO: Service Pack 2 classes Hotfix Rollup Package 2

Situação

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados no começo deste artigo.

Mais Informações

Passos para reproduzir o problema

A seguir é mínimo informações relevantes a fim de demonstrar o problema discutido neste artigo. Para obter informações adicionais sobre como criar ServicedComponents, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
306296COMO: Criar um componente de serviço do .NET no Visual translation from VPE for Csharp .NET
Para reproduzir o problema, execute essas etapas:
  1. Use o seguinte código para criar um componente COM +:
    using System;
    using System.Reflection;
    using System.Runtime.CompilerServices;
    using System.EnterpriseServices;
    
    [assembly: AssemblyVersion("1.0.0.0")]
    [assembly: AssemblyKeyFile("ComPlusTest.snk")]
    
    [assembly: ApplicationName("ComPlusTest")]
    [assembly: ApplicationActivation(ActivationOption.Server)]
    
    public class CServer : ServicedComponent
    {
       [AutoComplete]
       public String Exec(byte [] param)
       {
    	return "done";
       }
    }
    					
  2. Use o seguinte código para criar um aplicativo cliente:
    using System;
    
    public class CClient
    {
       public static void Main()
       {
          CServer pObj = new CServer();
          byte [] pLarge = new byte [2000];
          byte [] pSmall = new byte [10];
    
          // method call with large param
          pObj.Exec(pLarge);
    
          // method call with small param
          // takes just as long as the earlier call
          pObj.Exec(pSmall);
    
          pObj.Dispose();
       }
    }
    					
Devido a esse bug, a segunda chamada para CServer.Exec leva, desde que a primeira chamada, embora o parâmetro é menor.

Propriedades

ID do artigo: 327782 - Última revisão: sábado, 26 de outubro de 2013 - Revisão: 3.5
A informação contida neste artigo aplica-se a:
  • Microsoft .NET Framework 1.0 Service Pack 1
  • Microsoft .NET Framework 1.0 Service Pack 2
Palavras-chave: 
kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kbbug kbfix kbnetframe100presp3fix kbqfe KB327782 KbMtpt
Tradução automática
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: 327782

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com