16.2 Einen einfachen Web Service erstellen und anbieten
 
16.2.1 Die Datei webservice01.asmx erstellen
 
Unter ASP.NET deklarieren Sie einen Web Service in einer Datei mit der Namensergänzung asmx. Als einfaches Beispiel soll ein Web Service realisiert werden, der an den Web-Service-Konsumenten den String Hallo zurückgibt. Die Datei webservice01.asmx muss dazu die folgende Form haben.
<!-- webservice01.asmx -->
<%@ WebService Language="VB" Class="webservice01" %>
Imports System.Web.Services
<WebService(Description := "Sagt einfach Hallo.", _
Namespace := "http://mlohrer.de/services")> _
Public Class webservice01 : Inherits WebService
<WebMethod(Description := "Sagt Hallo.", _
EnableSession := False)> _
Public Function SagHallo() As String
Return ("Hallo")
End Function
End Class
In diesem kurzen Code-Abschnitt steckt viel Neues. Alle Neuigkeiten sollen Stück für Stück erläutert werden.
<!-- webservice01.asmx -->
Die erste Zeile besteht wie üblich aus einen Kommentar, der lediglich den Namen der Datei enthält.
<%@ WebService Language="VB" Class="webservice01" %>
Die zweite Zeile enthält eine Direktive. Während aspx-Seiten eine @Page-Direktive enthalten, bekommen Web Services an dieser Stelle eine @WebService-Direktive. Das bedeutet: Die Datei webservice01.asmx erbt vom Typ System.Web.Services.WebService.
Mit dem Attribut Language="VB" wird die verwendete Sprache festgelegt. Class="webservice01" legt den Namen der Klasse fest, die diese Datei definiert.
Imports System.Web.Services
Ein Web Service muss den Namespace System.Web.Services importieren.
<WebService(Description := "Sagt einfach Hallo.", _
Namespace := "http://mlohrer.de/services")> _
Public Class webservice01 : Inherits WebService
' ...
End Class
Als Nächstes kann die Klasse selbst deklariert werden. Die Klasse WebService01 erbt von der Basisklasse WebService (Inherits WebService). Ein Web Service muss nicht unbedingt von dieser Klasse erben. Wenn Sie Ihren Web Service aber auf der Klasse WebService aufbauen, haben Sie leichten Zugriff auf häufig benötigte Objekte wie Application, Session, User und Context.
Noch vor der Zeile, die mit Public Class beginnt, sehen Sie den Eintrag
<WebService(Description := "Sagt einfach Hallo.", _
Namespace := "http://mlohrer.de/services")> _
Beachten Sie die Unterstriche am Ende dieser Zeilen. Das bedeutet, dass diese beiden Zeilen und der Code Public Class ... im Prinzip in die gleiche Zeile gehören und nur aus Gründen der besseren Lesbarkeit ein Umbruch erfolgt. Der Eintrag <WebService ... > wendet das WebService-Attribut auf diese Klasse an. Damit besteht die Möglichkeit, der Klasse eine Beschreibung und einen eindeutigen XML-Namespace zuzuweisen. Wenn Sie Ihren Web Service öffentlich zugänglich machen wollen, benötigt er auf jeden Fall einen eindeutigen Namespace. Sie müssen hier keinen URL angeben, wie es im Beispiel gemacht wird. Es ist aber eine sinnvolle Konvention, weil die Bezeichnung Ihrer eigenen Internetdomäne weltweit einmalig ist.
Falls Sie keinen Namespace angeben, verwendet ASP.NET als Voreinstellung den Namespace http://tempuri.org/. Diese Voreinstellung kann während der Entwicklung eines Web Services verwendet werden, muss aber beim praktischen Einsatz unbedingt geändert werden.
<WebMethod(Description := "Sagt Hallo.", _
EnableSession := False)> _
Public Function SagHallo() As String
Return ("Hallo")
End Function
Die Klasse definiert die Methode SagHallo(). Diese Methode gibt den String Hallo an den Aufrufer zurück. Sie wird mit dem WebMethod-Attribut ausgezeichnet. Damit weiß ASP.NET, dass diese Methode als Web Service zugänglich gemacht werden soll. ASP.NET macht nur solche Methoden als Web Service zugänglich, die mit dem WebMethod-Attribut ausgezeichnet sind. Für das WebMethod-Attribut wird mit Description := "Sagt Hallo." ebenfalls eine Beschreibung zur Verfügung gestellt und die Option EnableSession wird auf False gesetzt.
16.2.2 webservice01.asmx im Browser aufrufen
 
