Freigeben über


Verwalten von Verbindungen

Anwendungen, die Verbindungen mit Datenressourcen über HTTP herstellen, können die ServicePoint-Klasse und die ServicePointManager-Klasse von .NET Framework verwenden, um Internetverbindungen zu verwalten und optimale Skalierung und Leistung zu erzielen.

Die ServicePoint-Klasse stellt einer Anwendung einen Endpunkt bereit, mit dem diese eine Verbindung für den Zugriff auf Internetressourcen aufbauen kann. Jeder ServicePoint verfügt über Informationen, mit deren Hilfe Verbindungen mit einem Internetserver optimiert werden können. Dies erfolgt über Optimierungsinformationen, die zur Leistungssteigerung zwischen den Verbindungen ausgetauscht werden.

Jeder ServicePoint wird durch einen URI (Uniform Resource Identifier) bezeichnet und nach Schemabezeichner und URI-Hostfragmenten kategorisiert. Beispielsweise stellt die gleiche ServicePoint-Instanz Anforderungen für die URIs https://www.contoso.com/index.htm und https://www.contoso.com/news.htm?date=today bereit, da sie über die gleichen Schemabezeichner (http) und Hostfragmente (www.contoso.com) verfügen. Wenn die Anwendung bereits über eine persistente Verbindung mit dem Server www.contoso.com verfügt, wird diese Verbindung für den Abruf beider Anforderungen verwerden, so dass nicht zwei Verbindungen erstellt werden müssen.

ServicePointManager stellt eine statische Klasse dar, die die Erstellung und Zerstörung von ServicePoint-Instanzen verwaltet. Wenn die Anwendung eine Internetressource anfordert, die in der Auflistung vorhandener ServicePoint-Instanzen nicht vorhanden ist, erstellt der ServicePointManager einen ServicePoint. ServicePoint-Instanzen werden zerstört, wenn die höchstzulässige Leerlaufzeit überschritten wurde oder die Anzahl vorhandener ServicePoint-Instanzen die Höchstanzahl von ServicePoint-Instanzen für die Anwendung übersteigt. Sie können sowohl die Standardeinstellung für die höchstzulässige Leerlaufzeit als auch die Höchstanzahl von ServicePoint-Instanzen steuern, indem Sie die MaxServicePointIdleTime-Eigenschaft und die MaxServicePoints-Eigenschaft für den ServicePointManager festlegen.

Die Anzahl der Verbindungen zwischen Client und Server kann den Anwendungsdurchsatz erheblich beeinträchtigen. In der Standardeinstellung ist für eine Anwendung, die die HttpWebRequest-Klasse verwendet, ein Höchstwert von zwei persistenten Verbindungen mit einen bestimmten Server vorgegeben. Sie können die Höchstanzahl von Verbindungen jedoch für jede Anwendung einzeln festlegen.

Hinweis   Die HTTP/1.1-Spezifikation beschränkt die Anzahl der von einer Anwendung ausgehenden Verbindungen auf zwei Verbindungen je Server.

Die optimale Anzahl von Verbindungen richtet sich nach den Bedingungen, unter denen die Anwendung ausgeführt wird. Wenn Sie die Anzahl von Verbindungen erhöhen, die einer Anwendung zur Verfügung stehen, wird die Leistung der Anwendung nicht unbedingt beeinträchtigt. Um dies zu überprüfen, sollten Sie Leistungstests mit einer unterschiedlichen Anzahl von Verbindungen durchführen. Sie können die Anzahl der durch die Anwendung verwendeten Verbindungen ändern, indem Sie die statische DefaultConnectionLimit-Eigenschaft für die ServicePointManager-Klasse ändern, wie das folgende Codebeispiel veranschaulicht.

// 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

Eine Änderung der ServicePointManager.DefaultConnectionLimit-Eigenschaft hat keine Auswirkung auf zuvor initialisierte ServicePoint-Instanzen. Der folgende Code veranschaulicht die Änderung des Verbindungshöchstwertes für einen vorhandenen ServicePoint für den Server https://www.contoso.com auf den in newLimit gespeicherten Wert.

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

Siehe auch

Verbindungsgruppierungen | Verwenden von Anwendungsprotokollen