Immer mehr Desk­top­an­wen­dun­gen wandern ins Netz. In Form von Web-Ap­pli­ka­tio­nen stehen sie Nutzern über den Browser zur Verfügung. Klas­si­sche Bespiele sind Webmailer oder Brow­ser­games. Auch im Un­ter­neh­mens­kon­text hat sich Software-as-a-Service als Li­zenz­mo­dell etabliert. Es gibt Web-An­wen­dun­gen fürs Customer-Re­la­ti­onship-Ma­nage­ment, für Wa­ren­wirt­schaft, News­let­ter, Pro­jekt­pla­nung, Mit­ar­bei­ter-Zeit­er­fas­sung oder Fi­nanz­buch­hal­tung. Gerade kleine Un­ter­neh­men pro­fi­tie­ren dabei von be­darfs­ori­en­tier­ten Ab­rech­nungs­mo­del­len und einer zentralen Be­reit­stel­lung über das Internet. Diese reduziert die Kosten für Wartung und Ad­mi­nis­tra­ti­on und bietet durch Plattform- und Ge­rä­te­un­ab­hän­gig­keit ein Maximum an Fle­xi­bi­li­tät.

Bei der Ent­wick­lung von Web-An­wen­dun­gen greifen Pro­gram­mie­rer in der Regel auf so­ge­nann­te Web­frame­works zurück. Aber was ist ein Framework? Und was macht ein Framework speziell für Web-An­wen­dun­gen aus?

Web­frame­work – was ist das?

Unter einem Framework (deutsch: Rah­men­struk­tur) versteht man ein Pro­gramm­ge­rüst, das als Grundlage bei der Software-Ent­wick­lung zum Einsatz kommt. Möchte ein Ent­wick­ler eine neue Software schreiben, wäre es in­ef­fi­zi­ent, jedes Mal bei null zu beginnen. Für zahl­rei­che Stan­dard­funk­tio­nen in der Software-Ent­wick­lung exis­tie­ren bewährte Lö­sungs­vor­schlä­ge in Form von Programm-Codes. In der ob­jekt­ori­en­tier­ten Pro­gram­mie­rung kommen dafür meist Klassen zum Einsatz, die als Baupläne zur Ent­wick­lung von Software-Objekten her­an­ge­zo­gen werden. Ein Framework stellt meist eine Sammlung ver­schie­de­ner ko­ope­rie­ren­der Klassen dar und bestimmt somit die De­sign­grund­struk­tur jeder Software, die auf Basis des Frame­works ent­wi­ckelt wird. Dient ein Framework als Grund­ge­rüst für Web-An­wen­dun­gen, spricht man von einem Web-Ap­pli­ca­ti­on-Framework (kurz: Web­frame­work).

Als Grundlage für die Software-Ent­wick­lung sollten Web­frame­works einfache, klare Struk­tu­ren zur Verfügung stellen, die sich leicht warten lassen und Ent­wick­lern er­mög­li­chen, in kurzer Zeit lauf­fä­hi­ge Web­an­wen­dun­gen zu erstellen. Um diesen Anspruch zu erfüllen, berufen sich viele Web­frame­works auf drei grund­le­gen­de Design-Prin­zi­pi­en:

  • Don’t repeat yourself (DRY): Der Leitsatz Don’t repeat yourself zielt auf die Ver­mei­dung von Redundanz im Rahmen der Soft­ware­ent­wick­lung ab. Red­un­dan­te In­for­ma­tio­nen wie Code-Duplikate sind prin­zi­pi­ell ver­meid­bar und wirken sich negativ auf die Wartung der Software aus: Sollen red­un­dan­te Code­ab­schnit­te angepasst werden, müssen Än­de­run­gen an ver­schie­de­nen Stellen im Pro­gramm­code vor­ge­nom­men werden.
  • Keep it short and simple (KISS): Ein Problem, eine Lösung. Das ist das Grund­prin­zip des KISS-Pa­ra­dig­mas. Dieses ori­en­tiert sich am Prinzip der Par­si­mo­nie (Spar­sam­keits­prin­zip): Finden sich für einen Sach­ver­halt mehrere Lö­sungs­an­sät­ze, ist die Lösung zu wählen, die mit den wenigsten Annahmen und Variablen auskommt. Um ein Framework zu verwenden oder ein spe­zi­fi­sches Problem zu beheben, sollte möglichst wenig Code nötig sein.
  • Con­ven­ti­on over Con­fi­gu­ra­ti­on: Je mehr Kon­fi­gu­ra­ti­on, desto auf­wän­di­ger die Hand­ha­bung. Kon­ven­tio­nen hingegen bietet eine Mög­lich­keit, die Kom­ple­xi­tät zu re­du­zie­ren. Web­frame­works sollten daher bewährte Vor­ge­hens­wei­sen in Form von Stan­dard­ein­stel­lun­gen vorgeben und weitere Ein­stel­lungs­mög­lich­kei­ten optional anbieten

