管理連接
使用 HTTP 連接資料資源的應用程式可以使用 .NET Framework 的 ServicePoint 和 ServicePointManager 類別來管理對網際網路的連接,並幫助它們達成最佳規模和效能。
ServicePoint 類別會為應用程式提供結束點,應用程式可以連接該點,以存取網際網路資源。每一個 ServicePoint 包含促進與 Internet 伺服器最佳化連接的資訊,即藉著在連接之間共用最佳化資訊以改善效能。
每一個 ServicePoint 以 Uniform Resource Identifier (URI) 來識別,並且依照配置識別碼和 URI 的主機片段來歸類。例如,由於它們具有相同的配置識別碼 (http) 和主片段 (www.contoso.com),因此同一個 ServicePoint 執行個體會提供到 https://www.contoso.com/index.htm 和 https://www.contoso.com/news.htm?date=today URI 的要求。如果應用程式已經有到伺服器 www.contoso.com 的永續性連線,它會使用該連線來擷取這兩個要求,以避免需要建立兩個連線。
ServicePointManager 是管理 ServicePoint 執行個體的建立和解構的靜態 (Static) 類別。當應用程式要求不在現有 ServicePoint 執行個體集合中的 Internet 資源時,ServicePointManager 會建立 ServicePoint。當 ServicePoint 執行個體超過它們的最大閒置 (Idle) 時間,或現有 ServicePoint 執行個體的數目超過應用程式的 ServicePoint 執行個體的最大數目時,將會被毀棄。您可以在 ServicePointManager 上設定 MaxServicePointIdleTime 和 MaxServicePoints 屬性,來控制 ServicePoint 執行個體的預設最大閒置時間和最大閒置數目。
用戶端和伺服器之間的連接數目對應用程式輸送量會有劇烈的影響。預設的情況下,使用 HttpWebRequest 類別的應用程式對指定伺服器使用最多兩個的永續性連接,但您可以每個應用程式為基準來設定連接的最大數目。
注意 HTTP/1.1 規格限制每個伺服器的連接數目為一個應用程式對兩個連接。
連接的最佳數目取決於應用程式執行的實際情況。增加應用程式可用的連接數目不會影響應用程式效能。若要判斷更多連接的影響,在變動連接數目時執行效能測試。藉著在應用程式初始化時變更 ServicePointManager 類別的靜態 DefaultConnectionLimit 屬性,您可以變更應用程式使用的連接數目,如下列程式碼範例所示。
// 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
變更 ServicePointManager.DefaultConnectionLimit 屬性不會影響先前初始化的 ServicePoint 執行個體。下列程式碼示範將伺服器 https://www.contoso.com 的現有 ServicePoint 連接限制變更為儲存在 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