CORRECÇÃO: Desempenho degrada-se quando contactar o métodos de um ServicedComponent

Traduções de Artigos Traduções de Artigos
Artigo: 327782 - Ver produtos para os quais este artigo se aplica.
Este artigo foi arquivado. Este artigo é oferecido "tal como está" e deixará de ser actualizado.
Expandir tudo | Reduzir tudo

Nesta página

Sintomas

Quando fizer uma chamada de um domínio de aplicação .NET remoto para um componente do Microsoft .NET que esteja configurado no COM +, poderá detectar abrandamento do desempenho no domínio de aplicação que iniciou a chamada. Este problema ocorre apenas quando invocar métodos num ServicedComponent é hospedado por uma aplicação de servidor do COM +.

Causa

Quando uma aplicação gerida distribui chamadas de método para um ServicedComponent hospedado uma aplicação de servidor do COM +, o .NET Framework tem é empacotar referências de parâmetros de método. Para melhorar o desempenho, a camada de empacotamento de referências interna utiliza um objecto MemoryStream em cache para organizar e desempacotar os parâmetros. No entanto, o empacotador de referências utiliza sempre a memória intermédia MemoryStream de total para cada chamada, em vez de transmitir apenas os dados mínimos necessários.

Uma vez que a sequência tendo sido empacotado com referências pode ficar maior do que necessário, aplicações que utilizam parâmetros grandes ao mesmo tempo podem ocorrer degradação do desempenho para chamadas que utilizam parâmetros pequenos mais tarde.

Resolução

Agora é disponibilizada pela Microsoft uma correcção suportada, mas destina-se apenas a corrigir o problema descrito neste artigo. Aplique-a apenas em computadores que tenham este problema específico. Esta correcção poderá ser submetida a testes adicionais. Por conseguinte, se não estiver a ser gravemente afectado por este problema, a Microsoft recomenda que aguarde pelo próximo service pack do .NET Framework que contenha esta correcção.

Para resolver este problema imediatamente, contacte a produtos da Microsoft apoio para obter a correcção. Para obter uma lista completa de números de telefone do suporte técnico da Microsoft e informações sobre os custos de suporte, visite o seguinte Web site da Microsoft:
http://support.microsoft.com/contactus/?ws=support
Nota : em casos especiais, os custos normalmente inerentes às chamadas de suporte poderão ser anulados se um técnico de suporte da Microsoft determinar que uma actualização específica resolverá o problema. Os custos de suporte normais se aplicarão perguntas de suporte adicionais e problemas que não se enquadrem na atualização específica em questão.

A versão inglesa desta correcção tem os atributos de ficheiro (ou posteriores) listados na seguinte tabela. As datas e horas destes ficheiros são indicadas no formato de universal hora (UTC) coordenada Coordinated. Quando visualiza as informações do ficheiro, é convertido para a hora local. Para determinar a diferença entre a UTC e a hora local, utilize o separador fuso horário na ferramenta Data e hora no painel de controlo.
   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
				

Esta correcção foi concebida especificamente para ser instalado num sistema que já tenha o Microsoft .NET Framework Service Pack 1 instalado. Se tem tiver esta correcção num sistema com o Microsoft .NET Framework Service Pack 2 instalado, clique no número de artigo existente abaixo para visualizar o artigo na base de dados de conhecimento da Microsoft:
328545INFO: Pacote de conjunto de correcções do .NET Framework 2 pós-Service Pack 2

Ponto Da Situação

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados no início deste artigo.

Mais Informação

Passos para reproduzir o comportamento

Segue-se informações mínimas relevantes que demonstram o problema é abordado neste artigo. Para obter informações adicionais sobre como criar ServicedComponents, clique no número de artigo existente abaixo para visualizar o artigo na base de dados de conhecimento da Microsoft:
306296COMO: Criar um componente do serviço .NET no Visual C# .NET
Para reproduzir o problema, siga estes passos:
  1. Utilize o seguinte código para criar um componente do 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. Utilize o seguinte código para criar uma aplicação 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 este erro, a segunda chamada para CServer.Exec demora, desde que o primeiro ligar, embora o parâmetro seja mais pequeno.

Propriedades

Artigo: 327782 - Última revisão: 3 de fevereiro de 2014 - 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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 327782

Submeter comentários

 

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