Einführung in austauschbare ProtokolleIntroducing Pluggable Protocols

Microsoft .NET Framework stellt eine mehrschichtige, erweiterbare und verwaltete Implementierung von Internetdiensten zur Verfügung. Die Internetdienste können schnell und auf einfache Weise in Ihre Anwendungen integriert werden.The Microsoft .NET Framework provides a layered, extensible, and managed implementation of Internet services that can be integrated quickly and easily into your applications. Die Internetzugriffsklassen in den Namespaces System.Net und System.Net.Sockets können zur Implementierung von sowohl webbasierten als auch internetbasierten Anwendungen verwendet werden.The Internet access classes in the System.Net and System.Net.Sockets namespaces can be used to implement both Web-based and Internet-based applications.

InternetanwendungenInternet Applications

Internetanwendungen können grob in zwei Kategorien eingeteilt werden: Clientanwendungen, die Informationen anfordern, und Serveranwendungen, die auf Informationsanforderungen von Clients reagieren.Internet applications can be classified broadly into two kinds: client applications that request information and server applications that respond to information requests from clients. Die klassische Client-Server-Internetanwendung 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.The classic Internet client-server application is the World Wide Web, where people use browsers to access documents and other data stored on Web servers worldwide.

Anwendungen sind nicht auf eine dieser Rollen beschränkt. So antwortet der bekannte Middle-Tier-Anwendungsserver beispielsweise auf Clientanfragen, indem er Daten von einem anderen Server anfordert. Dadurch agiert er gleichzeitig als Server und Client.Applications are not limited to just one of these roles; for instance, the familiar middle-tier application server responds to requests from clients by requesting data from another server, in which case it is acting as both a server and a client.

Die Clientanwendung sendet eine Anforderung durch Identifizieren der angeforderten Internetressource und des Kommunikationsprotokolls, die dann für die Anforderung und die Antwort verwendet werden.The client application makes a request by identifying the requested Internet resource and the communication protocol to use for the request and response. 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.).If necessary, the client also provides any additional data required to complete the request, such as proxy location or authentication information (user name, password, and so on). Sobald die Anforderung formuliert ist, kann sie an den Server gesendet werden.Once the request is formed, the request can be sent to the server.

Identifizieren von RessourcenIdentifying Resources

.NET Framework verwendet zum Identifizieren der angeforderten Internetressource und des Kommunikationsprotokolls einen Uniform Resource Identifier (URI).The .NET Framework uses a Uniform Resource Identifier (URI) to identify the requested Internet resource and communication protocol. 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.The URI consists of at least three, and possibly four, fragments: the scheme identifier, which identifies the communications protocol for the request and response; the server identifier, which consists of either a Domain Name System (DNS) host name or a TCP address that uniquely identifies the server on the Internet; the path identifier, which locates the requested information on the server; and an optional query string, which passes information from the client to the server. Der URI http://www.contoso.com/whatsnew.aspx?date=today besteht beispielsweise aus dem Schemabezeichner http, dem Serverbezeichner www.contoso.com, dem Pfad /whatsnew.aspx und der Abfragezeichenfolge ?date=today.For example, the URI http://www.contoso.com/whatsnew.aspx?date=today consists of the scheme identifier http, the server identifier www.contoso.com, the path /whatsnew.aspx, and the query string ?date=today.

Nachdem der Server die Anforderung empfangen und die Antwort verarbeitet hat, gibt er die Antwort an die Clientanwendung zurück.After the server has received the request and processed the response, it returns the response to the client application. Die Antwort enthält zusätzliche Informationen, wie etwa den Inhaltstyp (z.B. unformatierter Text oder XML-Daten).The response includes supplemental information, such as the type of the content (raw text or XML data, for example).

Anforderungen und Antworten in .NET FrameworkRequests and Responses in the .NET Framework

.NET Framework verwendet spezifische Klassen zum Bereitstellen der drei Informationen, die für den Zugriff auf Internetressourcen über das Anforderungs-/Antwortmodell erforderlich sind: die Klasse Uri, die den URI der von Ihnen gesuchten Internetressource enthält; die Klasse WebRequest, die eine Anforderung für die Ressource enthält; sowie die Klasse WebResponse, die einen Container für die eingehende Antwort bereitstellt.The .NET Framework uses specific classes to provide the three pieces of information required to access Internet resources through a request/response model: the Uri class, which contains the URI of the Internet resource you are seeking; the WebRequest class, which contains a request for the resource; and the WebResponse class, which provides a container for the incoming response.