Die einfachste Methode, zu testen, ob ein Web Service funktioniert, besteht darin, die asmx-Datei im Browser aufzurufen. Dabei muss man sich aber klar machen, dass ein Web Service in der Praxis niemals direkt im Browser aufgerufen wird. Nur für den Entwickler ist es sinnvoll, den Web Service direkt im Browser aufzurufen, weil er auf diese Weise leicht und schnell die Funktionsweise testen kann. Abbildung 16.1 zeigt die Darstellung, wenn Sie webservice01.asmx im Browser aufrufen.
 Hier klicken, um das Bild zu Vergrößern
Abbildung 16.1 Wenn man einen Web Service direkt im Browser aufruft, erhält man aussagekräftige Informationen über die angebotenen Dienste.
Die Darstellung in Abbildung 16.1 überrascht, weil Sie diese Oberfläche nicht selbst erstellt haben. Diese Seite und einige Folgeseiten generiert ASP.NET automatisch für jeden Web Service.
Wenn Sie den Link SagHallo anklicken, sehen Sie, wie ASP.NET diese Methode in den verschiedenen Übertragungsformaten darstellt (siehe Abbildung 16.2). Die Seite zeigt beispielhaft eine Anfrage und eine Antwort in den Formaten SOAP, HTTP-GET und HTTP-POST.
 Hier klicken, um das Bild zu Vergrößern
Abbildung 16.2 ASP.NET dokumentiert automatisch beispielhafte Anfragen und Antworten zu Ihrem Web Service.
Die Schaltfläche Aufrufen ermöglicht es Ihnen, den Web Service über die Methode HTTP GET testweise aufzurufen. Anschließend öffnet sich ein neues Browser-Fenster, das die Ausgabe Ihres Web Services anzeigt (siehe Abbildung 16.3).
 Hier klicken, um das Bild zu Vergrößern
Abbildung 16.3 Testweise können Sie den Web Service mit der HTTP-GET-Methode ausführen.
Wenn Sie auf der ersten Seite den Link Dienstbeschreibung anklicken, erhalten Sie eine Beschreibung Ihres Web Services im Format der Web Service Description Language WSDL (siehe Abbildung 16.4). Eine solche Beschreibung benötigen Sie, wenn Sie einen Web Service eines anderen Servers nutzen wollen. ASP.NET erzeugt diese Beschreibung automatisch. Den Umgang mit der WSDL lernen Sie in Abschnitt 16.3, Einen Web Service verwenden, kennen.
 Hier klicken, um das Bild zu Vergrößern
Abbildung 16.4 Wenn Sie einen Web Service mit dem Zusatz ?WSDL aufrufen, erhalten Sie die Beschreibung des Dienstes im WSDL-Format.
Wie gesagt: Mit diesen automatisch generierten Seiten können Sie als Entwickler testen, ob die Ausgaben Ihren Vorstellungen entsprechen. Web Services werden aber nicht über den Browser genutzt, sondern sie werden direkt von einem Programm aus aufgerufen.
| Wichtig Und damit folgt jetzt ein entscheidender Schritt: Schalten Sie im Kopf um von dem Server, auf dem Ihre Datei webservice01.asmx liegt, zu dem zweiten Server, der diesen Service nutzen will. Bis jetzt haben Sie auf dem ersten Server gearbeitet. Ab sofort arbeiten Sie auf dem zweiten Server. Der zweite Server will den webservice01.asmx-Web-Service in seinem Programmcode nutzen. Er will die wichtige Mitteilung, die webservice01.asmx bereithält, bekommen.
|
Irgendwie muss ein Aufruf von einer Art möglich sein, der im Pseudocode so heißen könnte:
myVar = webservice01.asmx
Und anschließend soll in myVar der Text Hallo drinstehen.
Für die Entwicklung ist es natürlich nicht nötig, dass Sie tatsächlich über zwei Server verfügen. Sie können alles auf einer Maschine unter localhost entwickeln und testen. Für das Verständnis ist es aber unbedingt erforderlich, sich klar zu machen, auf welchem der beiden Server man gerade arbeitet.
|