Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
L’exemple En-têtes d’adresse montre comment les clients peuvent passer des paramètres de référence à un service à l’aide de Windows Communication Foundation (WCF).
Remarque
La procédure d’installation et les instructions de génération de cet exemple se trouvent à la fin de cette rubrique.
La spécification WS-Addressing définit la notion de référence de point de terminaison comme moyen d’adresser un point de terminaison de service Web particulier. Dans WCF, les références de point de terminaison sont modélisées à l’aide de la EndpointAddress classe : EndpointAddress est le type du champ Address de la ServiceEndpoint classe.
Une partie du modèle de référence de point de terminaison est que chaque référence peut contenir certains paramètres de référence qui ajoutent des informations d’identification supplémentaires. Dans WCF, ces paramètres de référence sont modélisés en tant qu’instances de AddressHeader classe.
Dans cet exemple, le client ajoute un paramètre de référence au EndpointAddress point de terminaison du client. Le service recherche ce paramètre de référence et utilise sa valeur dans la logique de son opération de service « Hello ».
Client
Pour que le client envoie un paramètre de référence, il doit ajouter un AddressHeader à la EndpointAddress de ServiceEndpoint. Étant donné que la classe est immuable, la EndpointAddress modification d’une adresse de point de terminaison doit être effectuée à l’aide de la EndpointAddressBuilder classe. Le code suivant initialise le client pour envoyer un paramètre de référence dans le cadre de son message.
HelloClient client = new HelloClient();
EndpointAddressBuilder builder =
new EndpointAddressBuilder(client.Endpoint.Address);
AddressHeader header =
AddressHeader.CreateAddressHeader(IDName, IDNamespace, "John");
builder.Headers.Add(header);
client.Endpoint.Address = builder.ToEndpointAddress();
Le code crée un EndpointAddressBuilder en utilisant l’original EndpointAddress comme valeur initiale. Il ajoute ensuite un en-tête d’adresse nouvellement créé, l’appel à CreateAddressHeader crée un en-tête avec un nom, un espace de noms et une valeur particulier. Ici, la valeur est « John ». Une fois l'en-tête ajouté au générateur, la méthode ToEndpointAddress() reconvertit le générateur (altérable) en une adresse de point de terminaison (immuable) assignée de nouveau au champ d'adresse de point de terminaison du client.
À présent, lorsque le client appelle Console.WriteLine(client.Hello());, le service peut obtenir la valeur de ce paramètre d’adresse, comme indiqué dans la sortie résultante du client.
Hello, John
Serveur
L’implémentation de l’opération de service Hello() utilise le OperationContext actuel pour inspecter les valeurs des en-têtes sur le message entrant.
string id = null;
// look at headers on incoming message
for (int i = 0;
i < OperationContext.Current.IncomingMessageHeaders.Count;
++i)
{
MessageHeaderInfo h = OperationContext.Current.IncomingMessageHeaders[i];
// for any reference parameters with the correct name & namespace
if (h.IsReferenceParameter &&
h.Name == IDName &&
h.Namespace == IDNamespace)
{
// read the value of that header
XmlReader xr = OperationContext.Current.IncomingMessageHeaders.GetReaderAtHeader(i);
id = xr.ReadElementContentAsString();
}
}
return "Hello, " + id;
Le code recherche les en-têtes correspondant à des paramètres de référence contenant le nom défini en parcourant tous les en-têtes figurant dans le message entrant. Lorsque le paramètre est trouvé, il lit la valeur du paramètre et le stocke dans la variable « id ».
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 l’édition C# ou Visual Basic .NET de la solution, conformez-vous aux instructions figurant dans Building the Windows Communication Foundation Samples.
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.