Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

 <<   zurück
JavaScript und AJAX von Christian Wenz
Das umfassende Handbuch
Buch: JavaScript und AJAX

JavaScript und AJAX
839 S., mit DVD, 39,90 Euro
Galileo Computing
ISBN 3-89842-859-1
gp Kapitel 20 Web Services
  gp 20.1 Was sind Web Services?
    gp 20.1.1 Verteiltes Arbeiten
    gp 20.1.2 WSDL
    gp 20.1.3 Web Services aufrufen
  gp 20.2 Web Services mit JScript.NET
    gp 20.2.1 Installation
    gp 20.2.2 Programmierung
  gp 20.3 Mit dem Internet Explorer auf Web Services zugreifen
  gp 20.4 Mit Mozilla auf Web Services zugreifen


Galileo Computing

20.2 Web Services mit JScript.NET  downtop

Ich habe es bereits angedroht – ich komme noch einmal auf die .NET-Technologie von Microsoft zurück. Der Grund: Damit sind Web Services besonders einfach zu erstellen. Keine Sorge: Jede halbwegs moderne Webtechnologie bietet Web Services an, aber mit .NET ging es eben (noch) besonders fix. Außerdem unterstützt .NET eine Reihe von Programmiersprachen, unter anderem JScript (es heißt dort JScript.NET oder JScript .NET, die Microsoft-Dokumentation ist in Hinblick auf die Frage »mit oder ohne Leerzeichen?« auch nicht konsistent). Da JScript unserer Lieblingssprache JavaScript sehr ähnelt, liegt ein Einsatz von JScript (.NET) für Web Services also nahe.

Als Beispiel haben wir, wie bereits erwähnt, eine Applikation ersonnen, die überprüft, ob ein übergebener Parameter eine Primzahl ist oder nicht. Das Problem ist nämlich, dass ein Web Service erstellt werden musste, der gegebenenfalls schon an anderer Stelle in ähnlicher Form existiert. Leserinnen und Leser, die das Beispiel nicht nachstellen können (beispielsweise weil kein entsprechender Server zum Testen zur Verfügung steht), haben dann immerhin die Möglichkeit, den Web Service an einer öffentlich zugänglichen Stelle zu testen.

Das folgende Beispiel ist zwar auch im Internet verfügbar, allerdings nicht auf einem eigenen Server des Autors, weswegen nicht sichergestellt werden kann, dass das Beispiel permanent von der angegebenen Adresse abrufbar ist.


Galileo Computing

20.2.1 Installation  downtop

Wenn Sie mit .NET arbeiten, gibt es zunächst zwei Möglichkeiten: .NET 1.x oder .NET 2.0. Die folgenden Beispiele sind mit beiden Versionen möglich. Beginnen wir mit .NET 1.x: Zunächst benötigen Sie einen Internet Information Server (IIS, das steht mittlerweile für Internet Information Services, aber »Server« ist knackiger) von Microsoft. Dieser ist Bestandteil der Betriebssysteme Windows NT Server, Windows 2000 Professional/Server/Advanced Server, Windows XP Professional, Windows 2003 Server und diverser Ausgaben von Windows Vista. Überprüfen Sie zuerst, ob der Server bereits installiert ist, ansonsten installieren Sie ihn über die Systemsteuerung (Start N Systemsteuerung N Software N Windows-Komponenten hinzufügen/entfernen) nach.

Abbildung
Hier klicken, um das Bild zu Vergrößern

Abbildung 20.1     Der IIS muss installiert sein.

Als Nächstes müssen Sie das .NET Framework, also die .NET-Klassenbibliothek von Microsoft, herunterladen. Unter http://www.asp.net/download.aspx haben Sie die Möglichkeit, zwischen zwei Paketen zu wählen:

gp  Das .NET Framework Redistributable (etwa 21 MByte). Dieses Paket enthält schon alles, was Sie zur Erstellung eines Web Service benötigen.
gp  Das .NET Framework SDK (etwa 131 MByte). Dieses Paket ist mehr als sechsmal so groß wie das Redistributable, enthält dafür aber unter anderem eine Unmenge an Dokumentation. Wenn es Ihre Internet-Anbindung erlaubt (oder Sie jemanden mit schneller Anbindung und CD-Brenner kennen), sollten Sie dieses Paket einsetzen.

Laden Sie nun eines der beiden Pakete herunter, und starten Sie die Installation. Sie benötigen dazu Administratorrechte. Am Ende der Installation sollten Sie unter http://msdn.microsoft.com/net noch nachsehen, ob mittlerweile ein Update zum .NET Framework erschienen ist.

Wenn Sie mit .NET 2.0 arbeiten möchten, gibt es prinzipiell ebenfalls ein Redistributable und ein Framework SDK, aber Sie sollten am besten gleich ein komplettes Entwicklerpaket installieren. Mit dem Visual Web Developer Express Edition (kurz: VWD) bietet Microsoft eine professionelle Entwicklungsumgebung (IDE) für ASP.NET-Anwendungen an, mit der Sie auch Webseiten erstellen können. Das Beste daran ist, dass Sie nicht einmal einen IIS benötigen, denn bei VWD ist bereits ein Test-Webserver dabei. Dieser Webserver erlaubt keinen Zugriff von außen, ist aber zum Testen hervorragend geeignet.

Unter http://www.microsoft.com/germany/msdn/vstudio/products/express/vwd/ erhalten Sie den Visual Web Developer, entweder als schlanken Installer (siehe Abbildung 20.2), der die restlichen Daten aus dem Web herunterlädt, oder als großes ISO-Image zum Auf-die-CD-brennen. Nach der Installation können Sie eine neue Website anlegen (siehe Abbildung 20.3) und innerhalb der Site auch einen Web Service erzeugen.

Abbildung
Hier klicken, um das Bild zu Vergrößern

Abbildung 20.2     Der Installer des Visual Web Developer Express Edition

Abbildung
Hier klicken, um das Bild zu Vergrößern

Abbildung 20.3     Die Startseite von Visual Web Developer


Galileo Computing

20.2.2 Programmierung  toptop

Einen Web Service mit JScript.NET zu erstellen ist eine ziemlich einfache Sache. Da Web Services ein integraler Bestandteil der .NET-Strategie sind, ist viel Funktionalität vorhanden, die sich im Hintergrund um die Kommunikation mit dem Web Service kümmert; bei anderen serverseitigen Technologien müssen Sie (noch) vieles von Hand erledigen. Es ist aber zu erwarten, dass sich das mittelfristig ändern wird.

Wie bei HTML-Dokumenten auch, reicht ein einfacher Editor, um den Web Service zu erstellen. Bei Verwendung von ASP.NET 2.0 in Verbindung mit dem Visual Web Developer ist das natürlich besonders einfach: Legen Sie eine neue Datei vom Typ Webdienst an; die Dateiendung muss .asmx sein.

Zunächst müssen Sie dafür sorgen, dass Sie JScript überhaupt als Sprache verwenden dürfen. Die Standardsprache bei .NET ist nämlich Visual Basic; Sie müssen diesen Vorgabewert ändern. Außerdem müssen Sie den Compiler noch darauf hinweisen, dass es sich um einen Web Service handelt und er (also die übergeordnete Klasse, nicht die einzelne Funktion) Primzahlen heißt. Dies alles geht mit folgender Anweisung, die in der ersten Zeile des Dokuments stehen muss:

<%@ WebService Language="JScript" Class="Primzahlen" %>

Als Nächstes müssen Sie die .NET-Klassenbibliothek für Web Services importieren, damit der Compiler später die notwendige Kommunikationsfunktionalität (inklusive SOAP) automatisch hinzufügen kann:

import System.Web.Services;

Nun erstellen Sie eine Klasse für den Web Service. In der ersten Zeile haben wir der Klasse den Namen Primzahlen gegeben, weswegen diese Bezeichnung sich im Klassennamen wiederfinden muss:

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

Jetzt fehlt uns eigentlich nur noch der eigentliche Dienst: die Überprüfung, ob eine Zahl eine Primzahl ist oder nicht. Damit diese Funktion als Methode des Web Service erkannt wird, muss ihr das Attribut WebMethodAttribute vorangestellt werden.

WebMethodAttribute
function istPrimzahl(zahl:int):boolean {
   // ...
}

Sie sehen, dass bei JScript.NET Variablen typisiert sind: Das heißt, eine Variable hat einen bestimmten Typ, beispielsweise Integer (int) oder Boolean (boolean). Dieser Typ wird hinter einem Doppelpunkt nach dem Variablennamen angegeben.

Die Überprüfung, ob der übergebene Parameter eine Primzahl ist oder nicht, wird wie folgt vorgenommen: Zunächst wird überprüft, ob als Parameter eine Zahl größer als 1 übergeben worden ist. Alle Zahlen kleiner oder gleich 1 sind keine Primzahlen.

if (zahl < 2)
   return false;

Beim Aufruf des Web Service wird automatisch überprüft, ob der übergebene Wert vom erwarteten Typ ist, hier also Integer. Sie müssen daher keine zusätzliche Typüberprüfung vornehmen.

Als Nächstes wird überprüft, ob die Zahl einen weiteren Teiler außer 1 und sich selbst hat. Dazu werden alle Zahlen zwischen 2 und der Wurzel der Zahl daraufhin geprüft, ob sie als Teiler in Frage kommen. Zwar könnten auch größere Zahlen getestet werden, die Mathematik lehrt aber, dass es entweder Teiler bis zur Quadratwurzel gibt oder überhaupt keine.

