Gestire le connessioni TCP del .NET Framework

di Cristian Civera, in System.Net,

La complettezza delle classi messe a disposizione del .NET Framework hanno abituato ormai lo svilupatore ad ignorare alcuni aspetti di più basso livello come quelli del sistema operativo su cui il codice gira. Tra le classi che si è soliti usare vi sono HttpWebRequest, FtpWebRequest e SmtpClient, e la prima tra queste viene sfruttata da tutte quelle classi che caricano uri, come XmlDocument, XDocument, client di servizi web, perciò è molto importante. Tutte queste classi fanno capo al tipo ServicePointManager del namespace System.Net che fa da tramite con il servizio iNet di Windows, il quale effettua fisicamente le connessioni TCP.

Tramite esso è possibile controllare alcuni aspetti centrali riguardanti le connessioni. Per esempio esiste un limite sul numero massimo di connessioni concorrenti che si possono effettuare il cui valore predefinito è due. Se si supera questo limite, il chiamante resta in attese di ottenere una connessione valida. E' possibile intervenire su questo valore (in ASP.NET è portato a 10) attraverso la proprietà DefaultConnectionLimit.

E' possibile inoltre specificare il tempo massimo di validità di un record Dns, se controllare la revocation list dei certificati o impostare un callback per validare i certificati ogni qual volta che si effettuano connessioni HTTPS:

ServicePointManager.CheckCertificateRevocationList = true;
// Imposto 20 connessioni massime
ServicePointManager.DefaultConnectionLimit = 20;
// Validità timeout: 5 minuti
ServicePointManager.DnsRefreshTimeout = 5*60*1000;
// Callback per restituire la validità di un certificato
ServicePointManager.ServerCertificateValidationCallback =
    delegate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
    {
        // Tutti i certificati sono validi
        return true;
    };

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi