Gestion des connexions
Les applications qui utilisent HTTP pour la connexion aux ressources de données peuvent utiliser les classes ServicePoint et ServicePointManager de .NET Framework pour gérer les connexions à Internet et les aider à atteindre une échelle et des performances optimales.
La classe ServicePoint fournit une application avec un point d'entrée auquel l'application peut se connecter pour accéder aux ressources Internet. Chaque ServicePoint contient des informations qui aident à optimiser les connexions avec un serveur Internet en partageant les informations d'optimisation entre les connexions afin d'améliorer les performances.
Chaque ServicePoint est identifiée par une URI (Uniform Resource Identifier) et classée selon l'identificateur du schéma et les fragments d'hôte de l'URI. Par exemple, la même instance ServicePoint fournirait des demandes aux URI https://www.contoso.com/index.htm et https://www.contoso.com/news.htm?date=today puisqu'elles ont le même identificateur de schéma (http) et les mêmes fragments d'hôte (www.contoso.com). Si l'application possède déjà une connexion permanente au serveur www.contoso.com, elle utilise cette connexion pour récupérer les deux demandes, évitant ainsi la création de deux connexions.
ServicePointManager est une classe statique qui gère la création et la destruction des instances ServicePoint. ServicePointManager crée ServicePoint lorsque l'application demande une ressource Internet qui n'est pas dans la collection des instances ServicePoint existantes. Les instances ServicePoint sont détruites lorsqu'elles ont dépassé leur durée d'inactivité maximale ou lorsque le nombre d'instances ServicePoint existantes excède le nombre maximal d'instances ServicePoint pour l'application. Vous pouvez contrôler la durée d'inactivité maximale par défaut et le nombre maximal d'instances ServicePoint en définissant les propriétés MaxServicePointIdleTime et MaxServicePoints sur ServicePointManager.
Le nombre de connexions entre un client et un serveur peut avoir un impact dramatique sur le débit de l'application. Par défaut, une application faisant appel à la classe HttpWebRequest utilise un maximum de deux connexions permanentes à un serveur donné, mais vous pouvez définir le nombre maximal de connexions selon l'application.
Remarque La spécification HTTP/1.1 limite le nombre de connexions d'une application à deux par serveur.
Le nombre optimal de connexions dépend des conditions réelles dans lesquelles l'application s'exécute. Le fait d'augmenter le nombre de connexions disponibles pour l'application peut ne pas affecter les performances de l'application. Pour déterminer l'impact de connexions plus nombreuses, effectuez des tests de performance en faisant varier le nombre de connexions. Vous pouvez modifier le nombre de connexions utilisé par une application en modifiant la propriété DefaultConnectionLimit statique sur la classe ServicePointManager lors de l'initialisation de l'application, comme le montre l'exemple de code suivant.
// 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 modification de la propriété ServicePointManager.DefaultConnectionLimit n'affecte pas les instances ServicePoint précédemment initialisées. Le code suivant montre la modification du nombre limite de connexions sur une instance ServicePoint existante pour le serveur https://www.contoso.com à la valeur enregistrée dans 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
Voir aussi
Regroupement de connexions | Utilisation de protocoles d'application