Partager via


Basic Web Programming Model, exemple

Cet exemple illustre les éléments de base des extensions du modèle de programmation Web Windows Communication Foundation (WCF) en implémentant un service qui peut être appelé à l'aide de HTTP GET et de HTTP POST. Cet exemple est implémenté sous la forme d'un processus unique qui héberge le service et implémente le client. Le client appelle le service à l'aide de HTTP.

Bb472530.note(fr-fr,VS.90).gifRemarque :
Cet exemple requiert l'installation de .NET Framework version 3.5 pour être généré et exécuté. Visual Studio 2008 est nécessaire pour l'ouverture des fichiers projet et solution.

Assemblys et espaces de noms

Le modèle de programmation Web WCF est implémenté dans l'assembly System.ServiceModel.Web intégré à ce Kit de développement logiciel. Cet assembly est dérivé de System.ServiceModel, lequel est installé dans le cadre de .NET Framework 3.0.

Le fichier Program.cs (qui contient à la fois le service et le client) répertorie des espaces de noms importants. Ces espaces de noms sont les suivants :

Service

Le service de l'exemple expose un contrat avec deux opérations : EchoWithGet et EchoWithPost, tel qu'illustré dans le code suivant.

[ServiceContract]
public interface IService
{
   [OperationContract]
   [WebGet]
   string EchoWithGet(string s);

   [OperationContract]
   [WebInvoke]
   string EchoWithPost(string s);
}

Comme avec les autres services WCF, l'attribut ServiceContractAttribute est appliqué au contrat IService, et l'attribut OperationContractAttribute est appliqué à ses méthodes. Ce contrat de service utilise deux nouveaux attributs du modèle de programmation Web : WebGetAttribute et WebInvokeAttribute. Ces attributs indiquent la manière dont les opérations du contrat doivent être disponibles via HTTP.

L'attribut WebGetAttribute est appliqué à la méthode EchoWithGet. Ceci signifie que cette méthode doit être disponible sur un URI répondant à la méthode HTTP GET (par exemple, https://localhost:8000/EchoWithGet?s=Hello, world!). Cet URI peut être utilisé par les clients WCF ainsi que par les navigateurs Web. L'attribut WebInvokeAttribute est appliqué à la méthode EchoWithPost, ce qui signifie que cette méthode doit être disponible sur un URI répondant à la méthode HTTP POST. Les paramètres passés à la méthode sont codés en langage XML dans le corps de la demande POST. Cet URI peut être utilisé par les clients WCF ainsi que par les clients Web qui peuvent créer des demandes HTTP POST dont le corps est rédigé en langage XML (par exemple, l'objet XmlHttpRequest de navigateur). Pour plus d'informations sur le modèle de programmation Web, consultez l'exemple Advanced Web Programming figurant dans ce Kit de développement logiciel.

Le point de terminaison suivant du service est défini explicitement.

using (WebServiceHost host = new WebServiceHost(typeof(Service), baseAddress))
{
    host.Open();

    ...
}

Le service est hébergé à l'aide du type WebServiceHost, nouvelle dérivée de ServiceHost qui simplifie l'hébergement des services utilisant les extensions du modèle de programmation Web. WebServiceHost crée automatiquement un point de terminaison par défaut au niveau de l'adresse de base à l'aide de WebHttpBinding et WebHttpBehavior. Par conséquent, le point de terminaison n'a pas besoin d'être défini explicitement. Ce type est une nouvelle liaison standard qui permet de communiquer directement sur HTTP sans SOAP. Cette liaison prend en charge les messages XML ainsi que d'autres types de contenus non-XML (tel que le texte brut, les images ou d'autres flux d'octets).

Client

Cet exemple illustre également comment utiliser le modèle de programmation Web sur le client pour envoyer des demandes HTTP.

Le canal de client suivant est créé à l'aide de WebChannelFactory.

using (WebChannelFactory<IService> cf = new WebChannelFactory<IService>(baseAddress))
{
    IService channel = cf.CreateChannel(); 
    ...
}

Tout comme WebServiceHost, WebChannelFactory crée un point de terminaison par défaut au niveau de l'adresse de base à l'aide de WebHttpBinding et de WebHttpBehavior.

Une fois la fabrique WebChannelFactory créée, l'application cliente crée un canal pour le service, puis appelle la méthode EchoWithGet suivie de la méthode EchoWithPost.

Au terme de l'opération, vous devez appuyer sur une touche. Tant que vous n'avez pas appuyé sur une touche, le service continue d'écouter activement. Lorsque vous appuyez sur une touche, le client et le serveur s'arrêtent et le programme se termine.

Lorsque vous exécutez le service, la résultat suivant s'affiche.

Calling EchoWithGet via HTTP GET:

Output: You said Hello, world

Un résultat identique peut être obtenu en tapant l'adresse « https://localhost:8000/EchoWithGet? s=Hello, world! » dans un navigateur pendant que l'exemple s'exécute.

Calling EchoWithPost via HTTP POST:

Output: You said Hello, world

Press any key to terminate

Pour configurer, générer et exécuter l'exemple

  1. Assurez-vous d'avoir effectué la procédure figurant à la section Procédure d'installation unique pour les exemples Windows Communication Foundation.

  2. Pour générer l'édition C# ou Visual Basic .NET de la solution, conformez-vous aux instructions figurant dans Génération des exemples Windows Communication Foundation.

  3. Pour exécuter l'exemple dans une configuration à un ou plusieurs ordinateurs, suivez les instructions indiquées dans Exécution des exemples Windows Communication Foundation.

Voir aussi

Tâches

Advanced Web Programming

Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.