Werden diese Design-Prin­zi­pi­en be­rück­sich­tigt, bietet der Einsatz von Web­frame­works in der Software-Ent­wick­lung zahl­rei­che Vorteile. Die Vorgaben eines Frame­works setzen Ent­wick­lern jedoch auch Grenzen. Diese struk­tu­rel­len Ein­schrän­kun­gen werden mitunter als Nachteil gesehe.

Profi-Website in Sekunden dank KI.
  • Profi-Website in Sekunden dank KI
  • Aus tausenden Vorlagen auswählen
  • 30 Tage kostenlos testen

Vorteile von Web­frame­works

Der Einsatz von Web­frame­works ist durch eine Reduktion des Zeit- und Kos­ten­auf­wands bei der Software-Ent­wick­lung motiviert. Grundidee ist die Wie­der­ver­wen­dung von Codes. Diese bezieht sich vor allem auf Grund­funk­tio­na­li­tä­ten wie Da­ten­bank­ver­bin­dun­gen, Webseiten-Templates, Caching-Verfahren oder Si­cher­heits­funk­tio­nen, die von Frame­works als vor­ge­fer­tig­te Code­bau­stei­ne zur Verfügung gestellt werden. Damit be­schränkt sich der Ent­wick­lungs­auf­wand auf den spe­zi­fi­schen Pro­gramm­code einer neuen Web-Anwendung. Da die meisten Web-Frame­works als freie Software kostenlos angeboten werden, entstehen in der Regel keine An­schaf­fungs­kos­ten.

Darüber hinaus fördern Frame­works die Ge­ne­rie­rung sauberer Quell­codes, da Ent­wick­ler für Stan­dard­funk­tio­nen auf bewährte Bausteine zu­rück­grei­fen können. Die durch Frame­works zur Verfügung ge­stell­ten Pro­gramm­an­tei­le durch­lau­fen meist zahl­rei­che Ent­wick­lungs­zy­klen und werden kon­ti­nu­ier­lich optimiert. Dabei fungiert die Community als Tester und Mit­ent­wick­ler. Si­cher­heits­lü­cken neuer Kom­po­nen­ten werden bei großen Projekten rasch entdeckt und behoben. Ein Austausch von Anwendern und Ent­wick­lern erfolgt in der Regel in Projekt-Foren, die zum Teil durch Support-Teams moderiert werden.

Nachteile von Web­frame­works

Im Netz findet sich eine nahezu un­über­schau­ba­re Anzahl von Frame­works für die Web-Ent­wick­lung, die sich sowohl in grund­le­gen­den Ge­stal­tungs­prin­zi­pi­en als auch im Funk­ti­ons­spek­trum un­ter­schei­den. Ver­schie­de­ne Software-Projekte können somit den Einsatz un­ter­schied­li­cher Web­frame­works erfordern. Ent­wick­ler stehen vor dem Problem, das passende Rah­men­ge­rüst für das be­ab­sich­tig­te Vorhaben auswählen zu müssen. Schnell kommt es dabei zu Kom­pro­mis­sen, bei denen das be­ab­sich­tig­te Soft­ware­pro­jekt den Grenzen des Frame­works angepasst wird. Da Frame­works als Uni­ver­sal­lö­sun­gen entworfen werden, nutzen Ent­wick­ler in den sel­tens­ten Fällen alle Funk­tio­nen der vor­ge­ge­be­nen Struktur. Je nach Umfang des Frame­works enthält eine Anwendung daher mitunter mehr Code als nötig. Man spricht in diesem Fall von Code­bal­last.

Als nach­tei­lig wird zudem die Ab­hän­gig­keit gesehen, in die Ent­wick­ler zum je­wei­li­gen Web­frame­work, einem spe­zi­el­len Her­stel­ler oder zur Ent­wick­ler-Community geraten. In Ein­zel­fäl­len ist der Einsatz eines Frame­works mit be­stimm­ten Lizenz-Be­din­gun­gen verbunden. Zudem kann es zu Problemen kommen, wenn die Wei­ter­ent­wick­lung des Frame­works ein­ge­stellt wird. Da Ent­wick­ler sich mit dem Aufbau des je­wei­li­gen Pro­gramm­ge­rüsts und den Ver­wen­dungs­mög­lich­kei­ten vertraut machen müssen, ist zudem eine Ein­ar­bei­tungs­zeit er­for­der­lich, diese re­la­ti­viert sich jedoch durch die Zeit­er­spar­nis aufgrund vor­ge­fer­tig­ter Funk­tio­nen und Code­bau­stei­ne. Hier sehen Kritiker die Gefahr, dass Ba­sis­wis­sens verloren geht. Anwender, die aus­schließ­lich auf Grundlage von Frame­works pro­gram­mie­ren, setzen sich mög­li­cher­wei­se weniger intensiv mit den ver­wen­de­ten Pro­gram­mier­spra­chen aus­ein­an­der.

Da der Quellcode der meisten Web­frame­works frei zu­gäng­lich ist, kann sich prin­zi­pi­ell jeder mit diesem vertraut machen. Werden An­wen­dun­gen für den Un­ter­neh­mens­ein­satz auf Basis öf­fent­lich zu­gäng­li­cher Code­bau­stei­ne ent­wi­ckelt, sind diese für Hacker mög­li­cher­wei­se trans­pa­ren­ter als Apps, deren Quellcode nicht offen liegt.

Aufbau eines Web­frame­works

Wie Frame­works im All­ge­mei­nen werden auch Web-Ap­pli­ca­ti­on-Frame­works von Pro­gramm­bi­blio­the­ken (Libraries) und Web-De­ve­lo­p­ment-Tools ab­ge­grenzt. Während Bi­blio­the­ken lediglich einzelne Funk­tio­na­li­tä­ten zur Verfügung stellen, kann ein Framework als ein in­ter­ak­ti­ves Pro­gramm­ge­rüst für Stan­dard­ab­läu­fe be­trach­tet werden – quasi eine semi-voll­stän­di­ge Anwendung.

Statische und flexible Kom­po­nen­ten

Die zentralen Grund­kom­po­nen­ten eines Software-Frame­works stellen ko­ope­rie­ren­de Klassen mit zu­ge­ord­ne­ten Methoden dar. Dabei handelt es sich um Code-Blöcke, die die Ei­gen­schaf­ten von Software-Objekten und deren Ver­hal­tens­wei­sen be­schrei­ben. Einige dieser Kom­po­nen­ten sind statisch und somit un­ver­än­der­lich. Andere lassen sich durch den Anwender anpassen – bei­spiels­wei­se durch das Über­schrei­ben von Methoden. Dieser hat somit die Mög­lich­keit, das Pro­gramm­ge­rüst an eine spe­zi­fi­sche Auf­ga­ben­stel­lung an­zu­pas­sen. Für die flexiblen Kom­po­nen­ten eines Framewoks hat sich die Be­zeich­nung „Hot Spots“ etabliert. Die sta­ti­schen Anteile werden „Frozen Spots“ genannt.

Inversion of Control

Web­frame­works folgen in der Regel dem Konzept der Inversion of Control (IoC) (deutsch: Umkehr der Steuerung). Dieses lässt sich als eine Anwendung des so­ge­nann­ten Hollywood-Prinzips auf die ob­jekt­ori­en­tier­ten Pro­gram­mie­rung be­schrei­ben: „Don’t call us, we call you!“.

Ver­ein­facht aus­ge­drückt bedeutet IoC, dass die Ver­ant­wort­lich­keit für die Pro­gramm­aus­füh­rung nicht bei den einzelnen Kom­po­nen­ten liegt, die auf Basis des Frame­works ent­wi­ckelt und aus­ge­führt werden, sondern beim Framework selbst. Dieses übernimmt somit die Funktion eines Haupt­pro­gramms, das den Kon­troll­fluss ko­or­di­niert. Weitere Kom­po­nen­ten, die vom Anwender in das Framework im­ple­men­tiert und damit re­gis­triert werden, stehen diesem bei Bedarf zur Verfügung. Ver­glei­chen lässt sich dies mit dem klas­si­schen Ausgang eines Hollywood-Castings: „Wir wissen jetzt, wer du bist, und melden uns, wenn wir dich brauchen!“

Um diese zentrale Steue­rungs­funk­ti­on ausführen zu können, geben Web­frame­works eine spezielle Schnitt­stel­le vor, die von allen auf­bau­en­den Kom­po­nen­ten im­ple­men­tiert werden muss. Durch dieses Design-Prinzip ist das Framework jederzeit in der Lage, auf­bau­en­de Kom­po­nen­ten dazu zu bewegen, Callback-Methoden zu im­ple­men­tie­ren. Diese er­mög­li­chen es dem Framework, bei Bedarf In­for­ma­tio­nen in die Kom­po­nen­ten zu in­ji­zie­ren oder über Me­tho­den­auf­ru­fe ein be­stimm­tes Verhalten der aus­zu­lö­sen. Während Klassen und deren Ab­hän­gig­kei­ten bei klas­si­schen Ansätzen der Soft­ware­ent­wick­lung hart-codiert und damit bereits bei der Kom­pi­lie­rung fest­ge­legt werden, er­mög­licht das Konzept Inversion of Control einer Software, Objekte dynamisch während der Laufzeit zu erzeugen.

IoC hat in der Software-Ent­wick­lung den Status eines all­ge­mei­nen Ge­stal­tungs­kon­zepts. Zur Anwendung kommt dieses durch Design Patterns wie De­pen­den­cy Injection (DI) und De­pen­den­cy Lookup.

Trennung von Da­ten­mo­dell, Prä­sen­ta­ti­on und Pro­gramm­steue­rung

