Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Microsoft .NET Framework stellt für Internetdienste eine erweiterbare und verwaltete Implementierung mit mehreren Ebenen zur Verfügung. Internetdienste können dadurch schnell und einfach in Ihre Anwendungen integriert werden. Die Internetzugriffsklassen im System.Net-Namespace und im System.Net.Sockets-Namespace können zur Implementierung von webbasierten wie von internetbasierten Anwendungen verwendet werden.
Internetanwendungen
Internetanwendungen können in zwei Hauptgruppen eingeteilt werden: Clientanwendungen, die Informationen anfordern, sowie Serveranwendungen, die auf Informationsanforderungen von Clients antworten. Die klassische Client/Server-Anwendung für das Internet ist das World Wide Web. Dort werden Browser verwendet, um auf Dokumente und andere weltweit auf Webservern gespeicherte Daten zuzugreifen.
Anwendungen sind nicht auf eine dieser Funktionen eingeschränkt. Ein Beispiel: Der übliche Anwendungsserver mittlerer Ebene antwortet auf Anforderungen von Clients durch das Anfordern von Daten von einem anderen Server. In diesem Fall erfüllt er also die Funktion eines Servers und eines Clients.
Die Clientanwendung erstellt eine Anforderung durch die Identifizierung der angeforderten Internetressource und des Kommunikationsprotokolls, das für die Anforderung und die Antwort verwendet werden soll. Bei Bedarf stellt der Client auch zusätzliche Daten bereit, die zur Fertigstellung der Anforderung benötigt werden, z. B. die Proxyadresse oder die Authentifizierungsinformationen (Benutzername, Kennwort usw.). Sobald die Anforderung erstellt worden ist, kann sie an den Server gesendet werden.
Identifizieren von Ressourcen
In .NET Framework wird ein URI (Uniform Resource Identifier) zur Identifizierung der angeforderten Internetressource und des Kommunikationsprotokolls verwendet. Der URI besteht aus mindestens drei und gegebenenfalls vier Fragmenten: dem Schemabezeichner, der das Kommunikationsprotokoll für die Anforderung und die Antwort identifiziert; dem Serverbezeichner, der zur eindeutigen Identifizierung des Servers im Internet entweder aus einem DNS (Domain Name System)-Hostnamen oder einer TCP-Adresse besteht; dem Bezeichner für den Pfad, der die angeforderten Informationen auf dem Server findet sowie einer optionalen Abfragezeichenfolge, welche die Informationen vom Client an den Server übergibt. Ein Beispiel: Der URI "https://www.contoso.com/whatsnew.aspx?date=today" besteht aus dem Schemabezeichner "http", dem Serverbezeichner "www.contoso.com", dem Pfad "/whatsnew.aspx" und der Abfragezeichenfolge "?date=today".
Nachdem der Server die Anforderung erhalten und die Antwort erstellt hat, wird die Antwort an die Clientanwendung zurückgegeben. Die Antwort enthält ergänzende Informationen wie z. B. Angaben zur Art des Inhalts (nicht formatierten Text oder XML-Daten usw.).
Anforderungen und Antworten in .NET Framework
In .NET Framework werden bestimmte Klassen verwendet, die drei Informationen für den Zugriff auf Internetressourcen nach dem Anforderung/Antwort-Modell zur Verfügung stellen: die Uri-Klasse, die den URI der gesuchten Internetressource enthält, die WebRequest-Klasse, die eine Anforderung nach der Ressource enthält und die WebResponse-Klasse, die einen Container der eingehenden Antwort enthält.
Clientanwendungen erstellen WebRequest-Instanzen durch die Weitergabe des URI der Netzwerkressource an die WebRequest.Create-Methode. Durch die statische Methode wird ein WebRequest für ein bestimmtes Protokoll wie z. B. HTTP erstellt. Durch den zurückgegebenen WebRequest ist der Zugriff auf Eigenschaften möglich, die sowohl die Anforderung an den Server als auch den Zugriff auf den Datenstream steuern, der beim Eingehen der Anforderung gesendet wird. Die GetResponse-Methode im WebRequest sendet die Anforderung von der Clientanwendung an den durch den URI identifizierten Server. In Fällen, in denen sich die Antwort verzögert, kann die Anforderung mit Hilfe der BeginGetResponse-Methode im WebRequest asynchron erstellt werden. Die Antwort kann zu einem späteren Zeitpunkt mit Hilfe der EndGetResponse-Methode übertragen werden.
Die GetResponse-Methode und die EndGetResponse-Methode geben eine WebResponse zurück, die den Zugriff auf vom Server zurückgegebene Daten ermöglicht. Da diese Daten der anfordernden Anwendung durch die GetResponseStream-Methode als Stream bereitgestellt werden, können sie in einer Anwendung überall dort verwendet werden, wo Datenstreams verwendet werden.
Die WebRequest-Klasse und die WebResponse-Klasse bilden die Basis von austauschbaren Protokollen – einer Implementierung von Netzwerkdiensten zur Entwicklung von Anwendungen, die Internetressourcen verwenden, ohne dass dabei auf Details der von jeder Ressource verwendeten Protokolle geachtet werden muss. Untergeordnete Klassen von WebRequest werden mit der WebRequest-Klasse registriert, um beim Herstellen der tatsächlichen Verbindungen zu den Internetressourcen die Details zu verwalten.
Ein Beispiel: Die HttpWebRequest-Klasse verwaltet die Details beim Herstellen einer Verbindung zu einer Internetressource mit Hilfe von HTTP. Wenn die WebRequest.Create-Methode einen URI erkennt, der mit "http:" oder "https:" beginnt (die Bezeichner für das Protokoll für HTTP und sicheres HTTP), kann der zurückgegebene WebRequest standardmäßig unverändert verwendet werden, oder es kann für sie eine Typenumwandlung in HttpWebRequest für den Zugriff auf protokollspezifische Eigenschaften durchgeführt werden. In den meisten Fällen stellt der WebRequest alle Informationen bereit, die für das Erstellen einer Anforderung benötigt werden.
Jedes Protokoll, das als eine Anforderung/Anwort-Transaktion dargestellt werden kann, kann in einer WebRequest verwendet werden. Sie können protokollspezifische Klassen aus WebRequest und WebResponse ableiten und sie dann mit der statischen WebRequest.RegisterPrefix-Methode für die Verwendung in der Anwendung registrieren.
Wenn Clientautorisierung für Internetanforderungen benötigt wird, stellt die Credentials-Eigenschaft von WebRequest die notwendigen Anmeldeinformationen bereit. Diese Anmeldeinformationen können ein einfaches Benutzername/Kennwort-Paar für die HTTP-Standardauthentifizierung bzw. HTTP-Digestauthentifizeriung oder ein Name/Kennwort/Domänen-Satz für die NTLM- oder Kerberos-Authentifizierung sein. Ein Satz von Anmeldeinformationen kann in einer NetworkCredentials-Instanz gespeichert werden, bzw. mehrere Sätze können gleichzeitig in einer CredentialCache-Instanz gespeichert werden. In CredentialCache werden der URI der Anforderung und das vom Server unterstützte Authentifizierungsschema verwendet, um festzulegen, welche Anmeldeinformationen an den Server gesendet werden sollen.
Einfache Anforderungen mit WebClient
Für Anwendungen, die einfache Anforderungen für Internetressourcen erstellen, stellt die WebClient-Klasse gemeinsame Methoden zum Up- bzw. Downloaden von Daten zum bzw. vom Internetserver zur Verfügung. WebClient benötigt die WebRequest-Klasse, um den Zugriff auf Internetressourcen bereitzustellen. Daher kann die WebClient-Klasse jedes registrierte austauschbare Protokoll verwenden.
Für Anwendungen, die das Anforderung/Antwort-Modell nicht verwenden können, bzw. für Anwendungen, die im Netzwerk Anforderungen empfangen und Antworten senden müssen, stellt der System.Net.Sockets-Namespace die Klassen TCPClient, TCPListener und UDPClient bereit. Diese Klassen kümmern sich um die Details beim Erstellen der Verbindung. Sie verwenden dazu verschiedene Übertragungsprotokolle und legen die Netzwerkverbindung der Anwendung als Stream offen.
Die System.Net.Sockets-Klassen eignen sich besonders für Entwickler, die mit der Windows Sockets-Schnittstelle vertraut oder auf die Steuerung durch Programmierung auf Socketebene angewiesen sind. Die System.Net.Sockets-Klassen stellen den Übergang zwischen dem verwalteten und systemeigenen Code innerhalb der System.Net-Klassen dar. In den meisten Fällen werden von System.Net.Sockets-Klassen Daten in das Windows 32-Bit-Äquivalent gemarshallt sowie alle notwendigen Sicherheitsüberprüfungen durchgeführt.
Siehe auch
Programmieren von austauschbaren Protokollen | Zugreifen auf das Internet