apache webserver und xml web services - iks.hs-merseburg.deuheuert/pdf/anwendung...
TRANSCRIPT
Apache Webserver und
XML Web Services
Vorlesungsskript
im Fach Informatik
an der
FH Merseburg
Gehalten bei Prof. Hartmann & Prof. Heuert Gehalten von Michael Schäfer Matrikel: 2INF02 Kennnr: 09479 Merseburg, 2005-11-17
Apache Webserver und XML Web Services
2
Inhaltsverzeichnis 1 Apache 2.0 ...............................................................................................3
1.1 Entstehung des Apache..............................................................................3
1.2 Der Apache Webserver ..............................................................................4
1.3 Installation ...............................................................................................5
1.4 ApacheFriends ..........................................................................................7
2 XML Web Services.....................................................................................8
2.1 Was sind Web Services?.............................................................................8
2.2 Eine kurze Geschichte der Web Services......................................................9
2.2.1 Verfügbarmachen von Code zwischen Anwendungen..............................9
2.2.2 Verfügbarmachen von Code zwischen Computern ................................ 10
2.2.3 Verfügbarmachen von Code zwischen Netzwerken ............................... 10
2.3 Grundlegende Technologien und Standards ............................................... 11
2.3.1 Zugrunde liegende Technologien ........................................................ 11
2.3.2 Architektur von .NET Web Services ..................................................... 11
2.4 Konkurrierende Web Service-Implementierungen....................................... 13
3 Apache 2.0 und ASP.NET ......................................................................... 13
3.1 Integration von .NET Web Services in Apache............................................ 13
3.2 „Hello World“ .......................................................................................... 17
4 Abbildungsverzeichnis.............................................................................. 18
5 Quellenverzeichnis .................................................................................. 18
Apache Webserver und XML Web Services
1 Apache 2.0
1.1 Entstehung des Apache
Ende des Jahres 1993 veröffentlichten Software-Entwickler am NCSA
(National Center for Supercomputing Application) der Universität Illinois
den ersten Webbrowser mit grafischen Oberflächen. Anfang 1995 ent-
wickelte Rob McCool an diesem Institut den NCSA-Webserver, welcher
auch der meistgenutzte Server wurde. Jedoch verließ McCool das Institut
und die Entwicklung des NCSA-Webservers kam ins Stocken.
Einige der Benutzer dieses Servers begannen ihn weiter zu entwickeln und
zu erweitern. Immer mehr Patches wurden dem Server hinzugefügt und
letztendlich erhielt man einen gepatchten Server (engl.: a patchy server),
woraus der Name des heutigen Apache entstand.
Im April 1995 wurde die erste Beta-Version des Apache veröffentlicht,
welcher auf dem NCSA-Server der Version 1.3 basierte. Die Version 1.0,
welche zahlreiche neue Funktionalitäten und Verbesserungen enthielt
veröffentlichte die Apache Group im Dezember 1995.
Knapp ein Jahr später erlang der Apache so viel Popularität, dass er den
NCSA vom ersten Platz der Marktanteile verdrängte und zum
meistgenutzten Webserver wurde.
Abbildung 1.1: Marktanteile für September 2005
Apache (72%)
Microsoft (22,23%)
Netscape (0,54%)
Zeus (0,77%)
WebSTAR (0,40%)
Website (0,10%)
Andere (3,95%)
3
Apache Webserver und XML Web Services
4
Dieser Erfolg kam unter anderem durch das modulare Konzept des
Servers. Durch eine Vielzahl von Modulen kann der Server sehr individuell
eingerichtet und erweitert werden. Ebenso können, durch die Open
Source, ohne großen Aufwand eigene Module geschrieben und einge-
bunden werden. Ein weiteres wichtiges Datum für den Apache ist der April
2002. In diesem Monat wurde mit dem Apache 2.0 die aktuelle und vorerst
endgültige stabile Version veröffentlicht.
1.2 Der Apache Webserver
Der Apache ist mittlerweile für eine Vielzahl von Betriebssystemen
verfügbar und zeigt mit seinem Erfolg, dass Open Source nicht nur eine
gute Idee ist, sondern auch erfolgreich sein kann. Durch sein modulares
Konzept lässt sich der Apache einfach um zusätzliche Funktionalität
erweitern und an nahezu jeden Anwendungsfall anpassen.
Zu den mehr als 100 größtenteils kostenlosen Modulen gibt es zahlreiche
Authentifizierungsmodule und Skript- bzw. Interpretermodule für diverse
Programmiersprachen wie Java, JavaScript, Perl, Python und Tcl. Wenn es
um Datenbankanbindung geht wird man auch hier in der Module Registry
fündig; bekanntestes Beispiel dafür ist das PHP-Modul. Bei den Datenbank-
systemen werden die meisten kommerziellen und freien Systeme wie
MySQL, Oracle oder PostgreSQL von PHP unterstützt.
Auch wenn es um Datensicherheit geht, z.B. im Bereich E-Commerce, ist
Apache eine sehr gute Wahl. Zu diesen Zwecken gibt es mehrere SSL-
Module, welche mit einer sehr starken 128-Bit Verschlüsselung arbeitet.
Apache Webserver und XML Web Services
1.3 Installation
Der Apache Webserver ist für alle Betriebssysteme als Quellcode-Version
und für die meisten und verbreitetsten Systeme als Binary-Version
verfügbar. Ich betrachte aber lediglich die Installation der Binary-Version
für Windows XP, welche erdenklich einfach ist.
Nach dem Herunterladen der Win 32 Binary Datei von httpd.apache.org
muss diese nur gestartet werden. Es folgt eine Reihe von Fenstern zur
Installation.
Abbildung 1.2: Begrüßungsbildschirm der Apache 2-Installation unter Windows
5
Apache Webserver und XML Web Services
Abbildung 1.3: Akzeptierung der Lizenzbestimmungen des Apache 2
Abbildung 1.4: Eingabe der Server-Informationen
6
Apache Webserver und XML Web Services
Nachdem die Installation abgeschlossen wurde kann der Apache unter
http://localhost/ bzw. http://127.0.0.1/ getestet werden. Dabei sollte der
folgende Text im Browser erscheinen.
Abbildung 1.5: Willkommensbildschirm des Apache 2
Nun können weiter Module die benötigt werden installiert und in den
Apache eingebunden werden.
1.4 ApacheFriends
Da einige der Installationsthemen und das Einbinden von Modulen gerade
für Anfänger zu kompliziert sind haben zwei Entwickler für Apache und
zahlreiche Erweiterungen das so genannte XAMPP entwickelt. Mit diesen
Paketen für Windows und Linux kann in kurzer Zeit eine voll funktions-
fähige Entwicklungsumgebung bestehend aus Apache, PHP, MySQL, Perl,
FTP- und Mail-Server, OpenSSL und vieles mehr installiert werden, ohne
das besondere Voraussetzungen erfüllt sein müssen.
Auch hier gibt es eine vorkompilierte Installationsdatei zum downloaden.
7
Apache Webserver und XML Web Services
Nach der Installation zeigt der Browser unter http://localhost/ folgende
Page:
Abbildung 1.6: Willkommensbildschirm des Apache von XAMPP
2 XML Web Services
2.1 Was sind Web Services?
In den ersten Jahren des World Wide Web gab es lediglich statische Web-
Seiten. Diese wurden aber im laufe der Zeit durch anspruchsvolle
Anwendungen wie E-Commerce, Aktienhandel, E-Banking und vieles mehr
abgelöst. Diese dynamischen Anwendungen haben einen wesentlich
größeren Funktionsumfang und werden meistens durch HTML-Tags
gebildete Oberflächen im Browser angezeigt. Obwohl Plattformen wie
ASP.NET somit Anwendungen mit großer Funktionalität erzeugen können,
kratzt HTML lediglich an der Oberfläche dessen, was kreative Entwickler
mit dem Internet realisieren können.
Die Welten der Desktop- und der Internet-Programmierung sind in den
letzten Jahren sehr stark zusammengerückt. Desktop-Oberflächen, vor
allem die von Windows XP, werden Internetbrowsern immer ähnlicher,
Internet-Funktionalitäten tauchen in immer mehr Desktop-Anwendungen
8
Apache Webserver und XML Web Services
9
auf und Windows-Anwendungen kommunizieren mit Webservern über
verschiedene Protokolle. Beispiele dafür sind Microsoft Money, welches
automatisches Bank-Informationen herunterlädt; Windows selbst über das
Vorhandensein von Updates auf dem Microsoft-Server informiert; und VS
.NET das suchen in der MSDN Online Library ermöglicht, ohne die
Anwendung zu verlassen. Auch gehören eBay-Auktionen mit Desktop-
Anwendungen von Drittherstellern dazu.
Das Hinzufügen solcher Funktionen sind sicher eine große Innovation,
doch leider sind die Lösungen meist „selbstgestrickt“ und proprietär
(entwicklerabhängig). Um heute eine internetfähige Anwendung zu
implementieren müssten viele verschiedene Standards und Protokolle
berücksichtigt werden.
Internet-Anwendungen sind ähnlich begrenzt. Zur Integration von Funk-
tionen mehrerer Webseiten sind relativ plumpe Methoden wie Frames,
Links oder Screen Scraping erforderlich. Das Problem solcher Anwen-
dungen ist, dass sie als Komplett-Paket existieren und es somit keinen ein-
fachen Weg zur Trennung von Benutzeroberfläche und Funktionalität gibt.
Hier kommen Web Services ins Spiel.
Ein Web Service ist eine Anwendung oder ein ausführbarer Codeblock, der
auf einem Server ausgeführt wird und dessen Funktionen über Standard-
XML-Protokolle verfügbar gemacht werden.
2.2 Eine kurze Geschichte der Web Services
2.2.1 Verfügbarmachen von Code zwischen Anwendungen
Anfang der 90-er Jahre existierten zwei konkurrierende Komponenten-
technologien:
1. Microsoft: COM (Component Object Model)
2. OMG (Object Management Group): CORBA (Common Object Request
Broker Architecture)
Beide verwenden Funktionseinheiten in Form von Binärobjekten wieder
und erlauben es Software auf ein und demselben PC den Code geregelt zu
Apache Webserver und XML Web Services
10
teilen. Durch die Verbreitung von Netzwerken wurde die Kommunikation
zwischen verschiedenen PCs immer wichtiger.
2.2.2 Verfügbarmachen von Code zwischen Computern
Mitte der 90-er Jahre wurde das COM-Modell von Microsoft durch DCOM
(Distributed COM) erweitert, welches ein Netzwerkprotokoll ist und COM
weder ersetzt noch verändert. Dieses Protokoll legt fest, wie COM-Objekte
über Maschinengrenzen hinweg kommunizieren können. Die OMG
entwickelte das Netzwerkprotokoll IIOP (Inter-ORB Protocol), welches die
Zusammenarbeit verschiedener CORBA-Objekte über das Internet erlaubt.
Diese neuen Standards ermöglichten es Anwendungen auf einem PC
laufenden Code auf anderen PCs aufzurufen. Aber aufgrund dessen, das
beide auf Desktop-Anwendungen basierten, waren sie doch komplex
programmiert, was ihre Anwendung sehr erschwerte. Jedoch fanden viele
erfahrene Entwickler, dass die Protokolle ihren Zweck erfüllten. Dies war
die Ermöglichung der Verteilung von Anwendungsressourcen und Rechner-
belastung auf mehrere Workstations.
2.2.3 Verfügbarmachen von Code zwischen Netzwerken
Die Funktionalität sowohl von COM/DCOM als auch von CORBA/IIOP ist im
Internet nicht besonders gut. Dies zeigt sich vor allem dadurch, dass sich
beide Standards gegenseitig ausschließen. DCOM-Server arbeiten lediglich
mit DCOM-Clients zusammen und dasselbe gilt auch für CORBA und IIOP.
Zu DCOM ist noch zu sagen, dass er auf PCs mit Microsoft Windows
beschränkt ist. CORBA und COM sind beide komplexe Binärstandards, die
nicht einfach über Firewalls funktionieren. Zusammenfassend kann man
sagen, dass beide Standards für die Verwendung in Netzwerken angepasst
werden mussten bevor Entwickler problemlos Software für verteilte
Anwendungen im Internet entwerfen konnten.
Apache Webserver und XML Web Services
11
2.3 Grundlegende Technologien und Standards
2.3.1 Zugrunde liegende Technologien
Um einen Web Service zu erzeugen bzw. zu nutzen muss man nicht viel
über die Technologien wissen, auf denen er beruht. Aber das Verstehen
der Grundlagen hilft beim Entwerfen eines Web Services. Web Services
nutzen eine Kombination verschiedener offener Standards, die nachfolgend
kurz beschrieben sind.
Technologie Aufgabe
WSDL XML-basiertes Format; beschreibt Web Service und listet Methoden, Parameter, Rückgabewerte und unterstützte Kommunikationsmethoden auf
HTTP Kommunikationsprotokoll zum Senden von Web Service-Requests und –Responses
SOAP XML-basiertes Format zum Codieren Requests und Response vor dem Senden
DISCO optionale Microsoft-Spezifikation zum Auffinden (Entdecken ↔ „discover“) von Web Services; unklassifizierte Liste von Web Service-Links
UDDI Verzeichnis, das Clients das Auffinden von Web Services ermöglicht; jüngster Web Service-Standard
2.3.2 Architektur von .NET Web Services
Die Implementierung von Microsoft eines Web Services ist so gestaltet,
dass das Aufrufen eines entfernten Web Services genauso einfach ist, wie
der Methodenaufruf einer lokalen Klasse. Das .NET-Framework bietet
Werkzeuge, die die „langweiligen“ Details von Standards wie SOAP oder
WSDL verbergen. Das Aufrufen eines Web Service funktioniert in den
folgenden Schritten, dabei müssen lediglich die Schritte 1, 3, 5 und 8
manuell ausgeführt werden.
Apache Webserver und XML Web Services
1. entwerfen eines Web Services als .NET-Klasse mit Attributen, die ihn
als Web Service mit verfügbaren Funktionen identifizieren
2. .NET erzeugt automatisch ein WSDL-Dokument, welches beschreibt,
wie ein Client mit dem Web Service kommunizieren muss
12
t
t
3. Client finde den Web Service und benutzt ihn, dazu fügt der Client den
Service als Webverweis zu einem Visual Studio .NET-Projekt hinzu
4. .NET untersucht das WSDL-Dokument und erzeugt eine Proxy-Klasse,
die dem Client die transparente Kommunikation mit dem Web Service
ermöglicht
5. Client ruft eine der Methoden der Web Service-Klasse auf
6. im Hintergrund werden die übergebenen Parameter von der Proxy-
Klasse in eine SOAP-Nachricht konvertiert und an den Web Service
gesendet
7. Proxy-Klasse empfängt eine SOAP-Response, konvertiert sie in den
entsprechenden Datentyp und gibt sie an Client als gewöhnlichen .NET-
Datentyp zurück
8. Client benutzt die zurückgegebenen Informa ionen
sucht einen Web Service
Abbildung 2.1: Zusammenarbeit mit einem Web Service
Web Service-Client UDDI-Verzeichnis
Webserver
UDDI-Verzeichnis
Web Server-Methode
Web Server-Methode
Web Server-Methode
Client-
Anweisung
Proxy-
Klasse
erzeugt
Proxy-Klasse
erhält Link zu Service oder
Discovery-Dokument
erhält WSDL-Dokument
ruft eine Methode
über SOAP auf
erhält ein Resultat über
SOAP
Apache Webserver und XML Web Services
13
WSDL ist als einziger Standard eng an .NET Web Services gebunden ist.
SOAP ist als Voraussetzung für die Kompatibilität mit anderem Plattformen
zur Entwicklung von Web Services unbedingt zu empfehlen, obwohl eine
simple Übertragung „ohne Schnickschnack“ mit HTTP POST und HTTP GET
auch unterstützt wird. DISCO und UDDI sind optionale Ergänzungen und
erleichtern das Veröffentlichen und Auffinden von Web Services.
2.4 Konkurrierende Web Service-Implementier-
ungen
Microsoft ist glücklicherweise nicht der einzige Anbieter von Web Service-
Werkzeugen, sonst könnte diese Technologie niemals weitgehende
Verbreitung erlangen. Web Service-Werkzeuge sind für eine große Vielzahl
von Sprachen und Plattformen verfügbar. Hier ist eine Liste einiger
Alternativen:
• IBM bietet eigenes Web Service-Entwicklungssystem
• Oracle bietet Web Integration Development Language und eigene
Web Service-Angebote
• Sun Microsystems – ONE-Angebot (Open Net Environment)
Web Services in Java
• Perl bietet SOAP::Lite-System
3 Apache 2.0 und ASP.NET
3.1 Integration von .NET Web Services in Apache
Zur Einbindung von .NET Web Services gibt es sicherlich mehrere
Möglichkeiten. Eine dieser Möglichkeiten ist eine Apache-Erweiterung
namens mod_aspdotnet. Sie enthält zwei Module. Zum einen die
mod_aspdotnet.so, welche das Apache 2.0-Modul ist und dort in der
http.conf (Apache-Konfigurationsdatei) eingebunden werden muss. Zum
anderen die Apache.Web.dll, welche ein Microsoft ASP.NET Modul ist und
bei der Installation in das .NET Framework eingebunden wird.
Apache Webserver und XML Web Services
Auf der Seite „http://www.axint.net/apache/httpd/mod_aspdotnet/“ kann
eine Binäry-Version der Erweiterung downgeloadet werden.
Abbildung 3.1: Begrüßungsbildschirm des mod_aspdotnet
Abbildung 3.2: Akzeptierung der Lizenzbestimmungen
14
Apache Webserver und XML Web Services
Abbildung 3.3: Starten der Installation
Abbildung 3.4: Fertig!!!
Nach der Installation ist im Modul-Ordner von Apache die Datei
„mod_aspdotnet.so“ zu finden. Nun muss noch dieses Modul in den Server
eingebunden werden und ein Alias für die Web Services festgelegt werden.
15
Apache Webserver und XML Web Services
16
Dazu die http.conf im conf-Ordner des Apache öffnen und folgende Code-
Zeilen einfügen, dabei müssen eventuell die Ordnerpfade anzupassen. LoadModule aspdotnet_module modules/mod_aspdotnet.so
AddHandler asp.net asax ascx ashx asmx aspx axd config cs csproj \
licx rem resources resx soap vb vbproj vsdisco webinfo
AliasMatch
"C:/Inetpub/wwwroot/aspnet_client/system_web/(\d+)_(\d+)_(\d+)_(\d
+)/(.*)" \
"C:/Windows/Microsoft.NET/Framework/v1.1.4322/ASP.NETClientFiles/$
4"
<Directory
"C:/Windows/Microsoft.NET/Framework/v1.1.4322/ASP.NETClientFiles">
Options FollowSymlinks
Order allow,deny
Allow from all
</Directory>
# Alias für ein “Hello World” Web Service
AspNetMount /HelloWorld "C:/Inetpub/wwwroot/HelloWorld"
Alias /HelloWorld "C:/Inetpub/wwwroot/HelloWorld"
<Directory "C:/Inetpub/wwwroot/HelloWorld">
Options FollowSymlinks Indexes Includes ExecCGI
Order allow,deny
Allow from all
DirectoryIndex default.htm default.aspx HelloWorldService.asmx
</Directory>
Apache Webserver und XML Web Services
17
3.2 „Hello World“
Hier folgt nun ein Quellcode für ein „Hello World“-Web Service mit Micro-
soft Visual Studio .NET: using System; using System.Web; using System.Web.Service; namespace HelloWorld{ public class HelloWorldService:System.Web.Services.WebService{ public HelloWorldService(){} [WebMethod] public string HelloWorld(){ return “Hello World”; } } }
Und nun ein Quellcode für eine Applikation, die über das VS .NET mit dem
„Hello World“-Web Service auf dem localhost verknüpft wurde. using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; namespace HelloWorldApp2{ public class Form1 : System.Windows.Forms.Form{ private System.Windows.Forms.Label label1; private System.ComponentModel.Container components=null; public Form1(){ InitializeComponent(); localhost.HelloWorldService objStr = new localhost.HelloWorldService(); string strHello = objStr.HelloWorld(); label1.Text = strHello; }
…
hier steht vom Studio automatisch generierter Quelltext zum Formular
… }
}
Apache Webserver und XML Web Services
18
4 Abbildungsverzeichnis
Abbildung 1.1: Marktanteile für September 2005 3
Abbildung 1.2: Begrüßungsbildschirm der Apache 2-Installation unter Windows 5
Abbildung 1.3: Akzeptierung der Lizenzbestimmungen des Apache 2 6
Abbildung 1.4: Eingabe der Server-Informationen 6
Abbildung 1.5: Willkommensbildschirm des Apache 2 7
Abbildung 1.6: Willkommensbildschirm des Apache von XAMPP 8
Abbildung 2.1: Zusammenarbeit mit einem Web Service 12
Abbildung 3.1: Begrüßungsbildschirm des mod_aspdotnet 14
Abbildung 3.2: Akzeptierung der Lizenzbestimmungen 14
Abbildung 3.3: Starten der Installation 15
Abbildung 3.4: Fertig!!! 15
5 Quellenverzeichnis
Lars Eilebrecht, Nikolaus Rath, Thomas Rohde (2003): Apache Webserver
Installation, Konfiguration, Administration, 5. Auflage, Bonn: mitp-Verlag
Sebastian Wolfgarten (2004): Apache Webserver 2 Installation, Konfiguration,
Programmierung, 2. Auflage, München: Addison-Wesley Verlag
Alex Ferrara, Matthew MacDonald (2003): Programmierung von .NET Web Services,
1. Auflage, Köln: O’Reilly Verlag und Co. KG
URL: Apachemodul für .NET Web Services, „http://httpd.apache.org/cli/introduction“,
Zugriff 2005-11-17