Envoi de demandes SOAP à l'aide du client Visual Studio 2005 (C#)
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é.
Cette rubrique décrit un exemple d'application dans lequel un client Visual Studio 2005 envoie des demandes SOAP à une instance de SQL Server et traite la réponse SOAP. Les demandes sont envoyées pour les méthodes de point de terminaison créées dans la rubrique Exemples d'applications pour l'envoi de demandes de services Web XML natifs.
Pour utiliser cette application, il est recommandé d'avoir assimilé le contenu relatif aux concepts et aux procédures incluses dans les rubriques Configuration du serveur pour qu'il écoute les demandes de services Web XML natifs et Écriture d'applications clientes.
[!REMARQUE]
Cet exemple d'application requiert une préparation initiale. Avant de poursuivre l'utilisation de l'exemple d'application, suivez la procédure indiquée dans la rubrique Exemples d'applications pour l'envoi de demandes de services Web XML natifs.
Envoi de demandes SOAP
Dans cette application, vous configurez un formulaire dont les boutons et les zones de texte permettent d'envoyer des demandes SOAP au point de terminaison.
Lorsqu'une demande SOAP pour la procédure stockée GetCustomerInfo est envoyée, la valeur de l'ID client fournie dans une zone de texte est transmise en tant que paramètre d'entrée. Si aucune valeur n'est spécifiée dans la zone de texte, le système considère qu'elle contient une chaîne vide et retourne les clients dont la valeur CustomerID correspond à une chaîne vide. Si la valeur NULL (null) est entrée, le système retourne les clients dont la valeur CustomerID est NULL. Lorsque cela se produit, le système ajoute automatiquement l'attribut xsi:nil = 'true' à la demande SOAP pour indiquer une valeur de paramètre NULL.
La procédure stockée GetCustomerInfo indique comment gérer les paramètres d'entrée, les paramètres de sortie, les messages d'erreur et les résultats. L'application envoie également des demandes SOAP pour la fonction définie par l'utilisateur. En outre, elle envoie des demandes SOAP pour les requêtes appropriées suivantes :
Requête SELECT permettant d'extraire tous les employés
Requête SELECT permettant d'extraire un employé dont l'ID est fourni en tant que paramètre d'entrée
Traitement des réponses SOAP
Lorsque les résultats d'une demande SOAP sont retournés sous la forme d'un tableau d'objets, l'application cliente identifie le type de chaque objet du tableau, puis traite l'objet en conséquence. Ensuite, l'application affiche les informations suivantes sur chaque élément du tableau d'objets :
le type de données de la valeur de l'élément du tableau ;
la valeur : ensemble de résultats, code de retour, valeurs des paramètres de sortie, etc.
Création d'un exemple fonctionnel
En raison du nombre élevé d'étapes à suivre pour créer cet exemple, l'application est divisée en cinq parties :
Première partie : exécuter la procédure stockée GetCustomerInfo
Deuxième partie : exécuter SP
Troisième partie : exécuter la requête SQL sans paramètres
Quatrième partie : exécuter la requête SQL avec des paramètres
Cinquième partie : exécuter la fonction définie par l'utilisateur
Chaque partie fournit un ensemble d'instructions. À la fin de chaque partie, vous pouvez tester l'application.
Première partie : exécuter la procédure stockée GetCustomerInfo
Sur l'ordinateur client, ouvrez le groupe de programmes Microsoft Visual Studio 2005 et démarrez Visual Studio 2005.
Cliquez sur Nouveau projet.
Sélectionnez Projets Visual C# comme type de projet.
Spécifiez NativeSOAPApp1 comme nom de projet.
Spécifiez l'emplacement où vous souhaitez enregistrer le projet.
Sélectionnez Application Windows comme modèle, puis cliquez sur OK.
Dans la fenêtre Explorateur de solutions, cliquez avec le bouton droit sur Références, puis sélectionnez Ajouter une référence Web. Pour ajouter une référence Web, vous pouvez également, dans le menu Projet, sélectionner Ajouter une référence Web.
Dans la zone Adresse, tapez https://Server/sql?wsdl, puis appuyez sur ENTRÉE. Vous devez entrer le nom de serveur dans l'URL.
Cliquez sur Ajouter une référence. Cette opération crée les classes proxy qui vous permettent d'appeler les méthodes dans le document WSDL.
Deuxième partie : exécuter SP
Dans le menu Affichage, cliquez sur Boîte à outils pour ouvrir la boîte à outils dans le volet Form1.cs [Design]. Vous pouvez également appuyer sur CTRL + ALT + X pour ouvrir la boîte à outils.
Dans Formulaire1, ajoutez une zone de texte (textBox1), un bouton (bouton1) et une zone de liste (listBox1).
Cliquez avec le bouton droit sur la zone de texte, puis sélectionnez Propriétés. Dans la zone Texte, remplacez la valeur textBox1 par 1. Il s'agit de la valeur par défaut de l'ID client.
Cliquez avec le bouton droit sur bouton1, puis sélectionnez Propriétés.
Dans la zone de propriété Texte, remplacez la valeur bouton1 par ExecSP.
Remplacez la valeur de propriété (nom) par ExecSP.
Cliquez avec le bouton droit sur la zone de liste (listBox1), puis sélectionnez Propriétés. Remplacez la valeur de propriété (HorizontalScrollbar) par True.
Double-cliquez sur ExecSP.
Copiez le code de la rubrique Code C# pour ExecSP dans cette fonction.
Mettez à jour le code. Remplacez les références deserver par le nom d'hôte identifié lors de la création du point de terminaison à l'aide de la fonction CREATE ENDPOINT.
Enregistrez et compilez le projet. Pour plus d'informations, consultez la section précédente « Compilation du code ».
Troisième partie : exécuter la requête SQL sans paramètres
Cette partie de l'application cliente exécute une requête appropriée (requête FOR XML) qui extrait les employés de la table Employee de la base de données AdventureWorks.
Dans Formulaire1, dans l'onglet [Design], ajoutez un bouton (bouton1).
Cliquez avec le bouton droit sur ce nouveau bouton, puis sélectionnez Propriétés.
Dans la zone de propriété Texte, remplacez la valeur bouton1 par BatchQueryFindAllEmps.
Remplacez la valeur de propriété (nom) par BatchQueryFindAllEmps.
Double-cliquez sur BatchQueryFindAllEmps.
Copiez le code de la rubrique Code C# pour BatchQueryFindAllEmps dans cette fonction.
Mettez à jour le code. Remplacez les références à server par le nom d'hôte identifié lors de la création du point de terminaison à l'aide de la fonction CREATE ENDPOINT.
Enregistrez et compilez le projet. Pour plus d'informations, consultez la section précédente « Compilation du code ».
Quatrième partie : exécuter la requête SQL avec des paramètres
Cette partie, similaire à la partie précédente, diffère de celle-ci en ce sens que la demande SOAP pour la requête appropriée comprend un paramètre de requête. La requête FOR XML extrait les informations relatives à l'employé dont l'ID est spécifié.
Dans Formulaire1, sous l'onglet [Design], ajoutez un bouton (bouton1).
Cliquez avec le bouton droit sur ce nouveau bouton, puis sélectionnez Propriétés.
Dans la zone de propriété Texte, remplacez la valeur bouton1 par BatchQueryFindAnEmp.
Remplacez la valeur de propriété (nom) par BatchQueryFindAnEmp.
Double-cliquez sur BatchQueryFindAnEmp.
Copiez le code de la rubrique Code C# pour BatchQueryFindAnEmp dans cette fonction.
Mettez à jour le code. Remplacez les références à server par le nom d'hôte identifié lors de la création du point de terminaison à l'aide de la fonction CREATE ENDPOINT.
Enregistrez et compilez le projet. Pour plus d'informations, consultez la section précédente « Compilation du code ».
Cinquième partie : exécuter la fonction définie par l'utilisateur
Dans cette partie, l'application cliente envoie une demande SOAP pour la méthode Web UDFReturningScalar. Cette méthode Web correspond à une fonction définie par l'utilisateur qui retourne une valeur entière.
Dans Formulaire1, dans l'onglet [Design], ajoutez un bouton (bouton1).
Cliquez avec le bouton droit sur ce nouveau bouton, puis sélectionnez Propriétés.
Dans la zone de propriété Texte, remplacez la valeur bouton1 par ExecUDFReturningScalar.
Remplacez la valeur de propriété (nom) par ExecUDFReturningScalar.
Double-cliquez sur ExecUDFReturningScalar.
Ajoutez le code de la rubrique Code C# pour ExecUDFReturningScalar dans cette fonction.
Mettez à jour le code. Remplacez les références à server par le nom d'hôte identifié lors de la création du point de terminaison à l'aide de la fonction CREATE ENDPOINT.
Enregistrez et compilez le projet. Pour plus d'informations, consultez la section précédente « Compilation du code ».
Cliquez sur ExecUDFReturningScalar. La valeur retournée par la fonction définie par l'utilisateur apparaît dans la zone de liste.
Étant donné que le point de terminaison spécifie l'authentification intégrée, la ligne suivante apparaît dans le code : proxy.Credentials = System.Net.CredentialCache.DefaultCredentials;
Si vous utilisez l'authentification SQL Server, il est recommandé de supprimer cette ligne et de la remplacer par du code qui implémente des en-têtes WS-Security afin de fournir des informations d'authentification basées sur SQL Server. Pour plus d'informations, consultez Authentification SQL Server sur SOAP.
[!REMARQUE]
Si vous utilisez l'authentification SQL Server ou l'authentification de base, SQL Server impose le recours au protocole SSL (Secure Sockets Layer) afin de sécuriser la transmission chiffrée des informations d'authentification utilisateur qui, sinon, apparaîtraient sous forme de texte en clair. Pour plus d'informations sur l'utilisation du protocole SSL avec des points de terminaison HTTP, consultez Configuration d'un certificat en vue de son utilisation par SSL.
Compilation du code
SQL Server installe le .NET Framework 2.0 dans le cadre de son processus d'installation. Ces instructions de compilation utilisent la dernière version de .NET Framework. (Il s'agit du numéro le plus élevé dans le dossier \WINDOWS\Microsoft.NET\Framework.)
Pour compiler l'exemple de code
Enregistrez la totalité du projet.
Ouvrez l'invite de commandes, puis recherchez le dossier dans lequel le projet est enregistré.
À partir de ce dossier, copiez le fichier Reference.cs à partir du sous-dossier Web Reference\Server. (Par exemple, copiez « Web Reference\Server\Reference.cs ».) Les fichiers Form1.cs et Reference.cs doivent figurer dans le même dossier.
Compilez le code et spécifiez le nom du fichier exécutable (.exe). Par exemple, si le nom du fichier exécutable est NativeSOAPApp1.exe, la ligne de commande est la suivante :
\WINDOWS\Microsoft.NET\Framework\v2.0.xxxxx\csc.exe /out:NativeSOAPApp1.exe Form1.cs Reference.cs
xxxxx représente le numéro de dossier correspondant à la version de .NET Framework.
Cette opération permet de créer le fichier exécutable (NativeSOAPApp1.exe) dans le répertoire actif.
Si vous utilisez une version antérieure de .NET Framework, une erreur d'exécution peut se produire. Si tel est le cas, essayez de mettre à jour la procédure stockée GetCustomerInfo en ajoutant la clause FOR XML AUTO à la fin de l'instruction SELECT, comme suit :
SELECT TOP 3 SalesOrderID, OrderDate
FROM SalesOrderHeader
WHERE CustomerID = @CustomerID
FOR XML AUTO
Les résultats de l'exécution de la procédure stockée apparaissent dans la zone de liste.
Voir aussi