Web Services - Beispiele
Basierend auf der Webdienstarchitektur erstellen wir im Rahmen der Implementierung von Webdiensten die folgenden zwei Komponenten:
Dienstleister oder Herausgeber
Dies ist der Anbieter des Webdienstes. Der Dienstanbieter implementiert den Dienst und stellt ihn im Internet oder Intranet zur Verfügung.
Wir werden einen einfachen Webdienst mit .NET SDK schreiben und veröffentlichen.
Serviceanforderer oder Verbraucher
Dies ist jeder Verbraucher des Webdienstes. Der Anforderer verwendet einen vorhandenen Webdienst, indem er eine Netzwerkverbindung öffnet und eine XML-Anforderung sendet.
Wir werden auch zwei Webdienst-Anforderer schreiben: einen webbasierten Consumer (ASP.NET-Anwendung) und einen anderen Windows-anwendungsbasierten Consumer.
Im Folgenden finden Sie unser erstes Beispiel für einen Webdienst, der als Dienstanbieter arbeitet und zwei Methoden (add und SayHello) als Webdienste für Anwendungen bereitstellt. Dies ist eine Standardvorlage für einen Webdienst. .NET-Webdienste verwenden die Erweiterung .asmx. Beachten Sie, dass eine als Webdienst bereitgestellte Methode das WebMethod-Attribut hat. Speichern Sie diese Datei als FirstService.asmx im virtuellen IIS-Verzeichnis (wie in der Konfiguration von IIS erläutert; z. B. c: \ MyWebSerces).
FirstService.asmx
<%@ WebService language = "C#" class = "FirstService" %>
using System;
using System.Web.Services;
using System.Xml.Serialization;
[WebService(Namespace = "http://localhost/MyWebServices/")]
public class FirstService : WebService{
[WebMethod]
public int Add(int a, int b) {
return a + b;
}
[WebMethod]
public String SayHello() {
return "Hello World";
}
}
Um einen Webdienst zu testen, muss er veröffentlicht werden. Ein Webdienst kann entweder im Intranet oder im Internet veröffentlicht werden. Wir werden diesen Webdienst auf IIS veröffentlichen, der auf einem lokalen Computer ausgeführt wird. Beginnen wir mit der Konfiguration des IIS.
Öffnen Sie Start → Einstellungen → Systemsteuerung → Verwaltung → Internet Services Manager.
Erweitern Sie die Standardwebsite und klicken Sie mit der rechten Maustaste darauf. Wählen Sie Neu & # rarr; Virtuelles Verzeichnis. Der Assistent zum Erstellen virtueller Verzeichnisse wird geöffnet. Weiter klicken.
Der Bildschirm "Virtual Directory Alias" wird geöffnet. Geben Sie den Namen des virtuellen Verzeichnisses ein. Zum Beispiel MyWebServices. Weiter klicken.
Der Bildschirm "Website-Inhaltsverzeichnis" wird geöffnet.
Geben Sie den Verzeichnispfadnamen für das virtuelle Verzeichnis ein. Zum Beispiel c: \ MyWebServices. Weiter klicken.
Der Bildschirm "Zugriffsberechtigung" wird geöffnet. Ändern Sie die Einstellungen gemäß Ihren Anforderungen. Lassen Sie uns die Standardeinstellungen für diese Übung beibehalten.
Klicken Sie auf die Schaltfläche Weiter. Damit ist die IIS-Konfiguration abgeschlossen.
Klicken Sie auf Fertig stellen, um die Konfiguration abzuschließen.
Kopieren Sie eine HTML-Datei (z. B. x.html) in das oben erstellte virtuelle Verzeichnis (C: \ MyWebServices), um zu testen, ob der IIS ordnungsgemäß konfiguriert wurde. Öffnen Sie nun den Internet Explorer und geben Sie einhttp://localhost/MyWebServices/x.html. Es sollte die Datei x.html öffnen.
Note- Wenn dies nicht funktioniert, versuchen Sie, den lokalen Host durch die IP-Adresse Ihres Computers zu ersetzen. Wenn es immer noch nicht funktioniert, überprüfen Sie, ob IIS ausgeführt wird. Möglicherweise müssen Sie den IIS und das virtuelle Verzeichnis neu konfigurieren.
Um diesen Webdienst zu testen, kopieren Sie FirstService.asmx in das oben erstellte virtuelle IIS-Verzeichnis (C: \ MyWebServices). Öffnen Sie den Webdienst in Internet Explorer (http: //localhost/MyWebServices/FirstService.asmx). Es sollte Ihre Webservice-Seite öffnen. Die Seite sollte Links zu zwei Methoden enthalten, die von unserer Anwendung als Webdienste verfügbar gemacht werden. Herzliche Glückwünsche! Sie haben Ihren ersten Webdienst geschrieben!
Testen des Webdienstes
Wie wir gerade gesehen haben, ist das Schreiben von Webdiensten in .NET Framework einfach. Das Schreiben von Webdienstkonsumenten ist auch im .NET Framework einfach. es ist jedoch etwas komplizierter. Wie bereits erwähnt, werden wir zwei Arten von Dienstkonsumenten schreiben, einen webbasierten und einen anderen anwendungsbasierten Windows-Konsumenten. Lassen Sie uns unseren ersten Web-Service-Konsumenten schreiben.
Webbasierter Service-Verbraucher
Schreiben Sie einen webbasierten Verbraucher wie unten angegeben. Nennen Sie es WebApp.aspx. Beachten Sie, dass es sich um eine ASP.NET-Anwendung handelt. Speichern Sie dies im virtuellen Verzeichnis des Webdienstes (c: \ MyWebServices \ WebApp.axpx).
Diese Anwendung verfügt über zwei Textfelder, mit denen vom Benutzer Zahlen hinzugefügt werden, die hinzugefügt werden sollen. Es hat eine Schaltfläche, Ausführen, die beim Klicken die Webdienste Add und SayHello abruft.
WebApp.aspx
<%@ Page Language = "C#" %>
<script runat = "server">
void runSrvice_Click(Object sender, EventArgs e) {
FirstService mySvc = new FirstService();
Label1.Text = mySvc.SayHello();
Label2.Text = mySvc.Add(Int32.Parse(txtNum1.Text), Int32.Parse(txtNum2.Text)).ToString();
}
</script>
<html>
<head> </head>
<body>
<form runat = "server">
<p>
<em>First Number to Add </em>:
<asp:TextBox id = "txtNum1" runat = "server" Width = "43px">4< /asp:TextBox>
</p>
<p>
<em>Second Number To Add </em>:
<asp:TextBox id = "txtNum2" runat = "server" Width = "44px">5</asp:TextBox>
</p>
<p>
<strong><u>Web Service Result -</u></strong>
</p>
<p>
<em>Hello world Service</em> :
<asp:Label id = "Label1" runat = "server" Font-Underline = "True">Label< /asp:Label>
</p>
<p>
<em>Add Service</em> :
& <asp:Label id = "Label2" runat = "server" Font-Underline = "True">Label</asp:Label>
</p>
<p align = "left">
<asp:Button id = "runSrvice" onclick = "runSrvice_Click" runat = "server" Text = "Execute"></asp:Button>
</p>
</form>
</body>
</html>
Nachdem der Consumer erstellt wurde, müssen wir einen Proxy für den zu konsumierenden Webdienst erstellen. Diese Arbeit wird von Visual Studio .NET für uns automatisch ausgeführt, wenn auf einen hinzugefügten Webdienst verwiesen wird. Hier sind die Schritte zu befolgen -
Erstellen Sie einen Proxy für den zu verwendenden Webdienst. Der Proxy wird mit dem im Lieferumfang des .NET SDK enthaltenen WSDL-Dienstprogramm erstellt. Dieses Dienstprogramm extrahiert Informationen aus dem Webdienst und erstellt einen Proxy. Der Proxy ist nur für einen bestimmten Webdienst gültig. Wenn Sie andere Webdienste verwenden müssen, müssen Sie auch einen Proxy für diesen Dienst erstellen. Visual Studio .NET erstellt automatisch einen Proxy für Sie, wenn die Webdienstreferenz hinzugefügt wird. Erstellen Sie einen Proxy für den Webdienst mit dem im Lieferumfang des .NET SDK enthaltenen WSDL-Dienstprogramm. Die Datei FirstSevice.cs wird im aktuellen Verzeichnis erstellt. Wir müssen es kompilieren, um FirstService.dll (Proxy) für den Webdienst zu erstellen.
c:> WSDL http://localhost/MyWebServices/FirstService.asmx?WSDL
c:> csc /t:library FirstService.cs
Legen Sie den kompilierten Proxy im bin-Verzeichnis des virtuellen Verzeichnisses des Webdienstes ab (c: \ MyWebServices \ bin). Internet Information Services (IIS) sucht in diesem Verzeichnis nach dem Proxy.
Erstellen Sie den Service-Consumer auf die gleiche Weise, wie wir es bereits getan haben. Beachten Sie, dass ein Objekt des Webdienst-Proxys im Consumer instanziiert wird. Dieser Proxy kümmert sich um die Interaktion mit dem Dienst.
Geben Sie die URL des Verbrauchers in IE ein, um ihn zu testen (z. B. http: //localhost/MyWebServices/WebApp.aspx).
Windows Application-Based Web Service Consumer
Das Schreiben eines Windows-anwendungsbasierten Webdienstkonsumenten entspricht dem Schreiben einer anderen Windows-Anwendung. Sie müssen nur den Proxy erstellen (was wir bereits getan haben) und auf diesen Proxy verweisen, wenn Sie die Anwendung kompilieren. Im Folgenden finden Sie unsere Windows-Anwendung, die den Webdienst verwendet. Diese Anwendung erstellt ein Webdienstobjekt (natürlich einen Proxy) und ruft die Methoden SayHello und Add auf.
WinApp.cs
using System;
using System.IO;
namespace SvcConsumer {
class SvcEater {
public static void Main(String[] args) {
FirstService mySvc = new FirstService();
Console.WriteLine("Calling Hello World Service: " + mySvc.SayHello());
Console.WriteLine("Calling Add(2, 3) Service: " + mySvc.Add(2, 3).ToString());
}
}
}
Kompilieren Sie es mit c:\>csc /r:FirstService.dll WinApp.cs
. Es wird WinApp.exe erstellt. Führen Sie es aus, um die Anwendung und den Webdienst zu testen.
Nun stellt sich die Frage: Wie können Sie sicher sein, dass diese Anwendung tatsächlich den Webdienst aufruft?
Es ist einfach zu testen. Stoppen Sie Ihren Webserver, damit der Webdienst nicht kontaktiert werden kann. Führen Sie nun die WinApp-Anwendung aus. Es wird eine Laufzeitausnahme ausgelöst. Starten Sie nun den Webserver erneut. Es sollte funktionieren.