Die Mehrheit aller Web-Ap­pli­ca­ti­on-Frame­works basiert auf einem Ar­chi­tek­tur­mus­ter, das Model-View-Con­trol­ler (MVC) genannt wird. Dieses zielt auf eine strikte Trennung von An­wen­dungs­lo­gik und Prä­sen­ta­ti­ons­schicht ab und teilt Software bei der Ent­wick­lung in die drei Bereiche Model (Da­ten­mo­dell), View (Prä­sen­ta­ti­on) und Con­trol­ler (Pro­gramm­steue­rung) ein.

  • Da­ten­mo­dell: Das Model ist der Teil­be­reich eines Frame­works, der die dar­zu­stel­len­den Daten sowie die An­wen­dungs­lo­gik und Regeln enthält. Der Da­ten­ab­ruf und Än­de­rungs­wün­sche werden über dafür vor­ge­se­he­ne Methoden ab­ge­wi­ckelt.
  • Prä­sen­ta­ti­on: Die grund­le­gen­de Aufgabe des Views ist die Dar­stel­lung der vom Model be­reit­ge­stell­ten Daten. Dazu fragt der View den Zustand des Models über Methoden ab und wird von diesem über Än­de­run­gen in­for­miert. Eine weitere Aufgabe des Views ist es, Be­nut­zer­ein­ga­ben (Tas­ta­tur­an­schlä­ge, Maus­klicks) ent­ge­gen­zu­neh­men und an den Con­trol­ler wei­ter­zu­lei­ten.
  • Pro­gramm­steue­rung: Der Con­trol­ler fungiert als Schnitt­stel­le zwischen Model und View. Dazu verwaltet er einen oder mehrere Views, wertet Be­nut­zer­ein­ga­ben aus und reagiert ent­spre­chend – zum Beispiel indem Daten an das Model wei­ter­ge­ge­ben oder Än­de­run­gen am View ver­an­lasst werden.

Ziel des MVC-Ar­chi­tek­tur­mus­ters ist ein flexibler Pro­gramm­ent­wurf. Die Trennung von An­wen­dungs­lo­gik und Prä­sen­ta­ti­ons­schicht soll spätere Än­de­run­gen, Er­wei­te­run­gen sowie die Wie­der­ver­wen­dung einzelner Kom­po­nen­ten er­leich­tern. So reduziert sich bei­spiels­wei­se der Pro­gram­mier­auf­wand, um Software an ver­schie­de­ne Platt­for­men (Windows, Mac, Linux) oder für den Einsatz als Web-Anwendung an­zu­pas­sen, da lediglich Con­trol­ler und View ent­spre­chend angepasst werden müssen.

In Form von JSP(Java Server Pages)-Model-2 kommt ein an MVC an­ge­lehn­tes Ent­wurfs­mus­ter auch bei ja­va­ba­sier­ten Web­frame­works zum Einsatz. Dabei ent­spricht eine JSP-Seite dem View, ein Servlet dem Con­trol­ler und eine Java Bean dem Model.

Klas­si­fi­zie­rung von Web­frame­works

Der Markt für Web-An­wen­dun­gen ist viel­fäl­lig. Apps, die Nutzern über den Browser zur Verfügung stehen, un­ter­schei­den sich je nach Ein­satz­be­reich und Funk­ti­ons­spek­trum nicht nur in Größe und Er­schei­nungs­bild, sondern auch grund­le­gend im Soft­ware­de­sign. Grund dafür ist die Vielfalt ver­füg­ba­rer Web-Frame­works, die sich auf un­ter­schied­li­che Tech­no­lo­gien stützen und ver­schie­de­ne Ansätze im Software-Design verfolgen. Ge­gen­über­stel­len lassen sich Single- und Multi-Page-Ansätze, ser­ver­zen­tri­sche und cli­ent­zen­tri­sche Ansätze sowie Web­frame­works, die ak­ti­ons­ba­siert oder kom­po­nen­ten­ba­siert arbeiten.

Single-Page- und Multi-Page-Ansätze

Multi-Page-An­wen­dun­gen bestehen aus mehreren HTML-Seiten, die in der Regel durch die Eingabe des je­wei­li­gen URL im Browser geöffnet werden und durch Hy­per­links mit­ein­an­der verbunden sind. Die Be­nut­zer­ober­flä­che einer Single-Page-Anwendung hingegen besteht lediglich aus einer HTML-Seite, auf der sämtliche Be­nut­zer­ein­ga­ben erfolgen. Diese kann durch Panels, Reiter oder Re­gis­trier­kar­ten ge­glie­dert sein. Der URL einer Single-Page-Anwendung ändert sich im Rahmen der Na­vi­ga­ti­on nicht.

