(0) exportieren Drucken
Alle erweitern

My First Web Service - Schnelleinstieg mit Visual Studio .NET

Veröffentlicht: 22. Feb 2004 | Aktualisiert: 29. Jun 2004
Von Mathias Schiffer

In diesem MSDN Quickie zeigen wir Ihnen an einem sehr simplen Beispiel, wie einfach Web Services mit Visual Studio .NET zu erzeugen und anzuwenden sind.

Auf dieser Seite

 Web Services mit Visual Studio .NET erstellen
 Web Services nutzen

Was bietet ein Web Service? Vereinfacht gesagt: XML über HTTP. Ein Web Service tauscht per Hypertext Transfer-Protokoll (HTTP) über Rechner- und Betriebssystem-Grenzen hinweg Informationen im Textformat aus. Dabei hilft XML (eXtensible Markup Language) dabei, diese Informationen zu strukturieren und entsprechend auf der Gegenseite strukturiert auszuwerten.

Nichts anderes passiert beispielsweise, wenn ein Web Browser eine Seite aus dem WWW abruft: Der Client erfragt eine bestimmte Dienstleistung vom Server, der seine zugehörige Antwort als Text (hier: in HTML-Struktur) zurücksendet. Aus diesem Ergebnis erzeugt der Browser dann eine Seitendarstellung.

In diesem MSDN Quickie soll für Web Service-Einsteiger gezeigt werden, wie einfach Sie mithilfe von Visual Studio .NET einen Web Service selber erzeugen können.

Web Services mit Visual Studio .NET erstellen

Starten Sie Visual Studio .NET und wählen Sie als z.B. Visual Basic Projekttyp einen "ASP.NET Web Service" aus und geben Sie dem Projekt einen Namen. Diesen Namen verwendet Visual Studio, um im Hauptverzeichnis Ihres Webservers ein Arbeitsverzeichnis für Ihren Web Service anzulegen (beim Microsoft Internet Information Server etwa im Verzeichnis inetpub\wwwroot).

Ist das Arbeitsverzeichnis angelegt, bietet Visual Studio .NET Ihnen die Möglichkeit, für Ihren Web Service Komponenten zu verwenden oder in den Codeeditor umzuschalten. Da wir das Beispiel einfach halten wollen, bleiben wir komponentenfrei und wechseln direkt in die Code-Ansicht.

Dort hat Visual Studio .NET für Sie ein kleines, grundlegendes Gerüst für Ihren Web Service bereits vorbereitet. Es sieht etwa so aus wie im folgenden:

