Galileo Computing < openbook >
Galileo Computing - Programming the Net
Galileo Computing - Programming the Net


Einstieg in ASP.NET von Matthias Lohrer
Einstieg in ASP.NET
gp Kapitel 16 Web Services
  gp 16.1 Wie Web Services funktionieren
    gp 16.1.1 Basistechnologie HTTP
    gp 16.1.2 Basistechnologie XML
    gp 16.1.3 Basistechnologie SOAP
    gp 16.1.4 Umdenken beim Entwickeln von Web Services
  gp 16.2 Einen einfachen Web Service erstellen und anbieten
    gp 16.2.1 Die Datei webservice01.asmx erstellen
    gp 16.2.2 webservice01.asmx im Browser aufrufen
  gp 16.3 Einen Web Service verwenden
    gp 16.3.1 Eine Proxyklasse erstellen
  gp 16.4 Einen Web Service mit einem SOAP-Header sichern
    gp 16.4.1 Einen passwortgeschützten Web Service erstellen
    gp 16.4.2 Die Proxyklasse erzeugen
    gp 16.4.3 Den passwortgeschützten Web Service aufrufen
    gp 16.4.4 Fazit: Web Services und Sicherheit
  gp 16.5 Ein DataSet-Objekt übertragen
    gp 16.5.1 Den Web Service in einer asmx-Datei erstellen
    gp 16.5.2 Die Proxyklasse erzeugen
  gp 16.6 Web Services finden
    gp 16.6.1 Discovery
    gp 16.6.2 UDDI
  gp 16.7 Zusammenfassung und Ausblick
    gp 16.7.1 Zusammenfassung
    gp 16.7.2 Ausblick
    gp 16.7.3 Ressourcen


Galileo Computing

16.2 Einen einfachen Web Service erstellen und anbieten  downtop


Galileo Computing

16.2.1 Die Datei webservice01.asmx erstellen  downtop

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.


Galileo Computing

16.2.2 webservice01.asmx im Browser aufrufen  toptop

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.

Abbildung
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.

Abbildung
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).

Abbildung
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.

Abbildung
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.

  

Einstieg in VB.NET

VB.NET

Einstieg in C#

Visual C#

VB.NET und Datenbanken

Einstieg in XML




Copyright © Galileo Press GmbH 2003
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press GmbH, Gartenstraße 24, 53229 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de