C++-Webframeworks in Übersicht: Als Tabelle

Standard

Bei meiner Suche nach geeigneten Webframeworks bin ich auf verschiedene Projekte gestoßen, die ich hier in einer kleinen Serie kurz vorstellen möchte. Hier eine tabellarische Übersicht, über die vier wichtigsten Projekte:

Projektname Wt (Witty) CppCMS Tntnet Treefrog
Projektstart 2009 2008 2005 2011
Abstraktionslevel Sehr hoch Mittel Mittel Sehr hoch
Aktive Entwickler >5 1 >1 >2
Code-Zeilen 285.620 1.839.480 260.388 51.335
Prepompiler Nein Ja Ja Ja
Abhängigkeiten
  • CMake
  • Boost-Lib
  • OpenSSL  (Opt.)
  • Pango (Opt.)
  • Boost-Lib
  • Python 2.x
  • CgiCC
  • libgcrypt
  • gettext
  • cxxtools
  • automake*
  • autoconf*
  • libtool*
  • postgresql-devel**
  • zlib-devel
  • openssl-devel
Qt
Lizenz
  • Open  Source
  • proprietär
  • Open Source
  • proprietär
OpenSource OpenSource
Datenbank-
unterstüzung
  • Firebird
  • SQLite
  • PostgreSQL
  • MySQL
  • SQLite
  • PostgreSQL
  • MySQL
  • SQLite
  • PostgreSQL
  • MySQL
  • Oracle
Über Qt:

  • MongoDB
  • SQLite
  • PostgreSQL
  • MySQL
Mailingliste Ja (sehr aktiv) Nein Ja Ja
Authentifikations-
methoden
  • Facebook
  • Google
  • E-mail-Token
  • SHA1
  • MD5
  • OAuth
  • Token
Extras E-mail-Versand
  • Serialisierung
    • XML
    • Json
    • CSV
  • Logging
  • Komplexes URL-Routing
  • REST
    • XML
    • Json
    • Binary
    • CSV
  • SOA
  • Validation
  • Mailer
  • Logging
  • Plugin
  • Image Manipulation
Pakete in
Distributionen
Ja Nein Ja Nein
Dokumentation Mittel,
viele Beispiele
Wenig Mittel,
viele Beispiele
Mittel
OS
  • Linux
  • Windows/Cygwin
  • MacOS
  • Android
  • Raspberry Pi
  • QNX
  • Solaris
  • Linux
  • Windows/Cygwin
  • MacOS
  • FreeBSD
  • Linux
  • UNIX-like OS
  • Linux
  • Windows
  • UNIX-like OS
  • MacOS

Erläuterungen
* Abhängigkeit wenn die Bibliothek selber übersetzt wird.
** Abhängigkeit optionaler Funktionen.


Creative Commons Lizenzvertrag

Advertisements

4 Gedanken zu “C++-Webframeworks in Übersicht: Als Tabelle

  1. Eine kleine Fehlerkorrektur:

    automake, autoconf und libtool werden für tntnet-Projekte empfohlen, sind aber weder für die Entwicklung noch für die Benutzung von tntnet nötig.

    Außerdem ist die komplette Datenbankanbindung (tntdb) in tntnet optional, also fällt auch postgresql weg.

    Dafür müsste cxxtools auf die entsprechende Abhängigkeitsliste.

    • Hallo Jonas!

      Danke für den Hinweis. Ich verstehe deine Argumentation. Ich habe jetzt noch eine Fußnote mit Erläuterungen hinzugefügt und den Hinweis auf cxxtools mit hin eingenommen.

      Die Autotools stehen in der Tabelle weil sie benötigt werden um sich das Tntnet-Framework selber zu übersetzen. Wenn man die Paket seiner Distribution verwendet(/verwenden kann), trifft das natürlich nicht zu. Ich ging aber von dem „Worst Case“ aus, das man sich das Framework aus den Sourcen selber bauen muss. Dafür braucht man dann die ganzen tools und libs.

      Das sich die Abhängigkeiten mit der Wahl der zu verwendeten DB ändert, habe ich jetzt vermerkt. Allerdings muss man beidem Kompilieren explizit ein Flag setzen, wenn man bestimmte oder alle Datenbanken nicht unterstützt haben will. Oracle muss man hingegen explizit einschalten. Es ist also in jedem Fall das Eine oder das Andere zu tun.

      Die Abhängigkeit zu cxxtools sehe, ich persönlich, er als philosophisch bis esoterische Frage. Für mich ist cxxtools und tntnet _ein_ Framework. Die grenze zwischen beiden Frameworks scheint mir ziemlich willkürlich. Die Ursprüngliche Idee war sicher, das man Basisfunktionen auch in Projekte verwenden können wollte, ohne den Overhead des Application-Server zu haben. Jetzt ist es aber so, das sich in den cxxtool-libs die SOA-Unterstüzung findet. Also quasi ein abgespeckter Application-Server, wenn man so will. Wenn ich jetzt – sagen wir mal – die Logging-Funktion aus cxxtools verwenden will, warum bekomme ich dann die SOA-Unterstüzung (cxxtools/json/rpcserver.h) „gratis“ dazu und den Webappication-Server nicht? Das scheint mir nicht schlüssig.

      Aber ich gebe dir in sofern recht, das man die cxxlools-lib zwingen installiert haben muss, um tntnet benutzen zu können. Ich habe es in die Tabelle aufgenommen.

      Viele Grüße

      Olaf

      • Danke für die schnelle Rückmeldung!

        Mit cxxtools ist das wirklich so eine Sache; alle die es kennen, kennen es wahrscheinlich nur als Bestandteil von tntnet und die es liegt auch mit auf tntnet.org.

        Allerdings hast du in einem Punkt unrecht: Um die Source-Tarballs von der Website zu übersetzen, sind nur Make, ein Compiler und die anderen Abhängigkeiten nötig. Die autotools braucht man ausschließlich, wenn man git master bauen oder den Quellcode verändern will.

      • Hallo Jonas!

        Das neue MVC-Konzept ist nur im „master“-Branch. Wann es da mal eine Release für geben wird, steht (noch) in den Sternen. Ich lehne mich jetzt mal ganz weit aus dem Fenster, und behaupte, ein Webframework ohne MVC-Support ist nicht Konkurrenz fähig. Das heißt, wer mit Tntnet „State of the Art“ arbeiten will, _muss_ sich die Lib aus dem master selber übersetzen.

        Aber auch dieser Punkt ist eine philosophisch bis esoterische Frage. Mir ist aber kein Webframework bekannt, das in den letzten Jahren herausgekommen wäre und kein MVC-Unterstützung hätte aber trotzendem eine nennenswerte Verbreitung gefunden hätte.

        Viele Grüße

        Olaf

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s