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.

Vedi anche