Erweiterte FormatauswahlAdvanced Format Selection

In diesem Beispiel wird veranschaulicht, wie der Windows Communication Foundation (WCF)-REST-Programmiermodell zur Unterstützung neuer Formate für ausgehende Antworten erweitert wird.This sample demonstrates how to extend the Windows Communication Foundation (WCF) REST programming model to support new outgoing response formats. In diesem Beispiel wird zusätzlich eine T4-Vorlage verwendet, damit die Antwort als XHTML-Seite zurückgegeben wird. Auf diese Weise wird veranschaulicht, wie ein Programmiermodell zur Ansicht implementiert werden kann.In addition, the sample uses a T4 Template to return the response as an XHTML page, demonstrating how a view-style programming model can be implemented.

BeispieldetailsSample Details

Das Beispiel besteht aus einem einfachen Dienst und Clientcode, mit dem Anforderungen an den Dienst gesendet werden.The sample consists of a simple service along with client code that makes requests to the service. Der Dienst unterstützt einen einzelnen [WebGet-]Vorgang mit der folgenden Methodensignatur: Message EchoListWithGet(string list);The service supports a single [WebGet] operation, which has the following method signature: Message EchoListWithGet(string list);

Wenn der Client eine Anforderung an den Dienst sendet, stellt er eine durch Trennzeichen getrennte Liste der Elemente aus dem list-Abfragezeichenfolgenparameter bereit. Der Dienst gibt diese gleiche Liste in einem der folgenden Formate XML, JSON, Atom, XHTML oder JPEG zurück.When the client makes a request to the service, it provides a comma-separated list of items from the list query-string parameter and the service returns that same list in one of the following formats: XML, JSON, Atom, XHTML, or jpeg.

Das vom Dienst zurückgegebene Antwortformat wird von einem format-Abfragezeichenfolgenparameter und zusätzlich von einem mit der Anforderung angegebenen HTTP Accept-Header bestimmt.The response format returned by the service is determined first by a format query-string parameter and second by an HTTP Accept header supplied with the request. Wenn der Wert des format-Abfragezeichenfolgenparameters einem der vorangehenden Formate entspricht, wird die Antwort im entsprechenden Format zurückgegeben.If the value of format query-string parameter is one of the preceding formats, then the response is returned in that format. Wenn die format-Abfragezeichenfolge nicht vorhanden ist, durchläuft der Dienst die Accept-Headerelemente der Anforderung und gibt das Format des ersten Inhaltstyp zurück, den der Dienst unterstützt.If the format query-string is not present, then the service iterates through the Accept header elements from the request and returns the format of the first content-type that the service supports.

Beim Rückgabetyp des Vorgangs ist Folgendes zu beachten.The return type of the operation is worth noting. Der WCF REST-Programmiermodell nur nativ unterstützt XML und JSON-Antwortformate aus, wenn ein Vorgang einen Typ, außer zurückgibt Message.The WCF REST programming model only natively supports XML and JSON response formats when an operation returns a type other than Message. Wenn als Rückgabetyp jedoch Message verwendet wird, kann der Entwickler vollständig selbst bestimmen, wie der Inhalt der Meldung formatiert werden soll.However, when using Message as the return type, the developer has complete control over how the content of the message should be formatted.

In diesem Beispiel wird die Liste der Zeichenfolgen mithilfe der Methoden CreateXmlResponse, CreateJsonResponse und CreateAtom10Response in entsprechende XML-, JSON- und ATOM-Meldungen serialisiert.The sample uses the CreateXmlResponse, CreateJsonResponse and CreateAtom10Response methods to serialize the list of strings into XML, JSON, and ATOM messages respectively. Für das JPEG-Antwortformat wird die CreateStreamResponse-Methode verwendet, und das Bild wird im Stream gespeichert.For the jpeg response format, the CreateStreamResponse method is used and the image is saved to the stream. Für die XHTML-Antwort wird die CreateTextResponse mit einer zuvor verarbeiteten T4-Vorlage verwendet. Diese besteht aus einer TT-Datei und einer automatisch generierten CS-Datei.For the XHTML response, the CreateTextResponse is used along with a preprocessed T4 template, which consists of a .tt file and an auto-generated .cs file. Die TT-Datei ermöglicht es Entwicklern, eine Antwort in ein Vorlagenformular zu schreiben, das Variablen und Steuerelementstrukturen enthält.The .tt file allows a developer to write a response in a template form that contains variables and control structures. Weitere Informationen zu T4 finden Sie unter Generieren von Artefakten mithilfe von Textvorlagen.For more information about T4, see Generating Artifacts By Using Text Templates.

