Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Nelle applicazioni che utilizzano HTTP per connettersi a risorse di dati è possibile avvalersi delle classi ServicePoint e ServicePointManager di .NET Framework per gestire connessioni a Internet e per ottenere per esse prestazioni e scalabilità ottimali.
La classe ServicePoint consente di fornire alle applicazioni un punto finale per la connessione per l'accesso a risorse Internet. Ciascuna classe ServicePoint contiene informazioni che aiutano a ottimizzare le connessioni a un server Internet grazie alla condivisione delle informazioni sull'ottimizzazione tra le connessioni al fine di migliorare le prestazioni.
Ciascun ServicePoint è identificato da un URI (Uniform Resource Identifier) ed è associato a una categoria specifica sulla base dell'identificatore dello schema e dei frammenti dell'URI relativi all'host. La stessa istanza di ServicePoint, ad esempio, potrebbe consentire di effettuare richieste agli URI https://www.contoso.com/index.htm e https://www.contoso.com/news.htm?date=today, dal momento che essi presentano lo stesso identificatore di schema (http) e gli stessi frammenti relativi all'host (www.contoso.com). Se nell'applicazione si dispone già di una connessione persistente al server www.contoso.com, tale connessione verrà utilizzata per recuperare entrambe le richieste e non sarà pertanto necessario creare due connessioni.
ServicePointManager è una classe static che gestisce la creazione e la distruzione di istanze di ServicePoint. ServicePointManager crea una classe ServicePoint quando l'applicazione richiede una risorsa Internet non presente nell'insieme delle istanze di ServicePoint esistenti. Le istanze di ServicePoint vengono distrutte quando si supera il tempo di inattività massimo impostato o quando il numero delle istanze di ServicePoint esistenti supera il numero massimo consentito per l'applicazione. È possibile controllare sia il tempo di inattività massimo predefinito sia il numero massimo di istanze di ServicePoint impostando le proprietà MaxServicePointIdleTime e MaxServicePoints di ServicePointManager.
Il numero di connessioni tra client e server può influire negativamente sull'efficienza delle applicazioni. Per impostazione predefinita un'applicazione in cui si utilizza la classe HttpWebRequest consente di avvalersi di un massimo di due connessioni persistenti a un dato server, ma è possibile impostare un diverso numero massimo di connessioni per ciascuna applicazione.
Nota Nella specifica HTTP/1.1 il numero delle connessioni da un'applicazione a ciascun server è limitato a due.
Il numero ottimale di connessioni dipende dalle effettive condizioni in cui l'applicazione viene eseguita. È possibile che l'aumento del numero delle connessioni disponibili per un'applicazione non ne influenzi affatto le prestazioni. Per determinare l'impatto causato da più connessioni eseguire test delle prestazioni variando il numero delle connessioni. È possibile modificare il numero delle connessioni utilizzate da un'applicazione modificando la proprietà statica DefaultConnectionLimit della classe ServicePointManager all'inizializzazione dell'applicazione, come illustrato nel seguente esempio di codice.
// Set the maximum number of connections per server to 4.
ServicePointManager.DefaultConnectionLimit = 4;
[Visual Basic]
' Set the maximum number of connections per server to 4.
ServicePointManager.DefaultConnectionLimit = 4
La modifica della proprietà ServicePointManager.DefaultConnectionLimit non ha alcun effetto sulle istanze di ServicePoint inizializzate in precedenza. Nel codice che segue si illustra la modifica del numero massimo di connessioni in un ServicePoint esistente al server https://www.contoso.com, tramite l'impostazione di tale limite sul valore memorizzato in newLimit.
Uri uri = new Uri("https://www.contoso.com/");
ServicePoint sp = ServicePointManager.FindServicePoint(uri);
sp.ConnectionLimit = newLimit;
[Visual Basic]
Dim uri As New Uri("https://www.contoso.com/")
Dim sp As ServicePoint = ServicePointManager.FindServicePoint(uri)
sp.ConnectionLimit = newLimit
Vedere anche
Raggruppamento delle connessioni | Utilizzo di protocolli applicativi