Netzwerkprogrammierung in .NET

.NET stellt eine mehrschichtige, erweiterbare und verwaltete Implementierung von Internetdiensten zur Verfügung. Die Internetdienste können schnell und auf einfache Weise in Apps integriert werden. Ihre Netzwerk-Apps können austauschbare Protokolle einsetzten, um verschiedene Internetprotokolle automatisch zu verwenden, oder eine verwaltete Implementierung der plattformübergreifenden Socket-Schnittstellen benutzen, um auf Socketebene mit dem Netzwerk zu arbeiten.

Internet-Apps

Internet-Apps können grob in zwei Kategorien eingeteilt werden: Client-Apps, die Informationen anfordern, und Server-Apps, die auf Informationsanforderungen von Clients reagieren. Die klassische Client-Server-Internet-App ist das World Wide Web. Hier greifen Personen mithilfe eines Browsers auf Dokumente und andere Daten zu, die auf Webservern in der ganzen Welt gespeichert sind.

Apps sind nicht auf eine dieser Rollen beschränkt. So antwortet der bekannte Middle-Tier-App-Server beispielsweise auf Clientanfragen, indem er Daten von einem anderen Server anfordert. Dadurch agiert er gleichzeitig als Server und Client.

Die Client-Apps sendet eine Anforderung durch Identifizieren der angeforderten Internetressource und des Kommunikationsprotokolls, die dann für die Anforderung und die Antwort verwendet werden. Der Client stellt bei Bedarf auch alle zusätzlichen Daten bereit, die zum Abschließen der Anforderung erforderlich sind, wie z.B. Informationen zum Proxystandort oder der Authentifizierung (Benutzername, Kennwort usw.). Sobald die Anforderung formuliert ist, kann sie an den Server gesendet werden.

Identifizieren von Ressourcen

.NET verwendet zum Identifizieren der angeforderten Internetressource und des Kommunikationsprotokolls einen Uniform Resource Identifier (URI). Der URI besteht aus mindestens drei, eventuell vier Fragmenten: dem Schemabezeichner, der das Kommunikationsprotokoll für Anforderung und Antwort identifiziert; dem Serverbezeichner, der entweder aus einem DNS-Hostnamen (Domain Name System) oder einer TCP-Adresse zur eindeutigen Identifizierung des Servers im Internet besteht; dem Pfadbezeichner, der die angeforderte Information auf dem Server sucht; sowie der optionalen Abfragezeichenfolge, die Informationen vom Client an den Server übergibt.

Der System.Uri-Typ wird als Darstellung eines URI (Uniform Resource Identifier) und einfachen Zugriffs auf die Teile des URIs verwendet. Um eine Uri-Instanz zu erstellen, können Sie ihr eine Zeichenfolge übergeben:

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

Die Uri-Klasse führt automatisch die Validierung und Kanonisierung gemäß RCF 3986 durch. Diese Validierungs- und Kanonisierungsregeln werden verwendet, um sicherzustellen, dass ein URI wohlgeformt ist und dass sich der URI in einer kanonischen Form befindet.

Siehe auch