Das Beispiel umfasst einen selbst gehosteten Dienst und einen Client, der in einer Konsolenanwendung ausgeführt wird.The sample consists of a self-hosted service and a client that runs within a console application. Während die Konsolenanwendung ausgeführt wird, sendet der Client Anforderungen an den Dienst und schreibt die in den Antworten enthaltenen wichtigen Informationen in das Konsolenfenster.As the console application runs, the client makes requests to the service and writes the pertinent information from the responses to the console window.

So führen Sie dieses Beispiel ausTo run this sample

  1. Öffnen Sie die Projektmappe für das Beispiel zur erweiterten Formatauswahl.Open the solution for the Advanced Format Selection Sample. Sie müssen Visual Studio 2012Visual Studio 2012 als Administrator ausführen, damit das Beispiel erfolgreich ausgeführt werden kann.When launching Visual Studio 2012Visual Studio 2012, you should run as an administrator for the sample to execute successfully. Zu diesem Zweck mit der rechten Maustaste die Visual Studio 2012Visual Studio 2012 Symbol und Auswahl als Administrator ausführen aus dem Kontextmenü.Do this by right-clicking the Visual Studio 2012Visual Studio 2012 icon and choosing Run as Administrator from the context menu.

  2. Drücken Sie STRG+UMSCHALT+B, um die Projektmappe zu erstellen, und dann STRG+F5, um das AdvancedFormatSelection-Projekt der Konsolenanwendung ohne Debuggen auszuführen.Press CTRL+SHIFT+B to build the solution and then press Ctrl-F5 to run the console application AdvancedFormatSelection project without debugging. Im eingeblendeten Konsolenfenster werden der URI des ausgeführten Diensts und der URI der HTML-Hilfeseite für den ausgeführten Dienst angezeigt.The console window appears and provides the URI of the running service and the URI of the HTML help page for the running service.

  3. Während das Beispiel ausgeführt wird, sendet der Client Anforderungen an den Dienst und schreibt die Antworten in das Konsolenfenster.As the sample runs, the client sends requests to the service and writes the responses to the console window. Beachten Sie die anderen Formate der Antworten: XML, JSON, Atom und XHTML.Notice the different formats of the responses: XML, JSON, Atom, and XHTML.

  4. Sie werden daraufhin aufgefordert, zu einem URI zu wechseln, in dem Sie die Antwort im JPEG-Format anfordern können.You are then prompted to browse to a URI in which you can request the response in a .jpeg format. Öffnen Sie einen Browser, und wechseln Sie zum angegebenen URI.Open a browser and browse to the given URI.

  5. Drücken Sie eine beliebige Taste, um das Beispiel zu beenden.Press any key to terminate the sample.

Wichtig

Die Beispiele sind möglicherweise bereits auf dem Computer installiert.The samples may already be installed on your machine. Suchen Sie nach dem folgenden Verzeichnis (Standardverzeichnis), bevor Sie fortfahren.Check for the following (default) directory before continuing.

<InstallDrive>:\WF_WCF_Samples

Wenn dieses Verzeichnis nicht vorhanden ist, fahren Sie mit Windows Communication Foundation (WCF) und Windows Workflow Foundation (WF) Samples for .NET Framework 4 aller Windows Communication Foundation (WCF) herunterladen und WFWF Beispiele.If this directory does not exist, go to Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4 to download all Windows Communication Foundation (WCF) and WFWF samples. Dieses Beispiel befindet sich im folgenden Verzeichnis.This sample is located in the following directory.

<InstallDrive>:\WF_WCF_Samples\WCF\Basic\Web\AdvancedFormatSelection

Siehe auchSee Also