Share via


Advanced Format Selection

Cet exemple montre comment étendre le modèle de programmation REST Windows Communication Foundation (WCF) afin de prendre en charge de nouveaux formats pour les réponses sortantes. En outre, l'exemple utilise un modèle T4 pour retourner la réponse sous forme de page XHTML et ainsi montrer comment un modèle de programmation de style d'affichage peut être implémenté.

Détails de l'exemple

L'exemple se compose d'un service simple et du code client qui adresse des requêtes au service. Le service prend en charge une seule opération [WebGet], dont la signature de méthode est la suivante : Message EchoListWithGet(string list);

Lorsque le client adresse une requête au service, il fournit la liste séparée par des virgules d'éléments provenant du paramètre de chaîne de requête list et le service retourne cette même liste dans l'un des formats suivants : XML, JSON, Atom, XHTML ou jpeg.

Le format de réponse retourné par le service est déterminé d'abord par un paramètre de chaîne de requête format, puis par un en-tête HTTP Accept fourni avec la requête. Si la valeur du paramètre de chaîne de requête format est l'un des formats précédents, la réponse est retournée dans ce format. Si le paramètre de chaîne de requête format est absent, le service effectue une itération au sein des éléments d'en-tête Accept de la requête et retourne le format du premier content-type pris en charge par le service.

Notez le type de retour de l'opération. Le modèle de programmation REST WCF ne prend en charge en natif que les formats de réponse XML et JSON lorsqu'une opération retourne un type autre que Message. Toutefois, lorsqu'il utilise Message comme type de retour, le développeur peut entièrement contrôler la façon dont le message doit être mis en forme.

L'exemple utilise les méthodes CreateXmlResponse, CreateJsonResponse et CreateAtom10Response pour sérialiser la liste de chaînes en messages XML, JSON et ATOM, respectivement. Pour le format de réponse jpeg, la méthode CreateStreamResponse est utilisée et l'image est enregistrée dans le flux de données. Pour la réponse XHTML, la méthode CreateTextResponse est utilisée avec un modèle T4 prétraité, qui se compose d'un fichier .tt et d'un fichier .cs généré automatiquement. Le fichier .tt permet à un développeur d'écrire une réponse sous forme de modèle contenant des variables et des structures de contrôle. Pour plus d'informations sur le sujet suivant T4, consultez Generating Artifacts By Using Text Templates (en anglais).

L'exemple est constitué d'un service auto-hébergé et d'un client qui s'exécute dans une application console. Lorsque l'application console s'exécute, le client adresse des requêtes au service et affiche les informations pertinentes des réponses dans la fenêtre de console.

Pour exécuter cet exemple

  1. Ouvrez la solution de l'exemple Advanced Format Selection. Pour que l'exemple fonctionne correctement, vous devez exécuter Visual Studio 2010 en tant qu'administrateur. Pour ce faire, cliquez avec le bouton droit sur l'icône Visual Studio 2010 et choisissez Exécuter en tant qu'administrateur dans le menu contextuel.

  2. Appuyez sur F6 pour générer la solution, puis appuyez sur Ctrl+F5 pour exécuter le projet d'application console AdvancedFormatSelection sans débogage. La fenêtre de console apparaît et fournit l'URI du service en cours d'exécution, ainsi que l'URI de sa page d'aide HTML.

  3. Lorsque l'exemple s'exécute, le client envoie des requêtes au service et affiche les réponses dans la fenêtre de console. Notez les différents formats des réponses : XML, JSON, Atom et XHTML.

  4. Vous êtes ensuite invité à naviguer jusqu'à un URI où vous pouvez demander la réponse dans un format .jpeg. Ouvrez un navigateur et naviguez jusqu'à l'URI fourni.

  5. Appuyez sur une touche quelconque pour arrêter l'exemple.

Ee662965.Important(fr-fr,VS.100).gif Remarque :
Les exemples peuvent déjà être installés sur votre ordinateur. Recherchez le répertoire (par défaut) suivant avant de continuer.

<LecteurInstall>:\WF_WCF_Samples

Si ce répertoire n'existe pas, rendez-vous sur la page (éventuellement en anglais) des exemples Windows Communication Foundation (WCF) et Windows Workflow Foundation (WF) pour .NET Framework 4 pour télécharger tous les exemples Windows Communication Foundation (WCF) et WF. Cet exemple se trouve dans le répertoire suivant.

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