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
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare la libreria Benchmark.NET per misurare le performance
Short-circuiting della Pipeline in ASP.NET Core
Load test di ASP.NET Core con k6
Personalizzare l'errore del rate limiting middleware in ASP.NET Core
Usare ASP.NET Core dev tunnels per testare le applicazioni su internet
Implementare il throttling in ASP.NET Core
Cache policy su route groups di Minimal API in ASP.NET Core 7
Effettuare il deploy di immagini solo da container registry approvati in Kubernetes