Ajout de la prise en charge du suivi SOAP aux applications clientes
Cette fonctionnalité sera supprimée dans une prochaine version de Microsoft SQL Server. Évitez d'utiliser cette fonctionnalité dans de nouveaux travaux de développement et prévoyez de modifier les applications qui utilisent actuellement cette fonctionnalité.
Lorsque vous développez des applications clientes Web pour les services Web XML natifs dans SQL Server, vous disposez d'un outil de dépannage très utile : le suivi et l'observation des messages SOAP échangés entre une instance de SQL Server et votre application.
Cette rubrique utilise un exemple de bibliothèque de classes qui implémente des en-têtes d'extension SOAP prenant en charge le suivi de votre projet d'application cliente dans Visual Studio 2005. Une foi intégrées à votre projet, ces extensions assurent le suivi et l'affichage du contenu réel des demandes et réponses SOAP.
Cette bibliothèque peut être ajoutée à des projets de client SOAP Visual Studio 2005 existants. C'est le cas des applications fournies comme exemples dans Exemples d'applications pour l'envoi de demandes de services Web XML natifs. Il est recommandé de bien maîtriser les concepts et procédures décrits dans les rubriques Configuration du serveur pour qu'il écoute les demandes de services Web XML natifs et Écriture d'applications clientes.
Par ailleurs, consultez les rubriques suivantes si le format des messages SOAP ne vous est pas familier :
Notes
La procédure décrite ci-après suppose que vous avez créé une application cliente SOAP à l'aide de Visual Studio 2005 et que vous avez ajouté une référence Web à un point de terminaison SOAP créé précédemment à l'aide de SQL Server, comme l'explique la rubrique Envoi de demandes SOAP à l'aide du client Visual Studio 2005 (C#).
Pour ajouter l'exemple de bibliothèque de trace à un projet Visual Studio
Utilisez le Bloc-notes pour copier et coller le contenu de Liste du code C# pour la bibliothèque de classes d'exemple de trace SQL SOAP et l'enregistrer sous le nom « SqlSoapTracer.cs » dans le dossier qui contient les fichiers du projet de client SOAP.
Sur l'ordinateur client, ouvrez le groupe de programmes Microsoft Visual Studio 2005 et lancez Microsoft Visual Studio 2005.
Cliquez sur Ouvrir un projet.
Recherchez le nom de votre projet de client et sélectionnez-le (fichier .csproj).
Dans la fenêtre de l'Explorateur de solutions, effectuez les étapes suivantes :
Sélectionnez le nom du projet et cliquez avec le bouton droit de la souris. Pointez sur Ajouter, puis sélectionnez Ajouter un élément existant.
Dans la boîte de dialogue Ajouter un élément existant, accédez à l'emplacement où vous avez enregistré le fichier SqlSoapTracer.cs à l'étape 1 et sélectionnez ce fichier.
Sélectionnez Afficher tous les fichiers et développez le nœud Références Web, puis sélectionnez le fichier Reference.cs.
Dans la fenêtre de l'Éditeur de code, mettez à jour le fichier Reference.cs en y repérant les points d'entrée associés à vos méthodes Web.
Par exemple, si vous ajoutez la prise en charge du suivi des messages SOAP à l'exemple de projet fourni dans Envoi de demandes SOAP à l'aide du client Visual Studio 2005 (C#), les points d'entrée associés aux différentes méthodes Web publiées de ce projet vont s'afficher comme suit :
public object[] GetCustomerInfo([System.Xml.Serialization.XmlElementAttribute(IsNullable=true)] System.Data.SqlTypes.SqlString CustomerID, [System.Xml.Serialization.XmlElementAttribute(IsNullable=true)] ref System.Data.SqlTypes.SqlString OutputParam) { object[] results = this.Invoke("s2MsgGetCustomerInfoSoapIn", new object[] { CustomerID, OutputParam}); OutputParam = ((System.Data.SqlTypes.SqlString)(results[1])); return ((object[])(results[0])); } ... public System.Data.SqlTypes.SqlInt32 UDFReturningAScalar() { object[] results = this.Invoke("s1MsgUDFReturningAScalarSoapIn", new object[0]); return ((System.Data.SqlTypes.SqlInt32)(results[0])); }
Pour ajouter la prise en charge du suivi des messages SOAP lorsque les méthodes Web s'exécutent dans le code client, ajoutez l'appel snoopattribute() suivant dans Reference.cs juste avant le point d'entrée des méthodes à suivre, comme dans l'exemple ci-après.
[snoopattribute()] public object[] GetCustomerInfo(...) {...} ... [snoopattribute()] public System.Data.SqlTypes.SqlInt32 UDFReturningAScalar() {...}
Ce code enregistre une extension SOAP qui appelle la fonction de suivi SOAP des méthodes Web en question lorsqu'elles s'exécutent.
Ajout de la prise en charge du suivi SOAP pour tester votre application cliente
Pour utiliser les extensions de prise en charge du suivi SOAP fournies dans l'exemple de code précédent lors de l'exécution de l'application cliente dans l'environnement de développement Visual Studio, procédez comme suit :
À l'aide de SQL Server Management Studio ou de l'utilitaire de ligne de commande osql, ajoutez une méthode Web qui expose la procédure stockée ou la fonction définie par l'utilisateur que vous souhaitez tester sur votre point de terminaison.
Pour plus d'informations, consultez Exposition de la programmabilité SQL sur le Web.
Dans Visual Studio, codez, déboguez et générez un projet d'application cliente SOAP (si vous ne l'avez pas déjà fait).
Vous pouvez éventuellement utiliser le projet fourni à titre d'exemple dans Envoi de demandes SOAP à l'aide du client Visual Studio 2005 (C#).
Ajoutez la classe SqlSoapTracer.cs au projet comme indiqué dans la section précédente.
Enregistrez, générez et exécutez votre application cliente dans l'environnement de développement Visual Studio.
L'exécution de votre application entraîne la création d'un objet de visualisation du Presse-papiers Windows. Lorsque les méthodes Web que vous avez activées pour le suivi à l'étape 3 s'exécutent, cet objet de visualisation affiche les informations suivantes pour chaque méthode Web :
Message de demande SOAP généré par le code client
Message SOAP de réponse du serveur, renvoyé par les services Web XML natifs pour SQL Server.
Pour afficher le contenu du Presse-papiers après l'activité de suivi des messages, collez le contenu du Presse-papiers Windows dans le Bloc-notes.
Fonctionnement de la prise en charge du suivi des messages SOAP
Le mécanisme de suivi utilise des rappels et des événements prédéfinis qui dépendent de l'implémentation des services Web XML natifs dans SQL Server. Il s'agit des deux événements suivants : BeforeSerialize et AfterSerialize.
Ces événements et rappels permettent d'intercepter et de rediriger vers un flux de sortie la demande SOAP et la réponse SOAP correspondante du serveur. Dans le code fourni à titre d'exemple, le résultat est renvoyé vers un objet System.Windows.Forms.Clipboard. L'objet Clipboard reçoit et affiche les messages SOAP de demande et de réponse qui sont échangés entre le client et le serveur en exécutant des méthodes Web directement précédées d'appels snoopattribute().
Le résultat de la demande du client et la réponse correspondante de SQL Server seront affichés dans un format semblable à la structure des messages de demande SOAP et à la structure des messages de réponse SOAP. La réponse affiche également les résultats générés par le serveur, notamment le résultat XML sérialisé si l'exécution de la méthode Web a réussi. En cas d'erreur, une structure des messages d'erreur SOAP s'affiche à la place du résultat XML sérialisé dans la réponse renvoyée par le serveur.