• Wer ist dieser “Framework” und warum kann der so viel?

    Framework, Framework, Framework. Wenn diese 3 Worte, die übrigens dieselben sind (ha, da war der Trick), Verwirrung bei Ihnen auslösen –> oben rechts kann man den Browser schließen - oder aber Sie lesen das hier trotzdem und protzen morgen bei Ihren Arbeitskollegen mit dem neu erworbenen Wissen.

    Vorab: In diesem Artikel wird auf das Schema von Application Frameworks eingegangen.

    Es ist zwar keine Allerweltsfrage, aber es ist doch interessant zu wissen mit welchen Begriffen man eigentlich um sich haut, wenn man sie benutzt. Häufige Antworten nach dem Sinn und Nutzen sind eigentlich:

    • mehr Effizienz
    • erspart doppelten Code
    • hab ich selber gemacht (meiner Meinung nach die schlechteste Aussage, aber wem’s gefällt)
    • erleichtert Code-Verständnis (definitiv)
    Die Welt der Frameworks ist vielfältig

    Die Welt der Frameworks ist vielfältig

    Ok, soweit so gut. Framework bedeutet übersetzt eigentlich Rahmenwerk oder auch Rahmenstruktur und ist eine, meist projektübergreifende, Codestruktur, die sich permanent durch Applikationen zieht, dazu später mehr. Aber nur weil Ihnen jemand erzählt, dass seine tolle Funktionssammlung ein Framework ist, muss man noch lange nicht juhuu schreien und an der Decke kleben, denn hier wird immernoch unterschieden zwischen Library (Bibliothek) und Framework.

    Zum Mitschreiben:

    Wer für alles eine getrennte Klasse hat und eine Sammlung von Funktionen, der hat eine Library (Wikipedia nennt das übrigen Class-Framework). Das ist u.U. nicht minder funktionsvielfältig, aber eben eine Library und kein Framework.
    Und selbst dann muss man noch weiter differenzieren. Eine Library zeichnet sich nämlich dadurch aus, dass sie einen bestimmten Zweck verfolgt, z.B. Bildbearbeitung, Datenbankverbindungen / Controling, PDF-Generierung, usw. Man hat also mehrere, verschiedene Libraries, die dann später die Applikation / Website - Programmierung wesentlich verbessern und erleichtern.

    Ok, ok, es brennt auf den Fingern: was ist nun ein Framework? Mehr noch als Code? Ist es der Gandalf unter den Bits und Bytes? Nun ja, nicht ganz.

    Ein Framework zeichnet sich in erster Linie dadurch aus, dass es das Programmieren erleichtert / effizienter macht, durch weniger Eigencode. So ist eine Spiele-Engine im Prinzip auch ein Framework. Der Programmierer hat beim Spiel ein Rahmenwerk, das ihm sehr viel, aber eben nicht alle Arbeit abnimmt - er hat sich auf das Wesentliche zu konzentrieren. Der Vorteil eines Frameworks liegt dabei auch schon klar auf der Hand: Eine Änderung in der Engine (=Framework) wirkt sich auf das ganze damit verknüpfte Projekt aus, das macht es leichter Updates einzuspielen.
    Zusammengefasst könnte man sagen, dass ein Framework eine starke Basis, einen Grund bildet, auf dem man aufbauen kann, aber nicht muss. Ein weiterer klarer Vorteil stellt sich heraus, wenn man davon ausgeht, dass Person A und Person B zwar verschiedene Programmstile haben, sie aber beide das Framework Z verwenden. Je größer die Bindung an das Framework, desto leichter wird der Austausch zw. A und B.

    Viel wichtiger ist aber, was es programmiertechnisch gesehen als solches Framework auszeichnet, denn wie oben bereits beschrieben, wird vieles fälschlicherweise mit diesem Label versehen,

    Graphics Schemata of a Framework

    Ein bildlicher Erklärungsversuch eines Frameworks

    abgestempelt und so in die Ladentheke gestellt. Es gibt, genau wie auch beim Begriff Web 2.0, keine klare Definition des Begriffes Framework. Aus diesem Grund habe ich einfach ein schematisches Bild erstellt (siehe Links).

    Das Hauptmerkmal bildet der Kern (CORE). Er darf auch ruhig ein paar hundert Zeilen lang sein (keine Grundebedingung) und steuert alles was mit dem Framework zu tun hat. Man muss unterscheiden zwischen dem echten Kern und den Kernsystemen (core systems).

    Der echte Kern beinhaltet alle Grundfunktionen und Grundeinstellungen, wie z.B. die Auslastung, die Kontrolle der Organe / Subkerne, die Konfigurationseinstellungen. Das kann man sich ausgedrückt in PHP ungefähr so vorstellen:

    static class frameworkCore{
        static public function init($params){
         //initiiert das ganze System lädt Grundeinstellungen
         //oder Einstellungen die als Parameter übergeben werden
        }
     
        static private function running_processes(){};
        static protected function used_memory(){};
        static protected function is_running($process_name);
        static public function set_current_workspace($space){};
        /** usw. **/
    }

    Die Subkerne eines Frameworks, also die Kernsysteme sind extrem eng mit dem Kern verknüpft. Sie werden vom Kern geladen und eingebunden. Ohne die Subkerne kann der Kern nicht richtig arbeiten. Bei der Initiierung (beim Start) des Frameworks wird also die im Bild gezeigte komplette obere Seite geladen (Core + Core Systems). Die Module werden mit dem Start des Frameworks nicht mitgeladen.

    Ist der Ladevorgang geglückt, so kann der User bzw. der Programmierer nun durch den Subkern Loader die vorhandenen Module laden lassen. Diese Module kommunizieren normalerweise nicht direkt mit dem Kern sondern meist mit seinen Subsystemen wie z.B. dem Logger, um auftretende Fehler nachzuverfolgen. Dadurch, dass genau ein System mit allen Modulen kommunizieren kann, kann Modul A von den Infos von Modul B profitieren, ohne, dass diese direkt verknüpft sein müssen. Das war es auch schon, was die groben Programmstrukturen eines Frameworks angeht.

    Heutzutage gibt es eine Menge Frameworks, von JavaScript über PHP, bis Ruby. Für jeden ist etwas dabei. Am schönsten ist natürlich immernoch ein eigenes Framework auf hohem Niveau, es kostet aber auch sehr viel Zeit.

    Hier eine kleine Liste von modernen Frameworks:

Kommentare

  • Mario schrieb am 02. August 2009 12:39 um 12:39

    Ein sehr schön geschriebener Artikel. sowohl vom inhaltlichen, als auch vom suchmaschinenoptimierten Aspekt her : )

  • admin schrieb am 04. August 2009 19:54 um 19:54

    @Mario:

    Danke. SEO war natürlich ein wichtiger Aspekt, aber hier zählt noch viel mehr die Verlinkung, die natürlich schwer zu brechen ist ;).


Eine Antwort hinterlassen