Datenbankanbindung an das Internet: Aktueller Stand und zukünftige Entwicklung Dipl.-Wirtsch.Inf Benedikt Wismans Universität Bamberg, Lehrstuhl für Wirtschaftsinformatik insb. Systementwicklung und Datenbankanwendung Feldkirchenstr 21, 96045 Bamberg [email protected] 1 Einführung Seit der Einführung des World Wide Web (WWW) entwickelt sich das Internet von einem Austauschforum für Wissenschaftler zu einem globalen und universellen Kommunikationsmedium. Insbesondere der kommerziell genutzte Anteil in Form von Werbung, Produktinformation, Entgegennahme von Bestellungen, Bestell- und Lieferverfolgung –um nur einige Bespiele zu nennen– wächst dramatisch. Der interaktive Zugriff auf aktuelle Unternehmensdaten über das WWW entwickelt sich zu einem unternehmenskritischen Produktionsfaktor. Die Aktualität und Interaktivität der Internetpräsenz eines Unternehmens kann aber nur durch die Integration geeigneter WWW-Komponenten in das betriebliche Informationssystem gewährleistet werden. Aufbauend auf dem relevanten Datenbestand als Integrationsbasis wird das betriebliche Informationssystem um WWW-basierte Anwendungssysteme ergänzt. Gegenstand dieses Papiers ist die Untersuchung und Bewertung von Architekturen WWW-basierter Anwendungssysteme aus der Sicht der Wirtschaftsinformatik. Dazu wird einleitend der verwendete Architekturrahmen vorgestellt. Danach werden die für die WWW-Anbindung relevanten Kriterien konventioneller, d.h. nicht WWW-basierter, Anwendungssysteme dargestellt. Der Hauptteil dieses Papiers stellt drei unterschiedliche Architekturformen WWW-basierter Anwendungssysteme vor und bewertet diese anhand der aufgestellten Kriterien. Den Abschluß bildet ein Ausblick auf mögliche zukünftige Entwicklungen. 2 Architekturrahmen Der in der weiteren Betrachtung verwendete Architekturrahmen ist das in der Wirtschaftsinformatik grundlegende ADK-Modell [FeSi94] für Anwendungssysteme. Das ADK-Modell unterscheidet in der Innensicht eines betrieblichen Anwendungssystems die Ebenen der Kommunikation (K), der Anwendungsfunktionalität (A) und der Datenhaltung (D). Die Ebene der Kommunikation wird hier auf die Betrachtung der grafischen Nutzerschnittstelle reduziert. In der grafischen Darstellung (s. Abb. 1-4) stellt der mittlere Balken die Aufteilung des Anwendungssystems zwischen Client (C) und Server (S) dar. Zusätzlich wird auf jeder Ebene im rechten Balken die verwendete Basissoftware bzw. das verwendete API benannt. Als Clients können beliebige grafische Workstations auftreten. Der Begriff Server steht nicht für eine konkrete Maschine, sondern für ein abstraktes Konzept, hinter dem sich beliebig viele dedizierte Servermaschinen (z.B. Datenbankserver und Webserver) verbergen können. 3 Eigenschaften konventioneller Anwendungssysteme Im folgenden werden die in diesem Kontext relevanten Eigenschaften konventioneller, also nicht WWW-basierter, Anwendungssysteme dargestellt. Im nächsten Kapitel wird dann untersucht, wie diese Eigenschaften in unterschiedlichen Architekturen WWW-basierter Anwendungssysteme realisiert werden. Abbildung 1 stellt die typische Architektur eines konventionellen Anwendungssystems dar. Kommunikation Win32 GUI C Anwendungsfunktionalität Datenhaltung C / C++ S RDBMS / SQL Abbildung 1: Client/Server-Architektur auf der Basis von RDA (remote data access) CLIENT / SERVER-ARCHITEKTUR Die Grenze zwischen Client und Server folgt typischerweise dem RDA-Konzept (remote data access) [RDA], da die heutigen Anwendungssysteme datenintegriert sind. Der Zugriff auf die Datenbasis erfolgt dabei über proprietäre Protokolle oder über standardisierte Middlewarekomponenten. In der Windows-Welt hat sich hier als Standard insbesondere ODBC (Open Database Connectivity) [ODBC] von Microsoft etablieren können. Das ODBC – API setzt auf dem Call Level Interface von SQL [SQL] auf und wird von fast allen großen Datenbankherstellern, wie z.B. der Software AG, unterstützt. GRAFISCHE NUTZEROBERFLÄCHE Das AWS präsentiert sich dem Nutzer als ein Multiple Document Interface (MDI), in welchem gleichzeitig mehre Client-Fenster, nicht-modale und modale1 Dialoge geöffnet sein können. Die zu bearbeitenden Daten werden in den Client-Fenstern angezeigt und können über die üblichen grafischen Controls wie z.B. Pushbuttons oder durch Menüauswahl manipuliert werden. Der Fensteraufbau und die Datendarstellung sind voneinander unabhängig. Die Darstellung ist fensterorientiert. SESSION-MANAGEMENT Der Programmstart erfolgt definiert durch die Systemanmeldung (Login), das Programmende durch die Abmeldung (Logout). Zwischen Login und Logout besteht eine kontinuierliche, personalisierte Verbindung (Session) zwischen dem Nutzer und dem Anwendungssystem. Die Session ist dabei unabhängig vom Datenzugriff: während einer Session können 0 bis beliebig viele Datenbankverbindungen geöffnet sein. Dabei können gleichzeitig verschiedene Datenbanken referenziert werden. 4 Architekturen WWW-basierter Anwendungssysteme In diesem Kapitel werden drei Architekturformen WWW-basierter Anwendungssysteme vorgestellt, die so oder in sehr ähnlicher Form bereits im Internet Standard sind. Es handelt sich um die CGI-basierte-, die ASP-basierte- und die Applet-basierte Architekturform. 1 Zu jedem Zeitpunkt kann genau ein modaler Dialog dargestellt werden In dieser Auflistung fällt die ASP-basierte Architekturform auf, da es sich um eine proprietäre Lösung für den Webserver Microsoft Information Server III handelt, während die beiden anderen Architekturformen auf offenen Standards basieren. Da aber auch in der ASP-basierten Architektur alle ODBC-fähigen Datenbanken und alle Webbrowser unterstützt werden, und diese die Lücke zwischen CGI-basierten und Applet-basierten Systemen füllt, wird sie hier thematisiert. 4.1 CGI-basierte Architekturform Durch das CGI (Common Gateway Interface) [CGI] wird es WWW-Clients ermöglicht, aus HTMLFormularen [FORM] heraus ausführbare Programme, sog. CGI-BINs, auf dem Webserver zu starten. Das CGI-BIN kann methodenabhängig (POST und GET) über Umgebungsvariable und die Kommandozeile parametrisiert werden. Neben CGI existieren weitere Implementierungen von Gateway-Schnittstellen wie z.B. ISAPI (Internet Server Application Programming Interface) [ISAPI] von Microsoft, die sich aber bezüglich der Architektur nicht voneinander unterscheiden. Abbildung 3 zeigt diese Architektur im ADK-Modell. Kommunikation C Anwendungsfunktionalität S Datenhaltung HTML / HTTP CGI -BIN (C / C++, Skriptsprachen) RDBMS / SQL Abbildung 2: CGI-basierte Architekturform 4.1.1 Eigenschaften CGI-basierter Anwendungssysteme CLIENT / SERVER-ARCHITEKTUR Der Datenzugriff ist für den Client transparent. Die für den Datenzugriff notwendigen SQLStatements sind Teil des CGI-BINs. Der Client erhält Ergebnismengen und/oder Fehlermeldungen als dynamisches HTML-Dokument zurück. Die Kommunikation zwischen Client und Webserver folgt dem HTTP (HyperText Transport Protocol) [HTTP]. GRAFISCHE NUTZEROBERFLÄCHE Nach der Betätigung des SUBMIT-Buttons auf der Formularseite (siehe Quelltextbeispiel) ruft der Client das CGI-BIN des Servers auf und wartet dann auf die Übergabe der Ergebnisseite, welche die Formularseite im Webbrowser ersetzt. Weitere Bearbeitungen der Formularseite sind nicht möglich. Die Nutzeroberfläche ist somit nicht fensterorientiert, sondern seitenorientiert. SESSION-MANAGEMENT Ein Session-Management existiert nicht. Jeder Start eines CGI-BINs stellt sowohl aus Sicht des Clients wie auch aus Sicht des Servers eine in sich abgeschlossene Programmausführung dar. Die Zwischenspeicherung von Informationen, die den Seitenaufbau der Ergebnisseite überleben, ist nicht möglich. Dies hat insbesondere zur Folge, daß der Nutzer bei jedem Start eines CGI-BINs die für den Datenzugriff notwendige Autorisierung erneut vornehmen muß. 4.1.2 Code-Beispiel Das folgende Codefragment zeigt den HTML-Code einer typischen Login-Maske mit der Möglichkeit, aus einem einfachen Menü die Form der weiteren Bearbeitung auszuwählen. Es ist zu beachten, daß die Eingabe des Login-Namens und des Passworts beim Aufruf des nächsten CGIBINs, z.B. im Bereich der Kundenverwaltung, erneut vorgenommen werden muß. )2500(7+2' SRVW$&7,21 PHQXH[H"BB,1)2BB1$0( 7)250! 3!1DPH %5!,13871$0( 1$0(7<3( 7(;79$/8( ,KU1DPH! 3!3DVVZRUG %5!,13877<3( 3$66:2571$0( 3DVVZRUW! 3!$XVZDKO %5! ,13877<3( 5$',21$0( .XQGHQ9$/8( &+(&.('!.XQGHQYHUZDOWXQJ ,13877<3( 5$',21$0( $XIWUlJH9$/8( !$XIWUlJH ,13877<3( 5$',21$0( %HVWDQG9$/8( !%HVWDQG 3!,13877<3( 68%0,79$/8( 2.!,13877<3( 5(6(79$/8( /|VFKHQ! )250! 4.1.3 Fazit Auf CGI basierende Systeme können aufgrund des nicht vorhandenen Session-Managements und der seitenorientierten Nutzeroberfläche nicht für stark interaktive Anforderungen eingesetzt werden. Für anonyme Auskunftssysteme, die einfach parametrisiert sind, wie z.B. die Fahrplanauskunft der Deutschen Bundesbahn [DB], können CGI-basierte Systeme aber effizient eingesetzt werden. 4.2 ASP-basierte Architekturform ASP (active server pages) [ASP] ist eine Erweiterung des Webservers Internet Information Server III von Microsoft. Wie der Name schon andeutet, stellt der Webserver eine Ablaufumgebung für Skripte in HTML-Dokumenten bereit. Skripte, die mit dem Zusatz RUNAT=SERVER versehen sind oder innerhalb der Trennzeichen <% und %> stehen, werden auf dem Webserver ausgeführt, während andere Skripte konventionell auf dem Client ausgeführt werden. Serverskripte haben Zugriff auf den folgenden Satz von Objekten: APPLICATION OBJECT Eine Applikation besteht aus allen Dateien und Unterverzeichnissen eines virtuellen Verzeichnisses auf dem Webserver. Für Start und Ende jeder Applikation können globale Initialisierungs- bzw. Aufräumfunktionen codiert werden. Der Zugriff auf das Application Object ist von allen Instanzen der Applikation, also allen Sessions, transaktionsgeschützt (lock/unlock) möglich. SESSION OBJECT Für jede Instanz der Applikation verwaltet der Webserver ein Session Object, in dem u. a. beliebige Variablen erzeugt, geschrieben und gelesen werden können. Auch für das Initialisieren bzw. Zerstören von Session Objects können „Konstruktoren“ und „Destruktoren“ codiert werden. REQUEST OBJECT UND RESPONSE OBJECT Das Request Object stellt eine höhere Schnittstelle zu den Übergabevariablen des HTML-Formulars zur Verfügung. Das Response Object dient der komfortablen Ausgabe von Daten in die Antwortseite, die vom Server an den Client zurückgeschickt wird. SERVER OBJECT Das Server Object bietet Zugriff auf Methoden, die der Webserver zur Verfügung stellt. Dazu gehören z.B. das Instantiieren neuer Objekte oder die Abbildung von virtuellen auf physische Zugriffspfade. Abbildung 4 zeigt die ASP-Architektur im ADK-Modell. Im Gegensatz zur CGI-basierten Architektur ist die Ebene der Anwendungsfunktionalität zu einem geringen Teil dem Client zugeordnet. Während in der CGI-basierten Architektur lediglich statische Client-Skripte Verwendung finden, welche insbesondere die Oberflächengestaltung betreffen, können in der ASPbasierten Architektur Client-Skripte dynamisch durch Server-Skripte erstellt werden. So kann z.B. der Code einer JavaScript-Funktion [JSCRIPT], die durch das Betätigen eines Buttons aufgerufen wird, in Abhängigkeit des Ergebnisses einer Datenbankabfrage vollkommen unterschiedliche Aktionen ausführen. Kommunikation C Anwendungsfunktionalität S Datenhaltung HTML / HTTP Client-Skripte Server-Objekte, Server-Skripte RDBMS / SQL Abbildung 3: ASP-basierte Architektur 4.2.1 Eigenschaften ASP-basierter Anwendungssysteme CLIENT / SERVER-ARCHITEKTUR Der Datenzugriff ist für den Client transparent. Die für den Datenzugriff notwendigen SQLStatements sind Teil der ASP-Seite und werden nach Anforderung der Seite durch den Client vom Server ausgeführt. Der Client erhält Ergebnismengen und/oder Fehlermeldungen als dynamisches HTML-Dokument zurück. Ein Server-Skript kann ActiveX Data Objects (ADO) erstellen und ändern. So können ADO-Objekte verwendet werden, um Anfragen nach Daten über einen ODBCTreiber an einen Datenbankserver zu senden. GRAFISCHE NUTZEROBERFLÄCHE Die grafische Nutzeroberfläche ist wie bei CGI-basierten Architekturen seitenorientiert, nicht fensterorientiert. Das Ausführen der Server-Funktionen einer ASP-Seite kann nur durch den Aufruf dieser Seite angestoßen werden. So ist es insbesondere nicht möglich, Funktionen auf dem Server durch das Betätigen eines Buttons auf der gleichen ASP-Seite anzustoßen. SESSION-MANAGEMENT Das Session-Management wird vom Webserver über das Application Object und das Session Object realisiert. Der erste Aufruf einer ASP-Seite der Applikation führt zur Instantiierung des Session- Objects und zur Ausführung der Session_OnStart()-Funktion, die zur Initialisierung der Session verwendet werden kann. Das Ende der Session wird dem Webserver entweder explizit durch den Aufruf der Session.Abandon()-Methode mitgeteilt oder durch timeout festgestellt. In beiden Fällen wird abschließend die Session_OnEnd()-Funktion aufgerufen, in der Aufräumarbeiten codiert werden können. 4.2.2 Code-Beispiel Das folgende Codefragment entstammt einer ASP-Seite, die von einem als Login-Maske dienenden HTML-Formular aufgerufen wird. Über das Request Object werden die Formularfelder LoginName und Passwort abgerufen und im Session Object gespeichert. Aus der Bezeichnung des ODBC-DSN, dem LoginName und dem Passwort wird der ODBC-ConnectionString erzeugt und ebenfalls als Variable im Session Object gespeichert. YDU/RJLQ1DPH YDU3DVVZRUW /RJLQ1DPH 5HTXHVW)RUP/RJLQ1DPH 3DVVZRUW 5HTXHVW)RUP3DVVZRUW 6HVVLRQ'61 )/(;12: 6HVVLRQ8,' /RJLQ1DPH 6HVVLRQ3:' 3DVVZRUW 6HVVLRQ&RQQHFWLRQ6WULQJ GVQ 6$*)/(;XLG /RJLQ1DPHSZG 3DVVZRUW! Die ConnectionString-Variable des Session Object wird innerhalb der Session von jeder nachfolgend aufgerufenen ASP-Seite ausgelesen, um die Verbindung zur Datenbank aufzubauen. Nach dem Ausführen des SQL-Statements wird das Response Object zur formatierten Ausgabe der Ergebnismenge verwendet. YDU2%-GE&RQQHFWLRQ 2%-GE&RQQHFWLRQ 6HUYHU&UHDWH2EMHFW$'2'%&RQQHFWLRQ 1HXHV$FWLYH;'DWD2EMHFW 2%-GE&RQQHFWLRQ2SHQ6HVVLRQ&RQQHFWLRQ6WULQJ $XVOHVHQGHU&RQQHFW3DUDPHWHU YDU64/4XHU\ YDU,1)2B/LVW 64/4XHU\ 6(/(&7',67,1&7VWXGIDFKVSH]LDOLVLHUXQJLQKDEHU)520/67BWSJUXSSH ,1)2B/LVW 2%-GE&RQQHFWLRQ([HFXWH64/4XHU\ 5HVSRQVH:ULWH +!/HKUVWXKOIU,1)2B/LVWVWXGIDFK LQVE,1)2B/LVWVSH]LDOLVLHUXQJ 3!,1)2B/LVWLQKDEHU+! ,1)2B/LVW&ORVH! 4.2.3 Fazit Die Unterstützung des Session-Managements ist ein wichtiger Meilenstein auf dem Weg von einer losen Sammlung von HTML-Dokumenten hin zu einem geschlossenen Anwendungssystem. Durch den dynamischen Zusammenbau von Client-Skripten kann der Programmfluß analog zu kontextabhängigen Menüs gezielt gesteuert werden. Allerdings bleibt das Manko der seitenorientierten Nutzerschnittstelle bestehen, so daß stark interaktive Systeme unter Verwendung von ASP kaum nutzerfreundlich codiert werden können. 4.3 Applet-basierte Architektur Applets sind in Java [JAVA] geschriebene Programme, die innerhalb eines Java-fähigen Webbrowsers [JVBROW] ausgeführt werden. Unter den vielen interessanten Aspekten, welche die Programmiersprache Java bietet, werden hier lediglich die Verwendung von Applets in HTMLDokumenten, der Zugriff auf Datenbanken aus Applets heraus und die Möglichkeiten der grafischen Nutzeroberfläche thematisiert. Abbildung 4 zeigt die Architektur Applet-basierter Anwendungssysteme im ADK-Modell. HTML / HTTP Java AWT Kommunikation C Anwendungsfunktionalität Datenhaltung Java-Applets S RDBMS / SQL Abbildung 4: Java-basierte Architektur 4.3.1 Eigenschaften Applet-basierter Anwendungssysteme CLIENT / SERVER-ARCHITEKTUR Der Zugriff auf die Datenbasis erfolgt durch den Client. Die für den Datenzugriff notwendigen SQL-Statements sind Teil des Java-Applets und werden über die JDBC-Schnittstelle an den Server weitergeleitet. Datenbanken, die JDBC nicht unterstützen, können alternativ über die JDBC-ODBC- Brücke angesprochen werden. Diese Konfiguration hat aber den Nachteil, daß der ODBC-Treiber für die Datenbank auf dem Client installiert werden muß. GRAFISCHE NUTZEROBERFLÄCHE Die grafische Nutzeroberfläche kann durch Verwendung des Java AWT (Java Abstract Window Toolkit) beliebig gestaltet werden. Die Nutzeroberfläche ist somit nicht seitenorientiert, sondern fensterorientiert. SESSION-MANAGEMENT Das Session-Management muß wie in konventionellen Anwendungssystemen vom Programmierer codiert werden. Dazu stehen die üblichen Konstrukte der Programmiersprache Java zur Verfügung. Allerdings birgt die Codierung einige Schwierigkeiten, da meistens nicht bekannt ist, welche Webseiten überhaupt zu einer Applikation gehören und welche nicht. Da Java aber eine automatische garbage collection zur Verfügung stellt, kann dieser Aspekt vernachlässigt werden. 4.3.2 Code-Beispiel Das folgende Codefragment demonstriert den Zugriff auf die JDBC-ODBC-Brücke aus einer JavaFunktion, die Teil eines Applets ist. Die Werte der Übergabevariablen SqlUser, SqlPassword und SqlDatabase sind vor dem Aufruf dieser Funktion über ein Fenster eingelesen worden. SXEOLFERROHDQORJLQ6WULQJ6TO8VHU6WULQJ6TO3DVVZRUG6WULQJ6TO'DWDEDVH ^ 8VHU 6TO8VHU 3DVVZRUG 6TO3DVVZRUG 'DWDEDVH 6TO'DWDEDVH 6WULQJ85/ MGEFRGEF6TO'DWDEDVH WU\^ ` ` &ODVVIRU1DPHVXQMGEFRGEF-GEF2GEF'ULYHU FRQ 'ULYHU0DQDJHUJHW&RQQHFWLRQ85/6TO8VHU6TO3DVVZRUG 'DWDEDVH0HWD'DWDGPD FRQJHW0HWD'DWD 6\VWHPRXWSULQWOQ?Q9HUEXQGHQPLW GPDJHW85/ UHWXUQWUXH 4.3.3 Fazit Java-Applets bieten durch das AWT für die Gestaltung der Nutzeroberfläche und durch JDBC für den Datenzugriff nahezu alle Möglichkeiten einer konventionellen Programmiersprache bei der Erstellung WWW-basierter Anwendungssysteme. Allerdings ist die vollständige Verlagerung der Anwendungsfunktionalität vom Server auf den Client bei mittleren bis großen Anwendungssystemen nachteilig, da zum einen das Laden der Klassen lange dauern kann, zum anderen keine Annahmen über die Leistungsfähigkeit der Clientmaschine getroffen werden können. 5 Ausblick auf zukünftige Entwicklungen Zweifelsohne werden WWW-basierte Anwendungssysteme zukünftig insbesondere auf Java aufbauen. Allerdings bieten auch die beiden anderen hier vorgestellten Architekturformen für bestimmte Aufgaben Vorteile. Es liegt also nahe, alle drei Ansätze in einer Architektur WWW-basierter Anwendungssysteme zu integrieren. Die Integrationsbasis muß dabei der kleinste gemeinsame Nenner der oben dargestellten Architekturformen sein: die Webseite. Aus der ASP-basierten Architektur werden dabei die Bündelung von zusammengehörigen Webseiten zu Anwendungssystemen und das Session-Management übernommen. Innerhalb dieses Applikationsrahmens können die Webseiten das ganze Spektrum möglicher Formen von Anwendungsfunktionalität enthalten: Script-Funktionen, die auf dem Server ausgeführt werden, Script-Funktionen, die auf dem Client ausgeführt werden, Aufrufe konventioneller CGI-BINs oder anderer Gateway-Schnittstellen und Java-Applets. Auf diese Weise kann die optimale Aufspaltung der Ebene der Anwendungsfunktionalität zwischen Client und Server vorgenommen werden. So kann z.B. eine sehr aufwendige Datenbankabfrage als CGI-BIN auf dem Server gestartet werden, der abrupte Seitenwechsel kann durch Framing-Technik abgemildert werden. Kleine Datenbankabfragen wie das Füllen einer Listbox können beim Seitenaufbau durch ein Serverskript oder bei Bedarf durch ein Applet durchgeführt werden. Alle Datenbankzugriffe werden mit der Autorisierungsinformation parametrisiert, die das Session Object vorhält. So entfällt auch beim Aufruf von CGI-BINs die lästige Neueingabe von Nutzername und Passwort. Weitergehende Verbesserungen der oben beschriebenen Architekturformen können z.B. durch Ergänzung des HTTP um ein asynchrones Kommunikationsprotokoll zwischen Webserver und Webbrowser erreicht werden. In Analogie zur non-blocking Socket-Verbindung kann so eine optimale Auslastung von Client und Server erreicht werden. 6 Literatur- und Webseitenverzeichnis [FeSi94] Ferstl O.K., Sinz E.J.: Grundlagen der Wirtschaftsinformatik. Band 1, 2. Auflage, Oldenbourg, München 1994 [DB] http://www.bahn.de [ASP] http://www.microsoft.com/iis; http://www.cobb.com/asp/freevw79.htm [JAVA] http://www.javasoft.com [JVBROW] http://www.netscape.com; http://www.microsoft.com/ie; [RDA] http://www.itaa.org/G6.htm [ODBC] http://www.bayon.com/cstar/database/connect.htm [SQL] http://www.bayon.com/cstar/database/sql.htm [CGI] http://kaos.erin.gov.au/www-standards/www-authoring/cgi.html [FORM] http://www.environment.gov.au/www-standards/www-authoring/form.html [HTTP] http://www.w3.org/Protocols/HTTP/AsImplemented.html [JSCRIPT] http://tips-tricks.com/j_script.html [ISAPI] http://www.bnt.com/inetsdk/default.htm