FIX: Prestazioni peggiorano quando si chiama metodi di un ServicedComponent

Traduzione articoli Traduzione articoli
Identificativo articolo: 327782 - Visualizza i prodotti a cui si riferisce l?articolo.
Questo articolo è stato archiviato. L?articolo, quindi, viene offerto ?così come è? e non verrà più aggiornato.
Espandi tutto | Chiudi tutto

In questa pagina

Sintomi

Quando si esegue una chiamata da un AppDomain .NET remoto a un componente di Microsoft .NET è configurata in COM +, potrebbero verificarsi un rallentamento delle prestazioni nel dominio di applicazione che ha avviato la chiamata. Questo problema si verifica solo quando si richiama metodi su un ServicedComponent ospitato da un'applicazione server COM +.

Cause

Quando un'applicazione gestita invia le chiamate di metodo un ServicedComponent ospitato in un'applicazione server COM +, .NET Framework deve eseguire il marshalling i parametri del metodo. Per migliorare le prestazioni, il livello di marshalling interno utilizza un oggetto MemoryStream memorizzato nella cache per effettuare il marshalling e unmarshalling i parametri. Tuttavia, il gestore di marshalling utilizza sempre il buffer di MemoryStream completo per ogni chiamata, invece di passare solo i dati richiesti minimi.

Poiché il flusso sul quale è stato eseguito il marshalling può diventare maggiore del necessario, le applicazioni che utilizzano parametri di grandi dimensioni in una sola volta rilevino un degrado delle prestazioni per le chiamate che utilizzano parametri di piccole dimensioni in un secondo momento.

Risoluzione

È disponibile una correzione supportata da Microsoft, che è tuttavia destinata esclusivamente alla correzione del problema descritto in questo articolo. Utilizzarla solo nei computer in cui si verifica questo problema specifico. È possibile che su questa correzione vengano eseguiti ulteriori test. Se non si è notevolmente interessati da questo problema, si consiglia pertanto di attendere il rilascio del prossimo service pack di .NET Framework che contiene questa correzione.

Per risolvere immediatamente il problema, contattare il Servizio Supporto Tecnico Clienti Microsoft per ottenere la correzione. Per un elenco completo di numeri di telefono del servizio supporto tecnico clienti Microsoft e per informazioni sui costi dell'assistenza, visitare il seguente sito Web Microsoft:
http://support.microsoft.com/contactus/?ws=support
Nota : in casi particolari, le spese normalmente addebitate per le chiamate al supporto tecnico potrebbero essere annullate qualora un addetto del supporto Microsoft determinare che uno specifico aggiornamento risolverà il problema. I costi di supporto tipica verranno applicati per eventuali ulteriori domande e problemi che non dovessero rientrare nello specifico aggiornamento in questione.

La versione in lingua inglese di questa correzione presenta gli attributi di file elencati nella tabella seguente (o successivi). Date e ore per questi file sono indicati nella coordinated universal time (UTC). Quando si visualizzano le informazioni sul file, viene convertito in ora locale. Per calcolare la differenza tra ora UTC e l'ora locale, utilizzare la scheda fuso orario dello strumento Data e ora del Pannello di controllo.
   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
				

Questa correzione è progettata specificamente per essere installato in un sistema che dispone già di Microsoft .NET Framework Service Pack 1. Se si deve dispone questa correzione rapida in un sistema che dispone di Microsoft .NET Framework Service Pack 2 installato, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
328545INFORMAZIONI: Pacchetto cumulativo di Hotfix di .NET Framework successivo al Service Pack 2 2

Status

Microsoft ha confermato che questo problema riguarda i prodotti Microsoft elencati all'inizio di questo articolo.

Informazioni

Procedura per riprodurre il problema.

Di seguito è riportato minime informazioni rilevanti per illustrare il problema descritto in questo articolo. Per ulteriori informazioni sulla creazione di ServicedComponent, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
306296Procedura: Creare un componente servito .NET in Visual C# .NET
Per riprodurre il problema, attenersi alla seguente procedura:
  1. Utilizzare il codice seguente per creare un componente:
    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. Utilizzare il codice riportato di seguito per creare un'applicazione client:
    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();
       }
    }
    					
A causa di questo bug, la seconda chiamata a CServer.Exec accetta, purché la prima chiamata, anche se il parametro è minore.

Proprietà

Identificativo articolo: 327782 - Ultima modifica: giovedì 23 gennaio 2014 - Revisione: 3.5
Le informazioni in questo articolo si applicano a:
  • Microsoft .NET Framework 1.0 Service Pack 1
  • Microsoft .NET Framework 1.0 Service Pack 2
Chiavi: 
kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kbbug kbfix kbnetframe100presp3fix kbqfe KB327782 KbMtit
Traduzione automatica articoli
Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 327782
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

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