Serverseitige Programmiertechniken für
dynamische Webseiten mit Datenbankanbindung

+ andere TechDocs
+ Application Server
+ SQL
+ JSP
+ C#, .NET, ASP
+


Keine größere Website funktioniert ohne dynamische Erzeugung von Webseiten mit Anbindung an eine Datenbank. Nicht nur das globale Internet, auch das lokale Intranet (innerhalb von Firmen) profitiert von dieser Technik.
Damit beim Anwender ein üblicher Web-Browser reicht, werden dynamische Webseiten mit Programmmodulen auf der Webserver-Seite erzeugt. Der HTTP-Server wird zum Web Application Server erweitert.



CGI, Perl, PHP, CFML, ASP, JSP, Java ?

Wie werden serverseitige Programmmodule erstellt und im Webserver eingebunden?
Verschiedene Technologien stehen zur Verfügung, jede hat ihre Vor- und Nachteile.
CGI
Perl
Eine der frühesten und immer noch benutzten Techniken stellen per CGI-Schnittstelle (Common Gateway Interface) aufgerufene Perl-Skripte (Practical Extraction and Report Language) dar. Für kleine Anwendung ist dies der einfachste Weg und wird von jedem Webserver unterstützt. Bei größeren Anwendung kann es Performance-Probleme durch zu hohen Ressourcen-Verbrauch geben, da für jede Anfrage ein eigener Prozess gestartet wird. Dies lässt sich weitgehend mit FastCGI vermeiden, aber dann wird Multithreading komplizierter.
PHP
LAMP
Mehr Geschwindigkeit, komfortablere Bibliotheken und wesentlich bessere Möglichkeiten zur Datenbankanbindung bietet PHP (PHP Hypertext Preprocessor). Besonders in der Open-Source-Bewegung findet die LAMP-Kombination große Verbreitung (Linux-Apache-MySQL-PHP). PHP ist eher leicht zu erlernen. Für bestimmte Projekte können einige Merkmale in dieser professionellen, aber sehr spezialisierten Sprache fehlen, wie zum Beispiel einfachere Kommunikation mit anderen Applikationen, bessere Debugging-Möglichkeiten und nicht-requestgetriebe Hintergrundprozesse für Application-Server-Dienste. Zu bedenken ist, das die Programmiersprache nicht für andere Anwendungen eingesetzt werden kann.
CFML
ColdFusion 
Anders als CGI, Perl und PHP, die sehr preiswert oder kostenlos zu haben sind, ist CFML (ColdFusion Markup Language) eine kommerzielle Skriptsprache für den ColdFusion Application Server von Macromedia. Während Perl und PHP an C erinnern, zeigt CFML Verwandschaft zu HTML und ist deshalb eher bei Nicht-Programmierern und Gestaltern beliebt, die ihre Webseiten mit Tools bearbeiten wollen.
MS-ASP
VBScript
ActiveX
Eine bekannte Technik zur Einbettung von serverseitig ausgeführten Skripten in HTML-Seiten ist das von Microsoft propagierte ASP (Active Server Pages, nicht zu verwechseln mit Application Service Providing). Das frühere ASP konnte im Prinzip mit verschiedenen Skriptsprachen kombiniert werden, wurde aber fast nur mit VBScript verwendet. Fast alle Beispiele und Dokumentationen setzten VBScript voraus. Da VBScript alleine nicht mächtig genug ist, wurde komplexerer Code in COM- oder ActiveX-Komponenten verlagert. Die Microsoft-ActiveX-Library ist allerdings nur unter Windows mit dem Microsoft Internet Information Server (IIS) verfügbar.
Im Nachfolger, dem neuen ASP.NET, kommt nicht mehr VBScript zur Anwendung. Es können theoretisch alle .NET-Programmiersprachen eingesetzt werden. In den üblichen Dokumentationen und Beispielen wird VB.NET (Visual Basic .NET) und C# verwendet. ASP.NET ist bislang auf Windows 2000/XP beschränkt.
Java
JSP
Java EE
JSP (JavaServer Pages) hat Ähnlichkeiten zu MS-ASP und ASP.NET und bietet vergleichbare Features. Auch bei JSP besteht der Code aus normalem HTML-Code mit eingebetteten durch "<% ... %>" abgetrennten Code-Snippets (Schnipseln). Aber bei JSP enthalten diese Snippets Java-Code. Der gesamte Java-Sprachumfang samt Bibliotheken, JavaBeans- und EJB-/Java-EE-Komponenten steht zur Verfügung. Java zählt zu den modernsten, gut strukturierten und auf heutige Belange zugeschnittenen Programmiersprachen mit guter Netzwerkfähigkeit sowie komfortabler und schneller Datenbankanbindung. Einfache Anwendungen profitieren von der umfangreichen standardisierten Laufzeitumgebung und können z.B. mit dem kostenlosen Tomcat-Server realisiert werden. Große Anwendungen können skaliert und um verteilte Komponenten, Enterprise-Funktionen, Transaktionsmanagement, Sicherheitsmechanismen, Load Balancing und Failover-Schutz erweitert werden. JSP-Anwendungen laufen unverändert z.B. sowohl unter Linux + Apache als auch Windows + IIS sowie auf beliebigen Web Application Servern. Alle größeren Application Server bieten mittlerweile Java/JSP/Java-EE-Unterstützung.
Java ist besonders bei den großen Software-Herstellern (wie IBM, Sun, Oracle, SAP®) zur bevorzugten Programmiersprache geworden.


