Application Server
Ein Anwendungsserver oder Application Server [] ist im Allgemeinen ein Server in einem Computernetzwerk, auf dem Anwendungsprogramme (applications) ausgeführt werden. Im engeren Sinne bezeichnet der Begriff Application Server eine Software, die als Ablaufumgebung für Anwendungsprogramme diesen spezielle Dienste zur Verfügung stellt, wie beispielsweise Transaktionen, Authentifizierung oder den Zugriff auf Verzeichnisdienste und Datenbanken über definierte Schnittstellen.Häufig meint man dabei Software-Applikationen mit einer drei- oder mehrschichtigen Architektur, wie sie z. B. vom Java_EE- oder .NET-Framework vorgeschlagen werden. Ziel ist es ? namensgebend für dreischichtige Architektur - die drei Aufgaben Präsentation, Geschäftslogik und Datenhaltung voneinander zu trennen.
Präsentationsschicht
Die Präsentationsschicht in einem Application-Server-Szenario dient der Darstellung der Inhalte und der Entgegennahme von Benutzereingaben.
Für die Darstellung der Inhalte existieren zwei Alternativen:
* man setzt auf den Internetbrowser als Thin Client und stellt die Inhalte und Formulare in XHTML, XML und anderen, für das WWW geschaffenen Sprachen dar, nutzt also eine klassische ?Webanwendung?.
* man produziert eine eigene grafische_Benutzeroberfläche als Fat-Client.
Für den Datenaustausch zwischen Präsentationsschicht und Geschäftslogikschicht gibt es ebenfalls mehrere Alternativen:
SOAP, XML-RPC
* Java-RMI
CORBA/IIOP
DCOM
* SUN RPC (Remote Procedure Call)
HTTP, HTTPS
Geschäftslogikschicht
Die Geschäftslogikschicht (auch Verarbeitungsschicht, Anwendungslogikschicht oder Applicationlayer) realisiert das eigentliche Geschäftsmodell, indem die am Geschäftsmodell beteiligten Geschäftsobjekte und Geschäftsprozesse implementiert werden.
Da Webbrowser besonders beliebte Thin-Clients für Application Server darstellen, sind die meisten Application Server entweder Ergänzungen zu Webservern (z. B. Perl oder PHP für Apache oder IIS) oder enthalten einen Webserver (z. B. Tomcat in JBoss, WebSphere oder WebLogic).
Für den Datenaustausch zwischen Geschäftslogikschicht und Datenhaltungsschicht werden Datenbankschnittstellen wie JDBC, ODBC oder Perl-DBI sowie alternativ der direkte Zugriff auf das DBMS (=Datenbank Management System) verwendet (z. B. bei PHP).
Datenhaltungsschicht
Trotz objektorientierter_Programmierung wird auch heute noch in der Regel ein relationales_DBMS eingesetzt, um die Datenhaltung für Application Server zu realisieren. Häufig besteht dabei eine ?1 : 1?-Abbildung von Geschäftsobjekt-Klassen auf Tabellen bzw. Geschäftsobjekt-Instanzen auf Tabellenzeilen (Datensätze). Diese Abbildung wird als Object-Relational-Mapping bezeichnet.
Eigenschaften
Ein Application Server wird durch folgende Eigenschaften charakterisiert:
Anwendungen müssen für einen bestimmten Typ von Application Server entwickelt werden (Typen sind z. B. Java_EE, .NET, SAP Web Application Server). Ein Application Server bietet eine Laufzeitumgebung für den Server-Teil einer Client-Server Anwendung (bei Webanwendungen ist der Webbrowser der Client-Teil der Anwendung) mit
* expliziten Eigenschaften:
** Kapselung von Datenquellen (standardisierte Adapter zu Datenbanken, Message Queueing, Directory-Diensten, Anwendungen)
** Interfaces zu höherwertigen Diensten: Asynchrone Kommunikation, Transaktionsverarbeitung, Datentransformation & Persistenz
* impliziten Eigenschaften:
** Skalierbarkeit, ohne die Anwendung modifizieren zu müssen
** Monitoring-, Kalibrierungs-, Logging- und Management-Funktionen zur Laufzeit
** Software Lifecycle Management (Delivery, Deployment, Patches, Upgrades)
Inzwischen hat sich die Bezeichnung Application Server für Java EE-Server (BEA WebLogic, IBM_WebSphere, Oracle iAS, JBoss, SUN One) durchgesetzt und wird synonym für die Komponente einer Web-Anwendung (z. B. Webmail bei Lycos, Suche und Bieten bei eBay oder Amazon) verwendet, die dynamisch Seiten erzeugt, obwohl viele dieser Funktionen nicht den Funktionsumfang eines Application Server benötigen (ein Webserver mit Scripting würde ausreichen).
Eine Differenzierung ihrer Produkte führen die Hersteller über die nicht standardisierten Aspekte durch: Performance bei der Anbindung unterschiedlicher Datenquellen, Management-Funktionen für Cluster, Backup-Integration, Detaillierung des Monitoring, Priorisierung von Anwendungen.
Siehe auch
Apple_WebObjects
JBoss Application Server
Zope
OpenLaszlo
GNUstepWeb
Weblinks
* http://www.theserverside.com/reviews/matrix.tss Liste der Application-Server mit allen Features (Englisch)

