http://www.comparat.de
HOME
http://www.comparat.com
INTERNATIONAL HOME
PROFIL BACKUP-SERVER INDIVIDUELLE SOFTWARE PROJEKTE IT-GLOSSAR JOBS IMPRESSUM AGB
WHITE PAPERS cplApp Framework
FACHARTIKEL Speicherverwaltung
mit pools

 



08.09.2008

White Paper: cpIApp

Manfred Rebentisch

June 18, 2006

Kurzbeschreibung

Dieses Dokument beschreibt das Internet Application Framework von COMPARAT, mit dem performante, sichere und ressourcenschonende Anwendungen für Internet oder Intranet entwickelt werden können.

cpIApp ist eine Bibliothek und ein Apache-Modul für die direkte Integration mit dem Apache Webserver der Apache-Foundation.

A COMPARAT Technical White Paper
Manfred Rebentisch
Juni 2005, Juni 2006

Inhalt

Urheber und Autor

Das Copyright zur Verbreitung dieses Dokuments liegt bei der

COMPARAT Software-Entwicklungs-GmbH
Prießstraße 16
23558 Lübeck
Telefon: 0451/4795660, Fax: 0451/4795662
E-Mail: info@comparat.de

Der Autor Manfred Rebentisch ist Geschäftsführer und Chef-Entwickler bei COMPARAT. Er ist unter mrebentisch@comparat.de direkt erreichbar.

Einleitung

Das Internet Application Framework cpIApp ist eine Entwicklung der COMPARAT Software-Entwicklungs-GmbH. Mit dem cpIApp können Software-Entwickler äußerst performante, effiziente und sichere Serveranwendungen für Internet-Applikationen erstellen.

cpIApp besteht aus zwei C-Bibliotheken und einem Modul für den Apache-Webserver. Eine Internet-Anwendung wird als Bibliothek erstellt und vom Apache-Modul eingebunden.

