Programmazione di rete in .NET
Con .NET viene fornita un'implementazione a più livelli, estendibile e gestita, di servizi Internet che possono essere integrati nelle applicazioni in modo rapido e semplice. Le applicazioni di rete possono essere compilate su protocolli modulari per usufruire automaticamente di vari protocolli Internet oppure possono usare un'implementazione gestita delle interfacce socket multipiattaforma per usare 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. La classica app client-server Internet è il World Wide Web, in cui gli utenti usano i browser per accedere a documenti e ad altri dati archiviati in server Web in tutto il mondo.
Le applicazioni non si limitano solo a uno di questi ruoli. Ad esempio, il comune server applicazioni di livello intermedio risponde alle richieste dei client richiedendo dati a un altro server, caso in cui agisce sia come server sia come client.
L'applicazione client effettua una richiesta identificando la risorsa Internet richiesta e il protocollo di comunicazione da usare per la richiesta e la risposta. Se necessario, il client fornisce anche tutti i dati aggiuntivi necessari per completare la richiesta, come la posizione del proxy o le informazioni di autenticazione (nome utente, password e così via). Una volta creata, 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, possibilmente quattro, parti: 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 un indirizzo TCP che identifica in modo univoco il server in Internet, l'identificatore del percorso, che individua le informazioni richieste nel server e una stringa di query facoltativa, che passa 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 passare 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 RCF 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.