Imports System.Web.Services 
<System.Web.Services.WebService(Namespace := "<A href="http://tempuri.org/WebService1/Service1">http://tempuri.org/WebService1/Service1</A>")> _ 
Public Class Service1 
 Inherits System.Web.Services.WebService 
#Region " Web Services Designer Generated Code " 
#End Region 
 ' WEB SERVICE EXAMPLE 
 ' The HelloWorld() example service returns the string Hello World. 
 ' To build, uncomment the following lines then save and build the project. 
 ' To test this web service, ensure that the .asmx file is the start page 
 ' and press F5. 
 ' 
 '<WebMethod()> _ 
 'Public Function HelloWorld() As String 
 '   Return "Hello World" 
 'End Function 
End Class

Im obigen Codefragment sehen Sie zunächst das Attribut WebService für die Klasse Service1, die von der Mutter aller Web Services - der Klasse System.Web.Services.WebService abgeleitet ist (diese Ableitung ist für einen Web Service nicht zwingend, aber praktisch).

Mithilfe des gleichnamigen Attributs WebService (abgeleitet von WebServiceAttribute) wird der Namespace für den Web Service angegeben. Sie können hier auch eine Beschreibung und einen Namen für den Web Service vergeben (siehe unten). Der Name Ihres Web Service wird andernfalls durch den verwendeten Klassennamen definiert.

Im Beispielcode sehen Sie weiter eine öffentliche Funktion "HelloWorld", die den String "Hello World" zurückgibt. Daran ist absolut nichts besonderes - das kennen Sie schließlich alles auch schon ohne Web Services.

Auffällig an der Funktion ist allein das vorangestellte Attribut "WebMethod": Dieses Attribut (abgeleitet von WebMethodAttribute) kennzeichnet die Funktion als eine verfügbare Funktion Ihres Web Service. Um mehr müssen Sie sich - dank .NET Framework und Visual Studio .NET - nicht mehr kümmern!

Vollziehen wir diesen kleinen aber entscheidenden Schritt kurz nach, indem wir eine eigene Funktion für den Web Service implementieren. Sie soll die Uhrzeit des abgefragten Servers zurückgeben und den Namen "GetServerTime" tragen. Zusätzlich ergänzen wir das WebMethod-Attribut um eine Beschreibung der Features der Funktion:

Imports System.Web.Services 
<System.Web.Services.WebService( _ 
  Namespace:="<A href="http://tempuri.org/Time/TimeWebService">http://tempuri.org/Time/TimeWebService</A>", _ 
  Description:="Beispiel-Web Service für den MSDN Quickie", _ 
  Name:="Mein erster Web Service")> _ 
Public Class TimeWebService 
  Inherits System.Web.Services.WebService 
#Region " Web Services Designer Generated Code " 
 '(von Visual Studio .NET angelegte Region) 
#End Region 
  <WebMethod(Description:="Gibt das aktuelle Datum und die aktuelle " & _ 
  "Uhrzeit auf dem Server zurück.")> _ 
  Public Function GetServerTime() As String 
 Return DateTime.Now.ToString 
  End Function 
End Class

Außerdem änderten wir oben den Klassennamen noch in TimeWebService und passen den Namespace sowie den Dateinamen der asmx-Datei entsprechend an. Beachten Sie auch die selbsterklärende Beschreibung des Web Service sowie die Vergabe des Servicenamens "Mein erster Web Service" (die Leerzeichen sind zulässig - für die spätere Verwendung des Web Service werden sie ignoriert. Konsistenter ist natürlich die Vermeidung von Leerzeichen).

Startet man dieses Projekt nun aus Visual Studio .NET heraus, ruft der Webserver unsere asmx-Seite ab. Sie stellt die von Ihrem Web Service als compilierte DLL veröffentlichte Funktionalität vor und beschreibt sie nach Maßgabe des oben verwendeten Description-Werts. Die folgende Abbildung zeigt das für unseren Mini-Webservice:

FirstWebService_01.gif

Abbildung 1:Selbstbeschreibung eines Web Service.

Zur Verdeutlichung eingesetzt: Die deutschsprachigen Teile stammen von uns, englischsprachige Abschnitte vom hier verwendeten englischsprachigen Visual Studio .NET.

Web Services nutzen

Die einfachste Variante, Ihren frisch erzeugten Web Service zu nutzen, findet sich im Anklicken des offengelegten Funktionsnamens, im Beispiel etwa "GetServerTime", um die Funktion aus der folgenden Anzeige heraus über einen Button zu starten. Das Ergebnis sollte ungefähr so aussehen:

FirstWebService_02.gif

Abbildung 2:Unser Mini-Web Service im Einsatz

Neben der Angabe der XML-Version und der Codierungsart der Daten sehen Sie einen String mit Datum und Uhrzeit des Servers - die direkte Antwort der aufgerufenen Funktion. Als Attribut bringt dieser String den im Sourcecode definierten XML-Namespace mit sich.

Für den schnellen Überblick über die Funktionsfähigkeit des Web Service reicht das zwar. Wirklich interessant jedoch ist erst die praktische Verwendungsmöglichkeit für den Web Service. Machen wir uns also daran, einen abfragenden Client für den Web Service zu entwerfen.

Erzeugen Sie dafür ein normales Windows Forms Projekt in Visual Basic .NET. Nun können Sie über das Project-Menü den Menüpunkt "Add Web Reference" auswählen und sich dort auf Ihrer lokalen Maschine nach dem soeben erzeugten Web Service umschauen - er heißt TimeWebService. Binden Sie diesen Web Service nun unter dem referenzierenden Namen "ServerTime" in ihr neu angelegtes Projekt ein.

Aus Ihrer Anwendung heraus können Sie den Web Service nun verwenden, indem Sie ihn instanzieren und seine Methode aufrufen, als handele es sich um eine ganz normale Bibliotheksfunktion (es handelt es sich ja tatsächlich um eine Klasse in einer DLL). Um all die Web Service-relevante Hintergrundarbeit kümmert sich Visual Studio .NET für Sie.

Fügen Sie der Form des Projekts ein Button- (Button1) und ein Label-Steuerelement (Label1) hinzu. Der Code für das Click-Ereignis des Buttons ist danach so simpel wie funktionsfähig:

Private Sub Button1_Click(ByVal sender As System.Object, _ 
  ByVal e As System.EventArgs _ 
  ) Handles Button1.Click 
  Dim ws As New ServerTime.MeinersterWebService 
  Label1.Text = ws.GetServerTime 
End Sub

Starten Sie das Projekt: Nach kurzer Zeit erscheint die Uhrzeit des "Servers" als Beschriftung für das eingefügte Label-Steuerelement. Sie haben soeben Ihren ersten Web Service erfolgreich eingesetzt!


Microsoft führt eine Onlineumfrage durch, um Ihre Meinung zur MSDN-Website zu erfahren. Wenn Sie sich zur Teilnahme entscheiden, wird Ihnen die Onlineumfrage angezeigt, sobald Sie die MSDN-Website verlassen.

Möchten Sie an der Umfrage teilnehmen?
Anzeigen:
© 2014 Microsoft