Clientanwendungen erstellen WebRequest-Instanzen durch Übergeben des URI der Netzwerkressource an die Methode Create.Client applications create WebRequest instances by passing the URI of the network resource to the Create method. Diese statische Methode erstellt für ein bestimmtes Protokoll, wie z.B. HTTP, eine WebRequest.This static method creates a WebRequest for a specific protocol, such as HTTP. Die zurückgegebene WebRequest ermöglicht den Zugriff auf Eigenschaften, mit denen sowohl die Anforderung an den Server als auch der Zugriff auf den beim Stellen der Anforderung gesendeten Datenstrom gesteuert wird.The WebRequest that is returned provides access to properties that control both the request to the server and access to the data stream that is sent when the request is made. Die Methode GetResponse auf der WebRequest sendet die Anforderung von der Clientanwendung an den im URI identifizierten Server.The GetResponse method on the WebRequest sends the request from the client application to the server identified in the URI. Bei verzögerter Antwort kann die Anforderung durch Anwenden der Methode BeginGetResponse auf die WebRequest asynchron erstellt werden. Die Antwort kann zu einem späteren Zeitpunkt mithilfe der Methode EndGetResponse zurückgegeben werden.In cases in which the response might be delayed, the request can be made asynchronously using the BeginGetResponse method on the WebRequest, and the response can be returned at a later time using the EndGetResponse method.

Mit den Methoden GetResponse und EndGetResponse wird eine WebResponse zurückgegeben, die Zugriff auf die vom Server zurückgegebenen Daten ermöglicht.The GetResponse and EndGetResponse methods return a WebResponse that provides access to the data returned by the server. Die Methode GetResponseStream stellt der anfordernden Anwendung diese Daten als Stream bereit. Daher können sie überall dort in der Anwendung verwendet werden, wo Datenströme genutzt werden.Because this data is provided to the requesting application as a stream by the GetResponseStream method, it can be used in an application anywhere data streams are used.

Die Klassen WebRequest und WebResponse bilden die Grundlage für die austauschbaren Protokolle. Austauschbare Protokolle stellen eine Implementierung von Netzwerkdiensten zur Entwicklung von Anwendungen dar, bei denen man sich keine Gedanken über die spezifischen Details des Protokolls machen muss, das die jeweilige Internetressource verwendet.The WebRequest and WebResponse classes are the basis of pluggable protocols — an implementation of network services that enables you to develop applications that use Internet resources without worrying about the specific details of the protocol that each resource uses. Abgeleitete Klassen von WebRequest werden mit der WebRequest-Klasse registriert, um die Einzelheiten der tatsächlichen Verbindungsherstellung zu Internetressourcen zu verwalten.Descendant classes of WebRequest are registered with the WebRequest class to manage the details of making the actual connections to Internet resources.

Die Klasse HttpWebRequest verwaltet beispielsweise die Einzelheiten zur Verbindung mit einer Internetressource mithilfe von HTTP.As an example, the HttpWebRequest class manages the details of connecting to an Internet resource using HTTP. Erkennt die WebRequest.Create-Methode einen URI, der mit „http:“ oder „https:“ beginnt (den Protokollbezeichnern für HTTP und sicheres HTTP), kann die zurückgegebene WebRequest standardmäßig so verwendet werden, wie sie ist oder für einen Zugriff auf protokollspezifische Eigenschaften in HttpWebRequest umgewandelt werden.By default, when the WebRequest.Create method encounters a URI that begins with "http:" or "https:" (the protocol identifiers for HTTP and secure HTTP), the WebRequest that is returned can be used as is, or it can be typecast to HttpWebRequest to access protocol-specific properties. In den meisten Fällen stellt die WebRequest alle für eine Anforderung erforderlichen Informationen bereit.In most cases, the WebRequest provides all the necessary information for making a request.

