Ein Webdienst ist eine netzwerkbasierte Funktion, die von Webanwendungen über Webnetzwerkprotokolle abgerufen werden kann. Die Entwicklung von Webdiensten umfasst hauptsächlich die folgenden drei Aspekte:
Webservice erstellen
Erstellen Sie einen Proxyserver
Nutzen Sie Webdienste
Ein Webdienst ist eine Webanwendung. Seine Grundform ist eine Klasse, die mehrere Methoden enthält, die von anderen Anwendungen aufgerufen werden können. Er verwendet auch eine versteckte Codestruktur wie eine ASP.NET-Webseite, verfügt jedoch nicht über eine Benutzeroberfläche.
Um dieses Konzept besser zu verstehen, erstellen wir einen Webdienst, der Aktienkursinformationen bereitstellt. Kunden des Dienstes können über das Tag einer Aktie nach verwandten Namen und Preisen suchen. Um dieses Beispiel zu vereinfachen, setzen wir den Aktienkurs auf einen festen Wert und speichern ihn in einer zweidimensionalen Liste. Dieser Webdienst enthält drei Methoden:
Eine Standard-HelloWorld-Methode
Eine GetName-Methode
Eine GetPrice-Methode
Führen Sie die folgenden Schritte aus, um den Dienst zu erstellen:
Schritt (1) : Wählen Sie in Visual Studio Datei -> Neu -> Website und dann ASP.NET-Webdienst aus.
Schritt (2) : Eine Webdienstdatei namens Service.asmx und ihr Code werden ausgeblendet und Service.cs wird im App_Code-Pfad dieses Projekts erstellt.
Schritt (3) : Ändern Sie die Dateinamen in StockService.asmx und StockService.cs.
Schritt (4) : Die .asmx-Datei vereinfacht eine WebService-Anweisung wie folgt:
<%@ WebService Language="C#" CodeBehind="~/App_Code/StockService.cs" Class="StockService" %>
Schritt (5) : Öffnen Sie die Datei StockService.cs. Der in dieser Datei generierte Code ist der Basiscode des Hello World-Dienstes. Der Standard-Webdienstcode lautet wie folgt:
unter Verwendung von System.Collections; unter Verwendung von System.Web.Services; unter Verwendung von System.Xml.Linq; ; namespace StockService { // <summary> // Zusammenfassende Beschreibung für Service1 // <summary> [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [ToolboxItem(false)] // Damit dieser Webdienst aus einem Skript aufgerufen werden kann, // mit ASP.NET AJAX, entkommentieren Sie die folgende Zeile // [System.Web.Script.Services.ScriptService] public class Service1 : System.Web.Services.WebService { [WebMethod] public string HelloWorld() { return "Hello World" } } }
Schritt (6) : Ändern Sie den Code in der Datei, um einen zweidimensionalen Zeiger hinzuzufügen, der die Zeichenfolge mit dem Etikett, dem Namen und dem Preis jeder Aktie speichert, und schreiben Sie zwei Webmethoden, um Aktieninformationen wie folgt zu erhalten.
using System; using System.Web.Services; using System.Xml.Linq; ")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] // Damit dieser Webdienst aus dem Skript aufgerufen werden kann, // mit ASP.NET AJAX, kommentieren Sie ihn aus die folgende Zeile. // [System.Web.Script.Services.ScriptService] public class StockService : System.Web.Services.WebService { public StockService () { //Kommentieren Sie Folgendes aus, wenn Sie entworfene Komponenten verwenden //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) { //es nimmt das Symbol als Parameter und Gibt den Preis zurück für (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) { // Es nimmt das Symbol als Parameter und // gibt den Namen der Aktie zurück für (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";
Schritt (7) : Beim Ausführen der Webdienstanwendung wird eine Webdienst-Testseite angezeigt, auf der wir die Dienstmethoden testen können.
Schritt (8) : Klicken Sie auf den Namen einer Methode, um zu bestätigen, ob sie ordnungsgemäß ausgeführt wird.
Schritt (9) : Um die GetName-Methode zu erkennen, geben Sie eines der bereits definierten Aktien-Tags an. Wenn es korrekt ist, wird der Name der relevanten Aktie zurückgegeben.
Um diesen Webdienst zu nutzen, erstellen wir einfach eine Website unter derselben Lösung (Lösung). Steuertasten, eine zum Zurückkehren und eine zum Starten des Anrufs zum Dienst.
Der Dateiinhalt der Webanwendung ist wie folgt:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="wsclient._Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional// DE" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title> Unbenannte Seite </title> </head> <body> <form id="form1 " runat="server"> <div> <h3>Verwendung des Aktiendienstes</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>
Der Code für die Webanwendung lautet wie folgt:
Verwenden von System.Collections; Verwenden von System.Web.UI; Verwenden von System.Web.UI ; using System.Web.UI.WebControls; using System.Xml.Linq; //dies ist der Proxy, der localhost verwendet; { öffentliche Teilklasse _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { lblmessage.Text = "First Loading Time: " + DateTime.Now.ToLongTimeString } else { lblmessage.Text = "PostBack at: " + DateTime.Now.ToLongTimeString(); protected void btnservice_Click(object sender, EventArgs e) { StockService Proxy = new StockService(); lblmessage.Text = String.Format("Current SATYAM Price:{0}", Proxy.GetPrice("SATYAM").ToString() } } }
Ein Proxyserver bezieht sich auf einen Ersatz für Webdienstcode. Bevor wir den Webdienst nutzen können, müssen wir einen Proxyserver erstellen. Dieser Proxyserver wird von der Clientanwendung registriert. Die Clientanwendung implementiert dann den Aufruf an den Webdienst so, als würde sie eine native Methode verwenden.
Der Proxyserver führt den Anruf durch und sendet ihn im entsprechenden Format als SOAP-Anfrage an den Server. SOAP unterstützt das Simple Object Access Protocol. Dieses Protokoll eignet sich für den Datenaustausch über Webservices.
Wenn der Server antwortet und ein SOAP-Paket an den Client zurücksendet, präsentiert der Proxyserver alles der Clientanwendung.
Bevor der Webservice mit btnservice_click aufgerufen wird, sollte die Webanwendung zur Anwendung hinzugefügt werden. Dadurch wird transparent eine Proxy-Klasse erstellt, die vom btnservice_click-Ereignis verwendet werden kann.
protected void btnservice_Click(object sender, EventArgs e) { StockService Proxy = new StockService(); lblmessage.Text = String.Format("Current SATYAM Price: {0}", Proxy.GetPrice("SATYAM").ToString()) ; }
Führen Sie die folgenden Schritte aus, um einen Proxy zu erstellen:
Schritt (1) : Klicken Sie mit der rechten Maustaste auf den Webanwendungseintrag im Projektmappen-Explorer und wählen Sie „Webverweis hinzufügen“.
Schritt (2) : Wählen Sie „Webdienste in dieser Lösung“ und die von uns geschriebene Standarddienstreferenz wird zurückgegeben.
Schritt (3) : Klicken Sie auf den Dienst, um die Testseite zu öffnen. Beim Erstellen des Proxys ist dieser standardmäßig auf „localhost“ eingestellt. Sie können ihn natürlich auch umbenennen. Klicken Sie auf „Referenz hinzufügen“, um der Clientanwendung einen Proxy hinzuzufügen.
Fügen Sie Ihrem Code die folgende Anweisung hinzu, um den Agent einzuschließen:
mit localhost;