info@a-coding-project.de

JScript.net: Webservices

Webservices sind in der letzten Zeit immer mehr in "Mode" gekommen und werden von immer mehr Firmen und Organisationen hoch gelobt (obwohl bisher eher wenige genau wissen, was es damit auf sich hat). Auch das .NET-Framework unterstützt nun diese neue Form des Datenaustauschs.

Was sind Webservices?

Webservices sind eine relativ junge Technologie, die zum Austausch von Daten dient. Ein Service wird zumeist von einem (Web-) Server angeboten, sodass andere Benutzer darauf zugreifen und diesen Service nutzen können. Zuerst muss dazu eine Verbindung zwischen Anbieter und Nutzer hergestellt werden - z.B. über den Browser oder ein anderes Programm. Über eine definierte Sprache und die damit verbundenen Regeln stellt der Anbieter seine Dienste zur Verfügung. Ebenfalls über diese Sprache werden sämtliche Transaktionen und Kommunikation zwischen beiden geregelt. Derzeit gibt es dazu mehrere Sprachdefinitionen wobei WSDL (WebService Description Language) und SOAP (Simple Object Access Protocol) die am meisten genutzten und auch vom .NET-Framework unterstützten sind.

Webservices erstellen

Da die Kommunikation über die oben genannten Sprachen verläuft bedarf es einem geeignetem Programm um einen Service nutzen zu können. Moderne Browser wie der Internet Explorer (5.x) oder Netscape Navigator (6.x/7.x) bzw. Mozilla (1.x) unterstützen diese Services in der Regel. Jedoch kann man die Services - wenn auch nicht so sehr schön - mit einem älteren Browser verwenden. Ein Webservice ist im .NET-Framework im Prinzip nichts anderes als eine Codedatei, die bestimmte Funktionen zur Verfügung stellt. Alles was zum Erstellen eines Services notwendig ist sind folgende Dinge:

  • Der Dateiname eines Webservices muss den Suffix .asmx tragen
  • Die Datei muss als Webservice ausgezeichnet sein
  • Die Datei muss mindestens eine Klassen des Typs System.Web.Services zur Verfügung stellen
Das sollten prinzipiell also einfach zu lösende Probleme sein. Als Grundlage nehmen wir die folgende Funktion. Sie liefert uns von einem gegebenen Geburtsdatum das jetzige Alter der Person:

function BekommeAlter(tag:int, monat:int, jahr:int) : String 
 {
   var d:Date = new Date();
   var j,t,m:int;
   j = d.getYear();
   m = d.getMonth()+1;
   t = d.getDay()+1;
   var x:int = d.getYear()-(jahr+1);
   if((m > monat) || (m == monat && t > tag))
   {x++;}
   var res:String = 'Sie sind am '+t+'/'+m+'/'+j+
                    ' exakt '+x+' Jahre alt.';
   return res;
  }

Um daraus einen Webservice zu machen muss die Datei - wie genannt - als ein solcher gekennzeichnet werden. Dazu wird als erste Zeile der @Webservice-Tag definiert. Er erhält zum einen das Attribut language, mit dem die verwendete Skriptsprache definiert wird, und zum anderen das Attribut class. Mit letzterem wird eine Klasse beschrieben, die als Webservice angeboten werden soll. Als Werte notieren wir:

<%@ WebService Language="JScript" class="Geburtstag" %>

Wie bereits genannt muss eine Klasse des Typs System.Web.Services erstellt werden. Der Klassenname sollte der gleiche sein, wie der Name der als Wert des class-Attributes angegeben wurde. Wir erweitern unser Beispiel-Service also wie folgt:

import System;
import System.Web;
import System.Web.Services;

public class Geburtstag extends WebService 
{
 // ...
}

Innerhalb der Klasse können nun beliebig viele Funktionen als Service angeboten werden. Jede muss dazu als Modifizierer das Wort WebMethodAttribute vorangestellt bekommen. Der Beispielservice sieht fertig dann wie folgt aus:

<%@ WebService Language="JScript" class="Geburtstag" %>

import System;
import System.Web;
import System.Web.Services;

public class Geburtstag extends WebService 
{
  WebMethodAttribute public function BekommeAlter
                        (tag:int, monat:int, jahr:int) : String 
 {
   var d:Date = new Date();
   var j,t,m:int;
   j = d.getYear();
   m = d.getMonth()+1;
   t = d.getDay()+1;
   var x:int = d.getYear()-(jahr+1);
   if((m > monat) || (m == monat && t > tag))
   {x++;}
   var res:String = 'Sie sind am '+t+'/'+m+'/'+j+
   ' exakt '+x+' Jahre alt.';
   return res;
  }
}

Die Datei muss nun nur noch mit der Dateiendung .asmx gespeichert werden und kann im Browser betrachtet werden. Das könnte dann in etwa so aussehen:

Webservices im Browser
Darstellung: Webservices im Browser

Weiterlesen: ⯈ JScript.NET und ASP.NET

Über uns

Stefan Wienströer

Wir entwickeln Webanwendungen mit viel Leidenschaft. Unser Wissen geben wir dabei gerne weiter. Mehr über a coding project

Auch interessant