Un service Web est une fonction basée sur le réseau qui peut être obtenue par des applications Web via des protocoles réseau Web. Le développement de services Web comprend principalement les trois aspects suivants :
Créer un service Web
Créer un serveur proxy
Utiliser des services Web
Un service Web est une application Web. Sa forme de base est une classe contenant plusieurs méthodes qui peuvent être appelées par d'autres applications. Elle utilise également une structure de code cachée telle qu'une page Web ASP.NET, mais elle ne possède pas d'interface utilisateur.
Pour mieux comprendre ce concept, créons un service Web qui fournit des informations sur le cours des actions. Les clients du service peuvent rechercher les noms et les prix associés via l'étiquette d'un titre. Pour simplifier cet exemple, nous fixons le cours de l'action à une valeur fixe et l'enregistrons dans une liste bidimensionnelle. Ce service Web contient trois méthodes :
Une méthode HelloWorld par défaut
Une méthode GetName
Une méthode GetPrice
Suivez les étapes suivantes pour créer le service :
Étape (1) : Sélectionnez Fichier -> Nouveau -> Site Web dans Visual Studio, puis sélectionnez Service Web ASP.NET.
Étape (2) : Un fichier de service Web nommé Service.asmx et son code sont masqués, et Service.cs sera créé dans le chemin App_Code de ce projet.
Étape (3) : modifiez les noms de fichiers en StockService.asmx et StockService.cs.
Étape (4) : Le fichier .asmx simplifie une instruction WebService comme suit :
<%@ WebService Language="C#" CodeBehind="~/App_Code/StockService.cs" Class="StockService" %>
Étape (5) : Ouvrez le fichier StockService.cs Le code généré dans ce fichier est le code de base du service Hello World. Le code du service Web par défaut est le suivant :
en utilisant System ; en utilisant System.Collections ; en utilisant System.ComponentModel ; en utilisant System.Linq ; en utilisant System.Web.Services ; ; espace de noms StockService { // <résumé> // Description récapitulative de Service1 // <résumé> [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [ToolboxItem(false)] // Pour permettre à ce service Web d'être appelé à partir d'un script, // à l'aide d'ASP.NET AJAX, décommentez la ligne suivante // [System.Web.Script.Services.ScriptService] classe publique Service1 : System.Web.Services.WebService { [WebMethod] chaîne publique HelloWorld() { return "Hello World" } } }
Étape (6) : Modifiez le code dans le fichier pour ajouter un pointeur bidimensionnel qui stocke la chaîne de l'étiquette, du nom et du prix de chaque stock, et écrivez deux méthodes Web pour obtenir des informations sur le stock comme suit :
en utilisant System ; en utilisant System.Linq ; en utilisant System.Web.Services ; en utilisant System.Web.Services.Protocols ; en utilisant System.Xml.Linq ; ")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] // Pour permettre à ce service Web d'être appelé à partir d'un script, // en utilisant ASP.NET AJAX, décommentez la ligne suivante. // [System.Web.Script.Services.ScriptService] public class StockService : System.Web.Services.WebService { public StockService () { //Décommentez ce qui suit si vous utilisez des composants conçus //InitializeComponent( }); string[,] stocks = {{"RELIND", "Reliance Industries", "1060.15"}, {"ICICI", "ICICI Bank", "911.55"}, {"JSW", "JSW Steel", "1201.25"}, {"WIPRO", "Wipro Limited", "1194.65"}, {"SATYAM", "Satyam Computers", "91.10"} } ; string HelloWorld() { return "Hello World" } [WebMethod] public double GetPrice(string symbol) { //il prend le symbole comme paramètre et renvoie le prix pour (int i = 0; i < stocks.GetLength(0); i++) { if (String.Compare(symbol, stocks[i, 0], true) == 0) return Convert.ToDouble(stocks[i , 2]); } return 0; } [WebMethod] public string GetName(string symbol) { // Il prend le symbole comme paramètre et // renvoie le nom du stock pour (int i = 0; i < stocks.GetLength(0); i++) { if (String.Compare(symbol, stocks[i, 0], true) == 0) return stocks[i, 1]; return "Stock Not Found" } }
Étape (7) : L'exécution de l'application de service Web donne une page de test de service Web où nous pouvons tester les méthodes de service.
Étape (8) : Cliquez sur le nom d'une méthode pour confirmer si elle fonctionne correctement.
Étape (9) : Pour détecter la méthode GetName, fournissez l'une des balises de stock déjà définies. Si elle est correcte, le nom du stock concerné sera renvoyé.
Pour utiliser ce service web, nous créons un site web sous la même solution (Solution). Il suffit de cliquer avec le bouton droit sur le nom de la solution dans le gestionnaire de solutions. La page web appelée par le service web doit avoir une gestion de contrôle pour afficher le résultat renvoyé et deux. boutons de commande, un pour le retour et un autre pour démarrer l'appel au service.
Le contenu du fichier de l'application Web est le suivant :
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="wsclient._Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional// FR" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title> Page sans titre </title> </head> <body> <form id="form1 " runat="server"> <div> <h3>Utilisation du service Stock</h3> <br /> <br /> <asp:Label ID="lblmessage" runat="server"></asp:Label> <br /> <br /> <asp:Button ID="btnpostback" runat="server" onclick="Button1_Click" Text="Post Back" /> <asp:Button ID="btnservice" runat="server" onclick="btnservice_Click" Text="Get Stock" /> </div> </form> </body> </html>
Le code de l'application Web est le suivant :
en utilisant System ; en utilisant System.Collections ; en utilisant System.Data ; en utilisant System.Web.Security ; en utilisant System.Web.UI.HtmlControls ; ; en utilisant System.Web.UI.WebControls ; en utilisant System.Web.UI.WebControls.WebParts ; en utilisant System.Xml.Linq // il s'agit du proxy utilisant l'espace de noms wsclient ; { public partial class _Default : System.Web.UI.Page { protected void Page_Load (object sender, EventArgs e) { if (!IsPostBack) { lblmessage.Text = "Premier temps de chargement : " + DateTime.Now.ToLongTimeString } else { lblmessage.Text = "PostBack at: " + DateTime.Now.ToLongTimeString(); } } protected void btnservice_Click(expéditeur d'objet, EventArgs e) { StockService proxy = new StockService(); lblmessage.Text = String.Format("Prix SATYAM actuel :{0}", proxy.GetPrice("SATYAM").ToString() } } }
Un serveur proxy fait référence à un remplacement du code du service Web. Avant d'utiliser le service Web, nous devons créer un serveur proxy. Ce serveur proxy est enregistré par l'application client. L'application client implémente ensuite l'appel au service Web comme si elle utilisait une méthode native.
Le serveur proxy effectuera l'appel et l'enverra au serveur dans le format approprié sous forme de requête SOAP. SOAP prend en charge le protocole d'accès aux objets simples. Ce protocole est adapté à l'échange de données de services Web.
Lorsque le serveur répond et renvoie un paquet SOAP au client, le serveur proxy présente le tout à l'application client.
Avant d'appeler le service Web à l'aide de btnservice_click, l'application Web doit être ajoutée à l'application. Cela créera de manière transparente une classe proxy qui pourra être utilisée par l'événement btnservice_click.
protected void btnservice_Click (expéditeur d'objet, EventArgs e) { StockService proxy = new StockService (); lblmessage.Text = String.Format ("Prix SATYAM actuel : {0}", proxy.GetPrice ("SATYAM").ToString()) ; }
Suivez les étapes suivantes pour créer un proxy :
Étape (1) : cliquez avec le bouton droit sur l'entrée de l'application Web dans l'Explorateur de solutions et sélectionnez « Ajouter une référence Web ».
Étape (2) : Sélectionnez 'Web Services dans cette solution' et la référence de service stock que nous avons écrite vous sera renvoyée.
Étape (3) : Cliquez sur le service pour ouvrir la page de test. Lors de la création du proxy, la valeur par défaut est 'localhost'. Bien sûr, vous pouvez également le renommer. Cliquez sur « Ajouter une référence » pour ajouter un proxy à l'application client.
Ajoutez l'instruction suivante à votre code pour inclure l'agent :
en utilisant localhost ;