Ser­ver­zen­tri­sche und cli­ent­zen­tri­sche Web­frame­works

Das Pro­gram­mier­mo­dell klas­si­scher Web-Anwendung ent­spricht dem des World Wide Web, dessen Ar­chi­tek­tur durch das Hypertext Transfer Protocol (HTTP) geprägt ist. Wird eine Web-Anwendung von einem Nutzer auf­ge­ru­fen, sind in jedem Fall ein oder mehrere Server sowie ein Cli­ent­pro­gramm, in der Regel ein Web­brow­ser, in­vol­viert. Je nachdem, wie die Kom­mu­ni­ka­ti­on zwischen Server und Client gestaltet ist, spricht man von ser­ver­zen­trier­ten oder cli­ent­zen­trier­ten An­wen­dun­gen.

  • Cli­ent­zen­trisch: Wird beim Start einer Anwendung die gesamte HTML-Be­nut­zer­ober­flä­che inklusive An­wen­dungs­lo­gik in den Client geladen, spricht man von cli­ent­zen­tri­schen An­wen­dun­gen. Än­de­run­gen an der Ober­flä­che aufgrund von Be­nut­zer­ein­ga­ben werden in diesem Fall durch cli­ent­sei­ti­ge Pro­gram­mier­spra­chen wie Ja­va­Script umgesetzt. Ein solcher Design-Ansatz empfiehlt sich für Apps, bei denen Anwender über einen längeren Zeitraum hinweg in derselben Ansicht arbeiten, da lediglich die auf der Be­nut­zer­ober­flä­che dar­ge­stell­ten Daten vom Server nach­ge­la­den werden. Der cli­ent­sei­ti­ge Ansatz kommt in erster Linie bei der Ent­wick­lung von Single-Page-Apps zum Einsatz und wird von Ja­va­Script-Frame­works wie AngularJS oder EmberJS verfolgt.
  • Ser­ver­zen­trisch: Bei ser­ver­zen­tri­schen An­wen­dun­gen verbleibt die An­wen­dungs­lo­gik auf dem Server, der die Be­nut­zer­ober­flä­che erstellt und an Clients zur Dar­stel­lung aus­lie­fert. Für Än­de­run­gen an der Be­nut­zer­ober­flä­che stehen somit ser­ver­sei­ti­ge Pro­gram­mier­spra­chen zur Verfügung und die Ent­wick­lung ist von cli­ent­sei­ti­gen Un­si­cher­hei­ten weit­ge­hend un­ab­hän­gig. Dieser Ansatz kommt in der Regel bei Multi-Page-Apps zum Einsatz, bei denen die ver­schie­de­nen Sei­ten­an­sich­ten bei Bedarf vom Server abgerufen werden. Ein solches Software-Design ist zwar mit längeren La­de­zei­ten verbunden, reduziert aber den Re­chen­auf­wand auf dem Cli­ent­ge­rät. Bei manchen Apps wird eine Aus­la­ge­rung der Steue­rungs­lo­gik aus Si­cher­heits­grün­den vermieden. Eine Umsetzung des ser­ver­zen­tri­schen Ansatzes findet sich bei­spiel­wei­se bei den Frame­works Django, Zend und Ruby on Rails.