for (var i=2; i<=Math.sqrt(zahl); i++) {
   if (zahl % i == 0) {
      return false;
   }
}

Wenn nach dem Durchlaufen dieser Schleife die Funktion immer noch nicht verlassen worden ist, liegt tatsächlich eine Primzahl vor: Es gibt keinen Teiler.

return true;

Sie sehen also: Besonders aufwändig war das nicht. Hier noch einmal das komplette Listing:

<%@ WebService Language="JScript" Class="Primzahlen" %>
import System.Web.Services;

public class Primzahlen extends WebService {
   WebMethodAttribute
   function istPrimzahl(zahl: int) : boolean {
      if (zahl < 2) {
         return false;
      }
      for (var i=2; i<=Math.sqrt(zahl); i++) {
         if (zahl % i == 0) {
            return false;
         }
      }
      return true;
   }
}

Speichern Sie diese Datei unter dem Namen Primzahlen.asmx ab. Das Hauptverzeichnis des IIS ist bei einer Standardinstallation c:\inetpub\wwwroot; legen Sie die Datei also in diesem Verzeichnis ab. Mit dem Visual Web Developer legen Sie die Datei einfach im Projektverzeichnis ab, da Sie dort ja keinen ISS benötigen.

Sollten Sie die Systemvoraussetzungen für diesen .NET Web Service nicht erfüllen (also beispielsweise keinen IIS besitzen), können Sie den Web Service (momentan) unter der URL http://www6.brinkster.com/wenz/Primzahlen.asmx ausprobieren. Sollte diese URL einmal nicht mehr funktionieren, gehen Sie zu http://www.xmethods.net/. Dort finden Sie eine ganze Reihe von Web Services, unter anderem auch einen Primzahltest.

Sie können den Web Service im Folgenden testen. Rufen Sie zunächst direkt die .asmx-Datei auf, indem Sie in Ihren Webbrowser die Adresse http://localhost/Primzahlen.asmx eingeben (oder in Visual Web Developer die Tastenkombination (Strg)+(F5) betätigen). Die Ausgabe sehen Sie in Abbildung 20.4. Der Web Service gibt Auskunft über sich selbst und führt die zur Verfügung stehenden Methoden auf.

Abbildung
Hier klicken, um das Bild zu Vergrößern

Abbildung 20.4     Die »Hauptseite« des Web Service

Wenn Sie dann auf istPrimzahl klicken, erhalten Sie zusätzliche Informationen über die Primzahlprüfung, unter anderem den oder die Parameter (siehe Abbildung 20.5). Wenn Sie in das Texteingabefeld einen Wert eingeben und auf Invoke klicken, wird der Web Service ausgeführt; das Ergebnis des Aufrufs wird in einem neuen Fenster angezeigt. Sie können dies in Abbildung 20.6 sehen.

Abbildung
Hier klicken, um das Bild zu Vergrößern

Abbildung 20.5     Auskunft über die Methode istPrimzahl

Abbildung
Hier klicken, um das Bild zu Vergrößern

Abbildung 20.6     Das Ergebnis der Überprüfung für die Zahl 1021

Aufmerksame Leser fragen sich mittlerweile vermutlich, wie das überhaupt funktionieren kann, denn wir haben ja keine WSDL-Beschreibung des Web Service erstellt. Der Grund ist einfach: Wenn Sie einen .NET Web Service erstellen, müssen Sie an die URL der .asmx-Datei einfach den Parameter ?WSDL anhängen, und Sie erhalten automatisch ein WSDL-Dokument zurück. Abbildung 20.7 zeigt diese Beschreibung.

Abbildung
Hier klicken, um das Bild zu Vergrößern

Abbildung 20.7     Die automatisch erzeugte WSDL-Beschreibung

Nach diesem Muster können Sie noch viele weitere und deutlich komplexere Web Services erstellen. Der Titel und das Thema dieses Buches ist jedoch JavaScript, weswegen wir uns jetzt wieder auf clientseitiges Terrain begeben.

 <<   zurück
  
  Zum Katalog
Zum Katalog: JavaScript und AJAX
JavaScript und AJAX
bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: JavaScript und AJAX - Das Video-Training






 JavaScript und AJAX -
 Das Video-Training


Zum Katalog: Webseiten programmieren und gestalten






 Webseiten
 programmieren
 und gestalten


Zum Katalog: XHTML, HTML und CSS






 XHTML, HTML und CSS


Zum Katalog: CSS-Praxis






 CSS-Praxis


Zum Katalog: AJAX






 AJAX


Zum Katalog: PHP 5 und MySQL 5






 PHP 5 und MySQL 5


Zum Katalog: TYPO3 4.0






 TYPO3 4.0


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Galileo Press 2007
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, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de