Partager via


Setting the Use and Style Properties

Cet exemple illustre comment utiliser les propriétés Use et Style des attributs XmlSerializerFormatAttribute et DataContractFormatAttribute. Ces propriétés affectent la manière dont les messages sont mis en forme. Par défaut, la propriété de style, en fonction de laquelle le corps des messages est mis en forme, a pour valeur Document. Ces paramètres peuvent être spécifiés dans les contrats de service ou d'opération.

ms752219.note(fr-fr,VS.90).gifRemarque :
La procédure d'installation ainsi que les instructions de génération relatives à cet exemple figurent en fin de rubrique.

La propriété de style Style détermine la manière dont les métadonnées WSDL du service sont mises en forme. Cette propriété peut avoir les valeurs suivantes : Document et Rpc. RPC signifie que la représentation WSDL des messages échangés pour une opération contient des paramètres propres à un appel de procédure distante. Un exemple est présenté ci-dessous.

<wsdl:message name="IUseAndStyleCalculator_Add_InputMessage">
    <wsdl:part name="n1" type="xsd:double"/>
    <wsdl:part name="n2" type="xsd:double"/>
</wsdl:message>

Avec le style Document, la représentation WSDL contient un élément unique qui représente le document échangé pour une opération, tel qu'illustré dans l'exemple suivant.

<wsdl:message name="IUseAndStyleCalculator_Add_InputMessage">
    <wsdl:part name="parameters" element="tns:Add"/>
</wsdl:message>

La propriété Use détermine la mise en forme des messages. Les valeurs possibles de cette propriété sont Literal et Encoded. Sa valeur par défaut est Literal. Cette dernière valeur signifie que le message correspond à une instance littérale du schéma dans le WSDL, tel qu'illustré dans l'exemple document/littéral suivant.

<Add xmlns="http://Microsoft.ServiceModel.Samples">
    <n1>100</n1>
    <n2>15.99</n2>
</Add>

La valeur Encoded signifie que les schémas du WSDL correspondent à des spécifications abstraites codées selon les règles figurant dans SOAP 1.1, section 5. Dans l'exemple ci-dessous, les valeurs RPC/Encoded sont définies.

<q1:Add xmlns:q1="http://Microsoft.ServiceModel.Samples">
    <n1 xsi:type="xsd:double" >100</n1>
    <n2 xsi:type="xsd:double" >15.99</n2>
</q1:Add>

Le profil WS-I Basic Profile 1.0 ne permet pas d'utiliser Encoded. Vous devez uniquement utiliser ce profil lorsque requis par les services hérités. Le format de message Encoded est disponible uniquement lorsque le sérialiseur XmlSerializer est utilisé.

Cet exemple est basé sur Tracing and Message Logging afin que vous puissiez consulter les messages envoyés et reçus. La configuration du service et le code source ont été modifiés pour activer le suivi et l'enregistrement des messages et permettre leur utilisation. En outre, la liaison WsHttpBinding a été configurée sans mode de sécurité. Les messages enregistrés peuvent donc être affichés dans un format non chiffré. Les journaux de suivis obtenus (System.ServiceModel.e2e et Message.log) doivent être affichés à l'aide de Service Trace Viewer Tool. Les suivis sont configurés de sorte à être créés dans le dossier C:\LOGS. Créez ce dossier avant d'exécuter l'exemple. Pour consulter le contenu des messages à l'aide de l'outil Service Trace Viewer, sélectionnez Messages à la fois dans les volets de droite et de gauche de cet outil.

Dans le contrat de service défini par le code suivant, la propriété Use a la valeur Encoded et le format du corps du message au lieu d'avoir la valeur par défaut Document a la valeur Rpc.

[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples"),
XmlSerializerFormat(Style = OperationFormatStyle.Rpc, 
                                 Use = OperationFormatUse.Encoded)]
public interface IUseAndStyleCalculator
{
    [OperationContract]
    double Add(double n1, double n2);
    [OperationContract]
    double Subtract(double n1, double n2);
    [OperationContract]
    double Multiply(double n1, double n2);
    [OperationContract]
    double Divide(double n1, double n2);
}

Pour se rendre compte des différences existant entre les paramètres Use et Style, modifiez-les au niveau du service, régénérez le client, exécutez l'exemple, puis examinez le fichier c:\logs\message.logs à l'aide de l'outil Service Trace Viewer. Observez également leur impact sur les métadonnées en consultant https://localhost/ServiceModelSamples/service.svc? wsdl. En principe, les métadonnées des services sont réparties sur plusieurs pages. La page wsdl principale contient les liaisons WSDL, mais ouvrez le fichier https://localhost/ServiceModelSamples/service.svc? wsdl=wsdl0 afin d'observer les définitions de message.

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. Créez un répertoire C:\LOGS pour l'enregistrement des messages. Accordez à l'utilisateur des droits d'accès en écriture au service réseau pour ce répertoire.

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

  4. 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.

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