Programmazione di rete in .NET
.NET offre un'implementazione a più livelli, estendibile e gestita di servizi Internet che possono essere integrati rapidamente e facilmente nelle app. Le app di rete possono essere compilate su protocolli collegabili per sfruttare automaticamente i vari protocolli Internet oppure possono usare un'implementazione gestita di interfacce socket multipiattaforma per lavorare con la rete a livello di socket.
App Internet
Le app Internet possono essere classificate in modo ampio in due tipi: le app client che richiedono informazioni e app server che rispondono alle richieste di informazioni dai client. L'app client-server Internet classica è il World Wide Web, in cui gli utenti usano i browser per accedere ai documenti e ad altri dati archiviati nei server Web in tutto il mondo.
Le app non sono limitate a uno di questi ruoli; Ad esempio, il server app di livello intermedio familiare risponde alle richieste dei client richiedendo dati da un altro server, nel qual caso funge da server e client.
L'app client richiede identificando la risorsa Internet richiesta e il protocollo di comunicazione da usare per la richiesta e la risposta. Se necessario, il client fornisce anche eventuali dati aggiuntivi necessari per completare la richiesta, ad esempio il percorso proxy o le informazioni di autenticazione (nome utente, password e così via). Una volta creata la richiesta, la richiesta può essere inviata al server.
Identificazione delle risorse
.NET usa un URI (Uniform Resource Identifier) per identificare la risorsa Internet e il protocollo di comunicazione richiesti. L'URI è costituito da almeno tre, e possibilmente quattro frammenti: l'identificatore dello schema, che identifica il protocollo di comunicazione per la richiesta e la risposta; l'identificatore del server, costituito da un nome host DNS (Domain Name System) o da un indirizzo TCP che identifica in modo univoco il server su Internet; l'identificatore del percorso, che individua le informazioni richieste nel server; e una stringa di query facoltativa, che passa le informazioni dal client al server.
Il tipo System.Uri viene usato come rappresentazione di un URI (Uniform Resource Identifier) e facile accesso alle parti dell'URI. Per creare un'istanza di Uri
è possibile passarla una stringa:
const string uriString =
"https://learn.microsoft.com/en-us/dotnet/path?key=value#bookmark";
Uri canonicalUri = new(uriString);
Console.WriteLine(canonicalUri.Host);
Console.WriteLine(canonicalUri.PathAndQuery);
Console.WriteLine(canonicalUri.Fragment);
// Sample output:
// learn.microsoft.com
// /en-us/dotnet/path?key=value
// #bookmark
La classe Uri
esegue automaticamente la convalida e la canonizzazione per ogni RFC 3986. Queste regole di convalida e canonizzazione vengono usate per garantire che un URI sia ben formato e che l'URI sia in formato canonico.