Tabellarischer Vergleich verschiedener Konzepte zur (serverseitigen) Web-Datenbankanbindung (an SQL-RDBMS)

Auf der Client-Seite soll einfacher Web-Browser ausreichen, vorzugsweise ohne besondere Erweiterungen (wie Java, ActiveX, Scripting, Plug-ins).
Die aufgezählten Möglichkeiten und Eigenschaften stellen nur eine unvollständige Auswahl dar.

Schnittstelle,
Skriptsprache oder
Application Server
typische
Betriebssysteme,
Webserver,
Datenbanken
Programmierung Vorteile / Nachteile
CGI, Perl
hoohoo.ncsa.uiuc.edu/cgi,
www.perl.org, www.perl.com,
www.cpan.org,
scriptsearch.internet.com,
www.perlscripts.de,
www.perl-archiv.de,
www.cgi-resources.com,
www.worldwidemart.com/scripts
Windows, Linux, Solaris.
Apache, IIS, Netscape.
CGI geht mit nahezu jeder Programmiersprache und auf fast allen Webservern.
Meistens wird Perl oder auch C/C++ verwendet.
Keine eingebaute Session-Unterstützung.
CGI: Langsam und hoher Ressourcen-Verbrauch, da für jede Anfrage Neustart eines eigenen Prozesses.
FastCGI: Schneller als CGI, aber Multithreading komplizierter.
Apache-ePerl und -embPerl: Perl-Skripte eingebettet in HTML.
Perl: Gute Textmanipulationsfunktionen, aber sonst gewöhnungsbedürftig, langsam und unzureichend.
PHP (PHP Hypertext Preprocessor)
www.php.net
www.php-center.de
www.phpbuilder.com
www.php-homepage.de
www.dynamic-webpages.de
www.zend.com
www.koehntopp.de/php
Theis: PHP4
Krause: PHP
Windows, Linux, Solaris.
Apache, IIS.
Oracle, IBM DB2, MS SQL, Sybase, MySQL, ODBC.
PHP-Skript im HTML-Code.
Erinnert an Perl, C und ASP.
Präprozessor mit integrierter Skriptsprache.
Session-Unterstützung.
Erweiterbar mit Java und PHP-Modulen.
Professionell, obwohl kostenlos (LAMP/WAMP) (unter Windows erst ab PHP v.4 schnell).
Konsequent auf Webserver ausgerichtet und schneller als CGI+Perl. Gute Datenbankunterstützung. Geringe Einarbeitungszeit.
Aber spezielle nirgendwo anders verwendbare Sprache. Kommunikation mit anderen Applikationen umständlich. Kein echter Application Server (requestgetrieben und ohne Hintergrundprozess). Weniger komfortables Debugging.
ISAPI (Microsoft) IIS. C/C++-APIs. Festlegung auf proprietäre Webserver-Schnittstelle.
Unsicherer, da in C programmierte Applikation im Webserver-Prozess.
ASP (Active Server Pages)
ms-asp.htm
www.asp.net
msdn.microsoft.com/workshop/server
msdn.microsoft.com/scripting
www.activeserverpages.com
www.aspdeveloper.net
www.aspfaq.de
www.aspgerman.com
www.wdvl.com/Authoring/ASP
wdvl.internet.com/Authoring/DB/ADO
Krause: Microsoft Act. Serv. Pages
Windows.
IIS.
OLE DB, ADO, ODBC.
Das frühere ASP verwendete normalerweise VBScript (selten auch JScript), das neue ASP.NET meistens VB.NET und C#.
Entwicklung mit MS Visual Studio (inkl. Debugger). Unterstützung auch in Macromedia Drumbeat und Dreamweaver Ultradev.
Das im früheren ASP verwendete VBScript/JScript ist zu wenig leistungsfähig, deshalb komplexerer Code per COM- oder ActiveX-Komponenten (z.B. in C/C++). Proprietär, da Nutzung der MS-ActiveX-Library nur mit Windows + IIS.
Wesentlich besser ist das neue ASP.NET mit Visual Basic .NET oder C#.
JSP (Java Server Pages), Java Servlets
jsp-einfuehrung.htm
technetwork/java/javaee/jsp
technetwork/java/javaee/servlet
jakarta.apache.org/tomcat
java.apache.org
www.serverpages.com
www.javaskyline.com
javaboutique.internet.com
www.javaworld.com
Windows, Linux, Solaris.
Tomcat, Apache, IIS, Netscape.
JDBC, Oracle, IBM DB2, MS SQL, Sybase, MySQL, ODBC, XML.
Java.
Sessions mit Cookies oder URL-Rewriting.
Erweiterbar mit JavaBeans, EJB, RMI und CORBA.
Entwicklung mit Eclipse, NetBeans, Borland JBuilder, IBM WebSphere Studio.
Unterstützung auch in Macromedia Drumbeat und Dreamweaver Ultradev.
Einheitliche, zukunftssichere, leistungsfähige, moderne und gut strukturierte Programmiersprache Java.
Leistungsfähige standardisierte Bibliotheken, einfache und schnelle Datenbankanbindung, gute Netzwerkfähigkeit, Komponententechnik, verteilte Applikationen, Enterprise-Funktionen.
Unterstützung in allen größeren kommerziellen Application Servern, da hierfür optimale Sprache. Aber (z.B. mit dem kostenlosen Tomcat) auch für kleine Anwendungen geeignet.
Sprache auch im Client verwendbar (falls z.B. HTML-Forms nicht ausreichen, etwa für JTable oder grafische Darstellungen).
Gute Entwicklungsumgebungen (inkl. Debugger).
Apache Tomcat Windows, Linux u.a. Webserver und JSP-Engine Open Source, frei verfügbar,
siehe auch jsp-einfuehrung.htm
Mort Bay Jetty
JBoss Windows, Linux u.a. Java, JSP, EJB, Java EE, XML Open Source, frei verfügbar
Oracle WebLogic Application Server Windows, Linux, Solaris.
Apache, IIS, Netscape.
JDBC, Oracle, MS SQL.
Professionelle vollständige Systeme für große Anwendungen inklusive Transaktionsmanagement, Skalierung, Load Balancing, Sicherheitsmechanismen, Failover etc.
IBM WebSphere Application Server Windows, Linux, Solaris.
IBM/Apache, IIS, Netscape.
JDBC, IBM DB2, Oracle.
Oracle Application Server
www.doag.de, www.orafaq.com
Windows, Linux, Solaris.
Sun ONE Application Server Windows, Solaris, Linux.
Apache, IIS.
JDBC, Oracle.
Apple WebObjects Mac OS X Server, Windows.
JDBC, Oracle, IBM DB2, MS SQL, Sybase.
Macromedia ColdFusion Application Server Windows, Linux, Solaris.
Apache, IIS, Netscape.
Oracle, IBM DB2, MS SQL, Sybase, OLE DB, ODBC, XML.
CFML-Skript im HTML-Code (oder CFScript).
CFML ähnelt HTML (aber ist sehr verschieden zu C).
Erweiterbar mit Java, EJB, CORBA und COM.


Weitere Themen: andere TechDocs | Web Application Server | SQL | JSP | EJB | C#/.NET | MS-ASP
© 1998-2007 Torsten Horn, Aachen