Partager via


Définition des propriétés d’utilisation et de style

L’exemple UseAndStyle montre comment utiliser les propriétés Use et Style sur le XmlSerializerFormatAttribute et le DataContractFormatAttribute. Ces propriétés affectent la mise en forme des messages. Par défaut, le corps du message est mis en forme avec le style défini sur Document. Ces paramètres peuvent être spécifiés au niveau du contrat de service ou au niveau du contrat d’opération.

Remarque

La procédure d’installation et les instructions de génération de cet exemple se trouvent à la fin de cette rubrique.

La Style propriété de style détermine la façon dont les métadonnées WSDL pour le service sont mises en forme. Les valeurs possibles sont Document, et Rpc. RPC signifie que la représentation WSDL des messages échangés pour une opération contient des paramètres comme s’il s’agissait d’un appel de procédure distante. Voici un exemple.

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

La définition du style Document signifie que la représentation WSDL contient un élément unique qui représente le document échangé pour une opération, comme illustré dans l’exemple suivant.

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

La Use propriété détermine le format du message. Les valeurs possibles sont Literal et Encoded; la valeur par défaut est Literal. Littéral signifie que le message est une instance littérale du schéma dans WSDL, comme illustré dans l’exemple document/littéral suivant.

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

Encodé signifie que les schémas du WSDL sont des spécifications abstraites qui sont codées conformément aux règles mentionnées dans la section 5 de SOAP 1.1. Voici un exemple RPC/Encoded.

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

Le profil de base WS-I 1.0 interdit l’utilisation de Encoded et vous ne devez l’utiliser que si cela est requis par les services hérités. Le Encoded format de message est disponible uniquement lors de l’utilisation du xmlSerializer.

Pour vous permettre de voir les messages envoyés et reçus, cet exemple est basé sur le suivi et la journalisation des messages. La configuration du service et le code source ont été modifiés pour activer et utiliser le suivi et la journalisation des messages. En outre, le WSHttpBinding fichier a été configuré sans sécurité, de sorte que les messages consignés peuvent être affichés dans un format non chiffré. Les journaux de trace résultants (System.ServiceModel.e2e et Message.log) doivent être consultés à l’aide de l’outil Visionneuse de trace de service (SvcTraceViewer.exe). Les traces sont configurées pour être créées dans le dossier C :\LOGS. Créez le dossier avant d’exécuter l’exemple. Pour afficher le contenu des messages dans l’outil Visionneuse de trace, sélectionnez Messages dans les volets gauche et droit de l’outil.

Le code suivant montre le contrat de service avec la propriété Use définie sur OperationFormatUse, et le corps du message dont le format a été changé de la valeur par défaut OperationFormatStyle à Document.

[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 voir la différence entre les différents paramètres Use et Style, modifiez-les dans le service, régénérez le client, exécutez l'exemple fourni, et examinez le fichier C:\logs\message.logs avec l'outil Service Trace Viewer. Observez également l’impact sur les métadonnées en affichant http://localhost/ServiceModelSamples/service.svc?wsdl. Les métadonnées des services sont généralement divisées en plusieurs pages. La page wsdl principale contient les liaisons WSDL, mais affichez http://localhost/ServiceModelSamples/service.svc?wsdl=wsdl0 pour 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 d’installation unique pour les exemples Windows Communication Foundation.

  2. Créez un répertoire C :\LOGS pour la journalisation des messages. Accordez à l'utilisateur des autorisations d'écriture du 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 Building the Windows Communication Foundation Samples.

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