Mit cpIApp lassen sich Plattformen wie Wikis (z.B. http://de.wikipedia.org/), Community-Sites (z.B. http://www.xing.com), E-Shops und Spezialsysteme entwickeln. Auch einfache Anwendungen und Websites können damit entwickelt werden, zum Beispiel unsere eigene Website http://www.comparat.de (seit Juli 2005).

Vorteile und Besonderheiten

Das cpIApp ist vollständig in 'C' programmiert, mit einem C++-Interface für Web-Anwendungen. Entgegen dem Trend, PHP oder Java für Internet-Applikationen einzusetzen, wurde cpIApp bewußt auf folgende Leistungsmerkmale getrimmt:

  • Höchste Ausführungsgeschwindigkeit für die Request-Verarbeitung.
  • Minimaler Ressourcenverbrauch auf dem Server, damit tausend und mehr Anfragen pro Sekunde gleichzeitig bearbeitet werden können.
  • Höchste Sicherheit gegen Hackerangriffe und Bedienungsfehler.
  • Flexible Anpassung an heterogene IT-Landschaften (z.B. Integration von alten Legacy-Anwendungen).
  • Schnelle Entwicklung von Internet-Applikationen (vergleichbar mit Java oder PHP).
  • Unterstützung mehrsprachiger Anwendungen durch XML-Attribute für den Webdesigner, durch eine Sprachentext-Datenbank und einem C-Objekt zur Behandlung der Sprachvarianten im Quellcode.
  • Trennung von Webdesign und Technik.
  • Unterstützung aller Datenbank-Systeme durch ein einfaches Modulkonzept.
  • Schnelle und einfache Installation des Systems.

COMPARAT hat diese Ziele erreicht und kann hoch komplexe Geschäftsanwendungen mit diesem Framework implementieren.

In cpIApp ist ein automatisches Sessionmanagement integriert. Eine Session kann über ein Cookie identifiziert werden, aber mit einem Handgriff kann auch eine URL-basierte Session-Behandlung umgesetzt werden. Auf Wunsch kann hier restriktiv eingegriffen werden, um zum Beispiel die Zahl der Sessions pro Client-IP-Adresse zu begrenzen.

Auch eine Benutzer- und Rechteverwaltung ist bereits integriert. Benutzer können sich registrieren, anmelden und abhängig von persönlichen oder Gruppen-Rechten agieren.

cpIApp unterstützt auch AJaX (Asynchronous Javascript and XML, siehe http://xulplanet.com/references/objref/XMLHttpRequest.html). AJaX wird vom Browser eine http-Anfrage an den Server geschickt. Der Server, also unsere cpIApp-Anwendung, schickt Daten zurück (egal ob XML oder in anderer Form), die noch während der Formularbearbeitung durch den Benutzer sichtbar gemacht werden können. Für diese Verarbeitung von Anfragen gelten hohe Sicherheitsansprüche und eine andere Art der Ausgabe (aus Server-Sicht).

Der Quellcode steht unter der GPL und teilweise zusätzlich unter der Apache Lizenz. Er wird dem Kunden immer mitgeliefert. Der Kunde kann aber auch eine andere Lizenz erwerben.

Nachteile von cpIApp

cpIApp ist technisch eher mit serverseitigen Java-Programmen vergleichbar, weniger mit PHP. Auch Java-Programme müssen auf einem Server installiert werden. Das cpIApp-Apache-Modul kann mit jedem VirtualHost installiert werden. Jeder Host hat seinen eigenen Speicherbereich (shared memory). Das Modul muß vom Webmaster installiert werden und kann nicht einfach auf einem Multihostsystem (wo Kunden ihre Homepage lagern) von einem Kunden installiert werden. Das Modul muß zum Zielsystem passen, also muß ein Binary für die richtige Distribution vorliegen oder es muß aus den Quellen compiliert werden. Nach einer Installation oder Aktualisierung eines cpIApp-Moduls muß dem Apache-Webserver ein reload Befehl gegeben werden, damit die dynamischen Bibliotheken sowie die Sprachentexte und Templates neu geladen werden.

Die Software

Die Integration der Anwendung als Modul in den Apache-Server hat vor allem drei Vorteile:

  1. größtmögliche Ausführungsgeschwindigkeit,
  2. Nutzung der Sicherheit und
  3. Nutzung der großen Verbreitung des Apache-Servers.

Unsere C-Software nutzt Techniken des Apache-Servers für Sicherheit und Speicherverwaltung. So werden alle Templates und Sprachentexte in einem Shared-Memory Bereich verwaltet, der für alle Instanzen (Prozesse, Threads) einer cpIApp-Anwendung gemeinsam im Zugriff liegt. Wenn die Templates zum Beispiel 500 Kilobyte Shared-Memory benötigen, dann können tausend parallele Prozesse laufen und brauchen dennoch nur diese 500 Kilobyte. Je nach Anwendung benötigt eine Requestverarbeitung zwischen 10 und 100 Kilobyte zusätzlich, für einige Millisekunden. Bei 100 Kilobyte benötigen 1000 gleichzeitige Requests also lediglich 100 Megabyte im Speicher.

Die cpIApp-Module und Anwendungen werden über Variablen in den Apache-Konfigurationsdateien konfiguriert. Einmal eingerichtet, braucht nach einer größeren Änderung der Software nur ein reload durchgeführt werden.

Unsere C-Bibliotheken Std3000C und cpIApp sind keine der üblichen Bibliotheken. In Ihnen stecken fast zwanzig Jahre Programmier-Erfahrung. Das Wissen aus C++, Java, PHP, ObjectPascal, Eiffel und ObjectiveC mit ihren objektorientierten Konzepten sind in die Programmierung der Bibliotheken eingeflossen.

Die Std3000C und die cpIApp Bibliotheken verwenden eine Technik, die wir C-Objects oder C-Classes nennen. Damit haben wir Probleme isoliert und die zur Lösung benötigten Daten gekapselt. Strukturen werden zu Behältern für Daten und Methoden. In der C-Programmierung verlangt dies eine konsequente Einhaltung von Regeln und Standards.

Die berühmt-berüchtigen buffer overflows gibt es nicht mit diesen beiden Bibliotheken und auch nicht mit dem Apache-Modul. Auch andere Fehler dürften selten sein: das ganze Konzept ist mit der Maßgabe, ein fehlertolerantes Verhalten umzusetzen, entwickelt worden. Für Programmierer gibt es zahlreiche Vereinfachungen und Erleichterungen, mit deren Hilfe zusätzlich Fehler verhindert werden. Eine Analyse und Dokumentation gefundener Fehler hilft, zukünftige Fehler zu vermeiden.

Die cpIApp-Bibliothek enthält Techniken und Methoden, die in der C-Programmierung nicht üblich sind. So werden Templates (HTML, Scripte), die ineinander verschachtelt werden und Platzhalter oder zu übersetzende Sprachen-Texte beinhalten, nicht im Speicher hin und her kopiert. Sie bleiben stattdessen in ihrem Shared Memory Bereich und werden über verkettete Listen so verbunden, daß ein neuer zusammenhängender Text ausgegeben werden kann. Diese Methode alleine macht die Bibliothek für die Requestverabeitung enorm effizient - es gibt keine schnellere Methode.

Wir erleben täglich, wie schnell und einfach sich Anwendungsaufgaben implementieren lassen und das auch noch mit Spaß an der Arbeit.

Manfred Rebentisch 2006-06-18
COPYRIGHT BY COMPARAT SOFTWARE-ENTWICKLUNGS-GMBH, 2008