Oprava: Při volání metody ServicedComponent snižuje výkon

Překlady článku Překlady článku
ID článku: 327782 - Produkty, které se vztahují k tomuto článku.
Tento článek byl archivován. Je nabízen v takovém stavu, v jakém je, a nebude již nadále aktualizován.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Příznaky

Když volání od vzdáleného AppDomain .NET součást Microsoft .NET, který je konfigurován v COM +, zaznamenat zpomalení výkonu v AppDomain, který inicioval volání. K tomuto problému dochází pouze při vyvolání metody ServicedComponent hostitelem je server aplikace COM +.

Příčina

Při volání metody ServicedComponent je hostitelem serveru aplikace COM + rozešle spravované aplikace, musí parametry metody zařazování .NET Framework. Zlepšení výkonu používá interní zařazovacího vrstvy mezipaměti objekt MemoryStream zařazování a parametry vyřazení. Však zařazováním vždy používá úplnou MemoryStream vyrovnávací paměti pro každé volání namísto předávání pouze minimální požadovaná data.

Protože zařazené proudu se může stát větší než potřebné, aplikací, které používají velké parametry najednou setkat snížení výkonu volání malé parametry použít později.

Řešení

Společnost Microsoft má nyní k dispozici podporovanou opravu, která je určena pouze k odstranění problému popsaného v tomto článku. Použijte ji pouze v počítačích, ve kterých dochází k tomuto konkrétnímu problému. Tato oprava pravděpodobně projde dalším testováním. Doporučuje proto, pokud není použití tento problém, společnost Microsoft počkat na další aktualizaci .NET Framework service pack, která obsahuje tuto opravu.

Potřebujete-li odstranit tento problém okamžitě, obraťte se na služby technické podpory společnosti Microsoft, kde můžete tuto opravu získat. Úplný seznam telefonních čísel podpory pro produkty společnosti Microsoft a informace o cenách podpory naleznete na následujícím webu společnosti Microsoft:
http://support.microsoft.com/contactus/?ws=support
Poznámka: ve zvláštních případech mohou být poplatky, které jsou třeba obvykle zaplatit za telefonní hovory stornovány, jestliže Microsoft pracovník Určuje, že konkrétní aktualizace vyřeší váš problém. Další dotazy a žádosti o podporu, které se netýkají konkrétní aktualizace, podléhají běžným sazbám za poskytnutí podpory.

Anglická verze této opravy má následující atributy souborů (nebo novější). Data a časy jednotlivých souborů jsou uvedeny ve formátu UTC (Coordinated Universal Time). Pokud zobrazíte informace o souboru, bude převedena na místní čas. Rozdíl mezi místním ČASEM a najít, použijte kartu časové pásmo v ovládacím panelu Datum a čas.
   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
				

Tato oprava je určena konkrétně k nainstalován v systému již má Microsoft .NET Framework Service Pack 1. Tato oprava musí mít v systému Microsoft .NET Framework Service Pack 2 nainstalován, klepněte na článek číslo článku databáze Microsoft Knowledge Base:
328545INFORMACE: Post-Service Pack 2 .NET Framework Hotfix Rollup Package 2

Prohlášení

Společnost Microsoft potvrzuje, že se jedná o problém v produktech této společnosti, které jsou uvedeny na začátku tohoto článku.

Další informace

Kroky pro reprodukci tohoto chování

Následující je minimální informace relevantní demonstrating potíže popisované v tomto článku. Další informace o vytvoření ServicedComponents klepněte na článek číslo článku databáze Microsoft Knowledge Base:
306296Vytvoření komponenty obsluhované .NET v Visual C# .NET
Problém lze reprodukovat následujícím způsobem:
  1. Vytvoření součásti COM + pomocí následující kód:
    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. Vytvoření aplikace klient použít následující kód:
    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();
       }
    }
    					
Kvůli této chybě druhé volání CServer.Exec trvá jako první volání, ačkoli parametr je menší.

Vlastnosti

ID článku: 327782 - Poslední aktualizace: 2. února 2014 - Revize: 3.5
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft .NET Framework 1.0 Service Pack 1
  • Microsoft .NET Framework 1.0 Service Pack 2
Klíčová slova: 
kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kbbug kbfix kbnetframe100presp3fix kbqfe KB327782 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku: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