Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de changer d’annuaire.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer d’annuaire.
L’exemple RouteByBody montre comment implémenter un service qui accepte des objets de message avec n’importe quelle action SOAP. Cet exemple est basé sur le guide de démarrage qui implémente un service de calculatrice. Le service implémente une seule Calculate opération qui accepte un Message paramètre de requête et retourne une Message réponse.
Dans cet exemple, le client est une application console (.exe) et le service est hébergé dans IIS.
Remarque
La procédure d’installation et les instructions de génération de cet exemple se trouvent à la fin de cette rubrique.
L’exemple illustre la répartition des messages en fonction du contenu du corps. Le mécanisme de répartition des messages du modèle de service Windows Communication Foundation (WCF) intégré est basé sur les actions de message. Toutefois, il existe de nombreux services Web existants qui définissent toutes leurs opérations avec Action=" ». Il est impossible de créer un service basé sur WSDL qui continue à distribuer des messages de demande en fonction des informations d’action. Cet exemple illustre un contrat de service basé sur WSDL (le WSDL est contenu dans Service.wsdl inclus dans l’exemple). Le contrat de service est Calculatrice, similaire à celui utilisé dans Prise en main. Toutefois, les [OperationContract] spécifications Action="" pour toutes les opérations.
[ServiceContract(Namespace = "http://Microsoft.ServiceModel.Samples"),
XmlSerializerFormat, DispatchByBodyBehavior]
public interface ICalculator
{
[OperationContract(Action="")]
double Add(double n1, double n2);
[OperationContract(Action = "")]
double Subtract(double n1, double n2);
[OperationContract(Action = "")]
double Multiply(double n1, double n2);
[OperationContract(Action = "")]
double Divide(double n1, double n2);
}
En fonction d’un contrat, un service nécessite un comportement DispatchByBodyBehavior de répartition personnalisé pour permettre la répartition des messages entre les opérations. Ce comportement de répartition initialise le DispatchByBodyElementOperationSelector sélecteur d’opération personnalisé avec une table des noms d’opération clés par QName des éléments wrapper respectifs.
DispatchByBodyElementOperationSelector examine la balise de début du premier enfant du corps et sélectionne l’opération à l’aide de la table mentionnée précédemment.
Le client utilise un proxy généré automatiquement à partir du WSDL exporté par le service à l’aide de l’outil utilitaire de métadonnées ServiceModel (Svcutil.exe).
svcutil.exe /n:http://Microsoft.ServiceModel.Samples,Microsoft.ServiceModel.Samples /uxs http://localhost/servicemodelsamples/service.svc?wsdl /out:generatedProxy.cs
Le fait que les actions de toutes les opérations sont vides n’a aucun impact sur le code client, à l’exception des paramètres d’action dans le proxy généré automatiquement.
Le code client effectue plusieurs calculs. Lorsque vous exécutez l’exemple, les demandes et réponses de l’opération s’affichent dans la fenêtre de la console cliente. Appuyez sur Entrée dans la fenêtre du client pour arrêter le client.
Add(100, 15.99) = 115.99
Subtract(145, 76.54) = 68.46
Multiply(9, 81.25) = 731.25
Divide(22, 7) = 3.14285714285714
Press <ENTER> to terminate client.
Pour configurer, générer et exécuter l’exemple
Assurez-vous d’avoir effectué la Procédure d’installation unique pour les exemples Windows Communication Foundation.
Pour générer la solution, suivez les instructions de Création des exemples Windows Communication Foundation.
Pour exécuter l’exemple dans une configuration à un ou plusieurs ordinateurs, conformez-vous aux instructions figurant dans la rubrique Exécution des exemples Windows Communication Foundation.