In einer WebRequest kann jedes Protokoll verwendet werden, das als Anforderungs-/Antworttransaktion dargestellt werden kann.Any protocol that can be represented as a request/response transaction can be used in a WebRequest. Sie können protokollspezifische Klassen von WebRequest und WebResponse ableiten und sie anschließend mit der statischen Methode WebRequest.RegisterPrefix zur Verwendung durch die Anwendung registrieren.You can derive protocol-specific classes from WebRequest and WebResponse and then register them for use by the application with the static WebRequest.RegisterPrefix method.

Ist für Internetanforderungen eine Clientautorisierung erforderlich, werden die benötigten Anmeldeinformationen durch die Eigenschaft Credentials der WebRequest bereitgestellt.When client authorization for Internet requests is required, the Credentials property of the WebRequest supplies the necessary credentials. Diese Anmeldeinformationen können ein einfaches Benutzername-Kennwort-Paar für eine Standard-HTTP- oder Digestauthentifizierung sein oder ein Satz bestehend aus Name/Kennwort/Domäne für eine NTLM- oder Kerberos-Authentifizierung.These credentials can be a simple name/password pair for basic HTTP or digest authentication, or a name/password/domain set for NTLM or Kerberos authentication. Ein Satz Anmeldeinformationen kann in einer NetworkCredential-Instanz gespeichert werden, mehrere Sätze können gleichzeitig in einer CredentialCache-Instanz gespeichert werden.One set of credentials can be stored in a NetworkCredential instance, or multiple sets can be stored simultaneously in a CredentialCache instance. Der URI der Anforderung und das vom Server unterstütze Authentifizierungsschema werden vom CredentialCache zur Bestimmung der Anmeldeinformationen verwendet, die an den Server gesendet werden sollen.The CredentialCache uses the URI of the request and the authentication scheme that the server supports to determine which credentials to send to the server.

Einfache Anforderungen mit WebClientSimple Requests with WebClient

Für Anwendungen, die einfache Anforderungen für Internetressourcen erstellen müssen, stellt die Klasse WebClient allgemeine Methoden für das Hochladen oder Herunterladen von Daten zu oder von einem Internetserver bereit.For applications that need to make simple requests for Internet resources, the WebClient class provides common methods for uploading data to or downloading data from an Internet server. WebClient verwendet für den Zugriff auf Internetressourcen die WebRequest-Klasse. Aus diesem Grund kann die WebClient-Klasse jedes registrierte austauschbare Protokoll verwenden.WebClient relies on the WebRequest class to provide access to Internet resources; therefore, the WebClient class can use any registered pluggable protocol.

Für Anwendungen, die das Anforderungs-/Antwortmodell nicht verwenden können oder die das Netzwerk überwachen und Anforderungen senden müssen, stellt der System.Net.Sockets-Namespace die Klassen TcpClient, TcpListener und UdpClient bereit.For applications that cannot use the request/response model, or for applications that need to listen on the network as well as send requests, the System.Net.Sockets namespace provides the TcpClient, TcpListener, and UdpClient classes. Diese Klassen behandeln die Details für die Verbindungsherstellung mithilfe verschiedener Transportprotokolle und machen der Anwendung die Netzwerkverbindung als Stream verfügbar.These classes handle the details of making connections using different transport protocols and expose the network connection to the application as a stream.

Die System.Net.Sockets-Klassen erweisen sich besonders für Entwickler als nützlich, die mit der Windows Sockets-Schnittstelle vertraut sind oder die die Kontrolle durch das Programmieren auf Socketebene benötigen.Developers familiar with the Windows Sockets interface or those who need the control provided by programming at the socket level will find that the System.Net.Sockets classes meet their needs. Die System.Net.Sockets-Klassen stellen innerhalb der System.Net-Klassen einen Übergangspunkt von verwaltetem zu nativem Code dar.The System.Net.Sockets classes are a transition point from managed to native code within the System.Net classes. In den meisten Fällen marshallen System.Net.Sockets-Klassen Daten in ihre jeweilige Windows-32-Bit-Entsprechung und führen alle erforderlichen Sicherheitsüberprüfungen durch.In most cases, System.Net.Sockets classes marshal data into their Windows 32-bit counterparts, as well as handling any necessary security checks.

Siehe auchSee also