Die Amacont-Architektur

Die Amacont-Architektur setzt auf die Servertechnologien von Apache Cocoon auf, so dass Cocoon die Middleware zwischen Amacont und Webserver bildet. Um Performance-Tests darin durchführen zu können, müssen die Ansatzpunkte für GreyBox-Tests erkannt und verstanden werden. Aus diesem Grund folgt zunächst eine kurze Einführung in das Webframework "Apache Cocoon". Darauf aufbauend werden die  Amacont-Komponenten detailierter betrachtet, und der Ablauf der Amacont-Pipeline dargestellt. Diese Kenntnisse helfen, mit den später ermittelten Kenngrößen anhand der unter Kapitel 3.4 genannten Performance-beeinflussenden Dimensionen, Veränderungen herbeizuführen.

Apache Cocoon

Cocoon ist ein Web-Framework zur Erstellung von XML-Publishing-Applikationen wie Websites oder Publishing Frontends. Hierfür nutzt es Ressourcen anderer Projekte der Apache Foundation wie "Xalan", "Xerces" oder "FOP". "Avalon", ein Java-Ansatz zur komponentenorientierten Softwareentwicklung, liefert die Basisarchitektur für Cocoon.

Eine auf Cocoon beruhende Anwendung besteht aus einer Menge von einzelnen Funktionen, die jeweils eine Anfrage wie etwa einen Browser-Request verarbeiten und als Ergebnis ein Dokument meist in Form einer HTML-Datei zurückliefern. Durch die Verwendung von XSLT-Stylesheets lässt sich auch eine Vielzahl weiterer Formate erzeugen, neben HTML beispielsweise auch WML oder PDF.

Es trennt dabei Daten, Layout und Logik. Dieses Konzept ist in der aktuellen Softwareentwicklung als MVC -Architektur bekannt und ermöglicht u.a. verschiedenen Entwicklern, getrennt an ein und demselben Projekt zu arbeiten. Des Weiteren wird die Wartung der erstellten Applikation wesentlich vereinfacht und Abstraktionsebenen geschaffen. Durch die komponentenbasierte Architektur ist ein hohes Maß an Wiederverwendbarkeit der einzelnen Komponenten möglich.

Das Zentrum der Cocoon-Architektur ist die Sitemap, eine in XML definierte Konfigurationsdatei, welche im Wesentlichen aus verschiedenen Funktionen (Pipelines) besteht, die Requests entgegennehmen und Dokumente generieren. Die Datei legt ebenso die verschiedenen Komponenten fest, die innerhalb einer Pipeline verwendet werden können.

Eine Pipeline in Cocoon besteht aus einer Kette von verschiedenen Komponenten, die entweder aus dem Basisumfang von Cocoon oder aus Eigenentwicklungen stammen können. Eigene Komponenten können durch eine entsprechende Konfigurierung in die Sitemap aufgenommen werden.

Cocoon unterscheidet verschiedene Kategorien von Komponenten, wobei jeder von ihnen eine bestimmte Aufgabe innerhalb einer Pipeline zukommt. Grundsätzlich beginnt jede Pipeline mit genau einem Generator. Dieser erzeugt die XML-Daten, die anschließend durch die Pipeline fließen. Dabei darf es sich entweder um Nutzdaten oder auch um Befehle für nachgelagerte Komponenten handeln. Sie können entweder aus einer Datei gelesen oder etwa auch von einem anderen Server mittels HTTP übertragen werden.

In einer Pipeline folgt auf den Generator ein Transformator als nächste Komponenten-kategorie. Dieser wird durch SAX-Ereignisse ausgelöst, die der Generator in die Pipeline schickt. Der Transformator ist dann in der Lage, auf diese Events zu reagieren und mit den übergebenen XML-Daten zu arbeiten. Er kann XML-Tags in den Datenstrom einfügen beziehungsweise entfernen oder den Inhalt auf eine andere Art und Weise manipulieren.

Der am meisten verwendete Transformator ist jener für XSLT. Dieser integriert “Xalan” in Cocoon und erlaubt die Transformation der XML-Daten mittels eines XSLT-Stylesheets. Als eine typische Anwendung dafür sei hier die Umwandlung von XML-Daten nach XHTML erwähnt - XHTML deshalb, weil in der Pipeline nur XML-konforme Formate erlaubt sind. Eine Pipeline kann mehrere Transformatoren nutzen, welche damit auch in der Lage sind, Tags für nachgelagerte Transformatoren zu generieren. Auf diese Weise lassen sich diese Komponenten miteinander verketten.

Endpunkt einer Pipeline ist der Serializer. Er sorgt dafür, dass die XML-Daten in ein Format umgewandelt werden, welches das Endgerät oder Programm versteht. Zusätzlich kann ein Serializer dafür sorgen, dass der korrekte MIME-Type (beispielsweise für einen Internet-Browser) gesetzt wird. Bei XML-Formaten, die nahe am Ausgangsformat liegen (etwa XHTML zu HTML), muss der Serializer relativ wenig leisten. Cocoon beinhaltet ebenso Komponenten, die es erlauben, aus dem XML-Format XSL-FO (Formatting Objects) Formate wie PDF oder Postscript zu erzeugen.

Eine Pipeline kann mehrere Verzweigungen haben. Dabei können Steuerungskomponenten, so genannte Selektoren, den Fluss innerhalb einer Pipeline beeinflussen. Durch die Verwendung eines Selektors, der auf bestimmte Parameter reagieren kann, lässt sich auch eine gewisse Ablauflogik innerhalb der Pipelines festlegen.

Neben den bisher beschriebenen Komponentenkategorien existieren auch Komponententypen, die je nach Aufgabe eine Rolle in der Erstellung der Applikation übernehmen können. So erlauben Reader beispielsweise, Bilder etwa als JPEG direkt durch Cocoon zu schleusen, ohne dass eine entsprechende Kopplung von Generator, Transformatoren und Serializer notwendig wäre.

top