Ein ser­ver­zen­tri­scher Pro­gram­mier­an­satz findet sich vor allem bei Frame­works, die zur Er­stel­lung klas­si­scher Web­an­wen­dun­gen mit Multi-Page-Struktur und klas­si­scher HTML-Ober­flä­che ent­wi­ckelt wurden. Lediglich die Ober­flä­che wird in der Web­an­wen­dung dar­ge­stellt und nutzt in der Regel die Browser-Na­vi­ga­ti­on. Web-Apps dieser Art lassen sich un­ab­hän­gig von ver­wen­de­ten Be­triebs­sys­tem oder Web­brow­ser ausführen. Die Steue­rungs­lo­gik wird über die HTTP-typische Request-/Response-Kom­mu­ni­ka­ti­on vom Server ver­ar­bei­tet. Cli­ent­zen­tri­sche Web-An­wen­dun­gen werden mitunter auch als Rich Clients oder Rich Internet Ap­pli­ca­ti­ons (RIA) be­zeich­net. An­wen­dun­gen dieser Art im­ple­men­tie­ren die Be­nut­zer­ober­flä­che inklusive An­wen­dungs­lo­gik im Client. Diese wird beim Start in der Regel komplett geladen. Anders als bei klas­si­schen Web-An­wen­dun­gen lassen sich mit einem cli­ent­zen­tri­schen Ansatz auch Ei­gen­schaf­ten wie Drag&Drop-Steuerung, Off­lin­ever­füg­bar­keit und Fest­plat­ten­zu­griff umsetzen, die eher von Desktop-An­wen­dun­gen bekannt sind.

Ak­ti­ons­ba­sier­te vs. kom­po­nen­ten­ba­sier­te Web­frame­works

Auf der Ebene der An­wen­dungs­steue­rung lassen sich Web­frame­works in zwei Klassen einteilen. Während ak­ti­ons­ba­sier­te (action-based) Web­frame­works das HTTP-bedingte Request-Response-Muster kon­se­quent abbilden, wird dieses bei kom­po­nen­ten­ba­sier­ten (component-based) Web­frame­works abs­tra­hiert. Ak­ti­ons­ba­sier­te Web­frame­works: Bei ak­ti­ons­ba­sier­ten Web­frame­works dient der Con­trol­ler als eine zentrale Instanz, die Cli­en­tan­fra­gen ent­ge­gen­nimmt, validiert und eine dazu passende Aktion aufruft. Für jede mögliche Aktion muss vom App-Ent­wick­ler im Vorfeld ein Software-Objekt erstellt werden, das die ent­spre­chen­de An­wen­dungs­lo­gik enthält. Dieses lässt sich in der Regel von abs­trak­ten Klassen ableiten. Wurde die Aktion ab­ge­ar­bei­tet, ak­tua­li­siert der Con­trol­ler das Da­ten­mo­dell und leitet das Ergebnis an den View weiter, der sei­ner­seits die Antwort erstellt und an den Client zu­rück­schickt. Ak­ti­ons­ba­sier­te Web­frame­works lehnen sich stark an das MVC-Muster an und werden aufgrund der strikten Umsetzung des Request-Response-Schemas auch als request-based be­zeich­net. Klas­si­sche Vertreter sind:

Da die möglichen Aktionen eines ak­ti­ons­ba­sier­ten Web­frame­works vom App-Ent­wick­ler im Detail selbst definiert werden, spricht man von einem White-Box-Ansatz. Dieser bietet Ent­wick­lern große Frei­hei­ten, erfordert jedoch ein tieferes Ver­ständ­nis des je­wei­li­gen Web­frame­works, da Ent­wick­ler für die Er­stel­lung von HTML, CSS und Ja­va­Script selbst ver­ant­wort­lich sind. Kom­po­nen­ten­ba­sier­te Web­frame­works: Anders als beim ak­ti­ons­ge­steu­er­ten Ansatz abs­tra­hie­ren kom­po­nen­ten­ge­steu­er­te Web­frame­works vom HTTP-bedingten Request-Response-Muster, indem die Be­nut­zer­ober­flä­che einer Web-Anwendung als Sammlung von Kom­po­nen­ten be­trach­tet wird. Für jede dieser Kom­po­nen­ten, die ser­ver­sei­tig mit Software-Objekten verknüpft sind, werden während der Ent­wick­lung der Web­an­wen­dung bestimmte Re­ak­tio­nen definiert. Diese folgen auf Er­eig­nis­se, die durch eine Be­nut­zer­inter­ak­ti­on mit der Kom­po­nen­te ausgelöst werden. Man spricht daher auch von er­eig­nis­ge­steu­er­ten Web­frame­woks. Klas­si­sche Vertreter sind:

Die Grundidee hinter dem kom­po­nen­ten­ba­sier­ten Ansatz ist, verwandte Aktionen zu grup­pie­ren. Eine Kom­po­nen­te Ac­count­Con­trol­ler re­prä­sen­tiert bei­spiels­wei­se Aktionen wie login, logout oder getA­c­count. Ein Software-Objekt kann somit für mehrere Aktionen zuständig sein. Kom­po­nen­ten­ba­sier­te Web­frame­works bieten in der Regel eine große Auswahl wie­der­ver­wend­ba­rer Kom­po­nen­ten, die die Details des zu­grun­de­lie­gen­den Request-Response-Schemas vor dem App-Ent­wick­ler verbergen. Man spricht in diesem Zu­sam­men­hang von einer Black-Box. Web­frame­works dieser Art bieten sich somit für Ent­wick­ler an, die sich in erster Linie auf vor­de­fi­nier­te Kom­po­nen­ten stützen möchten. Wer sich mehr Frei­hei­ten in Bezug auf HTTP, HTML, CSS und Ja­va­Scripts wünscht, ist bei einem ak­ti­ons­ba­sier­ten Web­frame­work besser auf­ge­ho­ben.

Auswahl eines Web­frame­works

Da Frame­works einen großen Einfluss auf Funk­tio­nen und Ge­stal­tungs­mög­lich­kei­ten von Web-Anwendung und den Workflow während der Ent­wick­lung haben, beginnt der Ar­beits­pro­zess in der Regel bereits bei der Auswahl des ge­eig­ne­ten Pro­gramm­ge­rüsts. Dabei sollten zum einen das geplante Software-Vorhaben als auch bereits erworbene Vor­kennt­nis­se be­rück­sich­tigt werden.

Zentrale Fragen beziehen sich auf die Art der Anwendung und die ge­wünsch­te Ar­chi­tek­tur (ser­ver­zen­trisch, cli­ent­zen­trisch). Beide Aspekte haben direkte Aus­wir­kun­gen auf Bedienung und Nut­zer­freund­lich­keit einer Web-App haben.

Auch bereits vor­han­de­ne Sprach­kennt­nis­se und die Ver­füg­bar­keit der be­nö­tig­ten In­fra­struk­tur stellen einen Aus­gangs­punkt für die Suche nach dem ge­eig­ne­ten Web­frame­work dar. Ins­be­son­de­re für weit­ver­brei­te­te Pro­gram­mier­spra­chen wie PHP (z.B. Zend, Symfony, CakePHP oder Cod­e­Ig­ni­ter), Java (z.B. Ja­va­Ser­ver Faces oder Apache Wicket) oder Python (z.B. Django) gibt es eine große Auswahl gut do­ku­men­tier­ter Web­frame­works. Die Po­pu­la­ri­tät von Ruby in der Web-Ent­wick­lung ist vor allem auf das beliebte Web­frame­work Ruby on Rails zu­rück­zu­füh­ren. Cli­ent­zen­tri­sche Web­frame­works stützen sich in der Regel auf die Skript­spra­che Ja­va­Script.

Ent­wick­ler, die in der Ver­gan­gen­heit in erster Linie Desktop-An­wen­dun­gen pro­gram­miert haben, finden sich oft schwerer in das am Request-Response-Schema ori­en­tier­te Pro­gram­mier­mo­dell ak­ti­ons­ba­sier­ter Frame­works ein als klas­si­sche Web-Ent­wick­ler. In diesem Fall kann ein kom­po­nen­ten­ba­sier­tes Web­frame­work den Einstieg er­leich­tern.

Zum Hauptmenü