Ein Web-Framework ( WF ), Web Application Framework ( WAF ) oder Webentwicklungs-Framework ist ein Software-Framework , das die Entwicklung von Webanwendungen wie Webdiensten, Webressourcen und Web-APIs unterstützt . Web-Frameworks bieten eine standardisierte Methode zum Erstellen und Bereitstellen von Webanwendungen im World Wide Web . Sie zielen darauf ab, den Aufwand gängiger Webentwicklungsaktivitäten zu automatisieren . Beispielsweise stellen viele Web-Frameworks Bibliotheken für den Datenbankzugriff , Template -Frameworks und Session -Management bereit und fördern häufig die Wiederverwendung von Code . [ 1 ] Obwohl sie oft auf die Entwicklung dynamischer Websites ausgerichtet sind , eignen sie sich auch für statische Websites . [ 2 ]

Geschichte

Da das Design des World Wide Web nicht von Natur aus dynamisch war, bestanden frühe Hypertext-Inhalte aus handcodierten HTML- Textdateien, die auf Webservern veröffentlicht wurden . Jegliche Änderungen an veröffentlichten Seiten mussten vom jeweiligen Autor vorgenommen werden. 1993 wurde der Common Gateway Interface (CGI)-Standard eingeführt, um externe Anwendungen mit Webservern zu verbinden und so dynamische Webseiten zu ermöglichen , die Benutzereingaben widerspiegelten. [ 3 ]

Ursprüngliche Implementierungen der CGI-Schnittstelle hatten jedoch typischerweise negative Auswirkungen auf die Serverlast, da jede Anfrage einen separaten Prozess startete . [ 4 ] Neuere Implementierungen nutzen unter anderem persistente Prozesse, um den Ressourcenverbrauch des Servers zu reduzieren und eine allgemeine Leistungssteigerung zu erzielen.

Im Jahr 1995 entstanden erstmals vollständig integrierte Server-/Sprachentwicklungsumgebungen und neue webspezifische Sprachen wurden eingeführt, wie zum Beispiel ColdFusion , PHP und Active Server Pages .

Obwohl die überwiegende Mehrheit der Sprachen zur Erstellung dynamischer Webseiten über Bibliotheken verfügen , die bei gängigen Aufgaben helfen, benötigen Webanwendungen oft spezielle Bibliotheken für bestimmte Aufgaben, wie zum Beispiel die Erstellung von HTML (z. B. Jakarta Faces ).

In den späten 1990er Jahren kamen ausgereifte, sogenannte „Full-Stack“-Frameworks auf, die oft mehrere für die Webentwicklung nützliche Bibliotheken zu einem einzigen, zusammenhängenden Software-Stack für Webentwickler vereinten.

Arten von Framework-Architekturen

Die meisten Web-Frameworks basieren auf dem Model-View-Controller (MVC) -Muster .

Model–View–Controller (MVC)

Viele Frameworks folgen dem MVC -Architekturmuster , um das Datenmodell in Geschäftsregeln (den „Controller“) und die Benutzeroberfläche (die „View“) zu trennen. Dies gilt allgemein als bewährte Vorgehensweise, da es den Code modularisiert , die Wiederverwendung von Code fördert und die Anwendung mehrerer Schnittstellen ermöglicht. In Webanwendungen erlaubt dies die Darstellung unterschiedlicher Ansichten, beispielsweise die Auslieferung verschiedener Webseiten für mobile und Desktop-Browser oder die Bereitstellung maschinenlesbarer Webservice- Schnittstellen.

Push-basiert vs. Pull-basiert

Die meisten MVC-Frameworks folgen einer Push-basierten Architektur, auch „aktionsbasiert“ genannt. Diese Frameworks verwenden Aktionen, die die erforderliche Verarbeitung durchführen und die Daten anschließend an die Ansichtsschicht „pushen“, um die Ergebnisse darzustellen. [ 5 ] Eine Alternative dazu ist die Pull-basierte Architektur, die auch als „komponentenbasiert“ bezeichnet wird. Diese Frameworks beginnen mit der Ansichtsschicht, die dann bei Bedarf Ergebnisse von mehreren Controllern „pullen“ kann. In dieser Architektur können mehrere Controller an einer einzigen Ansicht beteiligt sein.

Dreistufige Organisation

In der Drei-Schichten-Architektur sind Anwendungen in drei physische Schichten gegliedert: Client, Anwendung und Datenbank. [ 6 ] [ 7 ] [ 8 ] [ 9 ] Die Datenbank ist üblicherweise ein relationales Datenbankmanagementsystem (RDBMS) . Die Anwendung enthält die Geschäftslogik, läuft auf einem Server und kommuniziert über HTTP mit dem Client . [ 10 ] Bei Webanwendungen ist der Client ein Webbrowser, der vom Anwendungsserver generierten HTML-Code ausführt. [ 11 ] [ 12 ] Der Begriff sollte nicht mit dem MVC-Modell verwechselt werden. Im Gegensatz zur Drei-Schichten-Architektur gilt es hier als Best Practice, die Geschäftslogik vom Controller, der „mittleren Schicht“, fernzuhalten. [ 13 ] [ 14 ]

Framework-Anwendungen

Frameworks dienen der Unterstützung der Entwicklung von Internetanwendungen auf Basis einer einzigen Programmiersprache. Ihr Fokus reicht von universellen Werkzeugen wie Zend Framework und Ruby on Rails, die die Möglichkeiten einer bestimmten Sprache erweitern, bis hin zu nativen, programmierbaren Paketen, die um spezifische Benutzeranwendungen herum entwickelt wurden, wie beispielsweise Content-Management-Systeme (CMS), einige mobile Entwicklungswerkzeuge und einige Portalwerkzeuge. [ 15 ]

Allgemeine Website-Frameworks

Web-Frameworks müssen gemäß den Architekturregeln von Browsern und Protokollen wie HTTP , das zustandslos ist , funktionieren. Webseiten werden von einem Server bereitgestellt und können dann vom Browser mithilfe von JavaScript modifiziert werden . Beide Ansätze haben ihre Vor- und Nachteile.

Serverseitige Seitenänderungen erfordern typischerweise ein Neuladen der Seite, ermöglichen aber die Verwendung beliebiger Programmiersprachen und die Nutzung höherer Rechenleistung. Clientseitige Änderungen erlauben die Aktualisierung der Seite in kleinen Abschnitten, was sich wie eine Desktop-Anwendung anfühlt, sind jedoch auf JavaScript beschränkt und werden im Browser des Nutzers ausgeführt, dessen Rechenleistung möglicherweise begrenzt ist. Üblicherweise wird eine Kombination beider Ansätze verwendet. [ 16 ] Anwendungen, die intensiv JavaScript nutzen und nur Teile der Seite aktualisieren, werden als Single-Page-Anwendungen bezeichnet und verwenden typischerweise ein clientseitiges JavaScript-Webframework zur Codeorganisation.

Serverseitig

Clientseitig

Beispiele hierfür sind Backbone.js , AngularJS , Angular , Ember.js , ReactJS , jQuery UI , Svelte und Vue.js. [ 17 ]

Fähigkeiten und Kompromisse in modernen Rahmenwerken

JavaScript-basierte Web-Frameworks wie React und Vue bieten umfangreiche Funktionen, bringen aber auch Nachteile mit sich. Diese Frameworks erweitern oder verbessern häufig Funktionen nativer Webtechnologien, wie Routing, komponentenbasierte Entwicklung und Zustandsverwaltung. Obwohl sich native Webstandards, darunter Web Components, moderne JavaScript-APIs wie Fetch und ES Modules sowie Browserfunktionen wie Shadow DOM, deutlich weiterentwickelt haben, sind Frameworks nach wie vor weit verbreitet. Sie steigern die Produktivität von Entwicklern, bieten strukturierte Muster für große Anwendungen, vereinfachen die Behandlung von Sonderfällen und stellen Werkzeuge zur Leistungsoptimierung bereit. [ 18 ] [ 19 ] [ 20 ]

Frameworks können Abstraktionsschichten einführen, die zu Leistungseinbußen, größeren Bundle-Größen und erhöhter Komplexität führen können. Moderne Frameworks wie React 18 und Vue 3 begegnen diesen Herausforderungen mit Funktionen wie Concurrent Rendering, Tree-Shaking und Selective Hydration. Obwohl diese Fortschritte die Rendering-Effizienz und das Ressourcenmanagement verbessern, hängen ihre Vorteile vom jeweiligen Anwendungs- und Implementierungskontext ab. Leichtgewichtige Frameworks wie Svelte und Preact verfolgen unterschiedliche Architekturansätze: Svelte verzichtet vollständig auf das virtuelle DOM und kompiliert Komponenten stattdessen zu effizientem JavaScript-Code, während Preact eine minimale, kompatible Alternative zu React bietet. Die Wahl des Frameworks hängt von den Anforderungen der Anwendung ab, einschließlich der Expertise des Teams, der Leistungsziele und der Entwicklungsprioritäten. [ 18 ] [ 19 ] [ 20 ]

Eine neuere Kategorie von Web-Frameworks, darunter enhance.dev, Astro und Fresh, nutzt native Webstandards und minimiert gleichzeitig Abstraktionen und Entwicklungswerkzeuge. [ 21 ] [ 22 ] [ 23 ] Diese Lösungen legen Wert auf progressive Verbesserung , serverseitiges Rendering und Leistungsoptimierung. Astro rendert standardmäßig statisches HTML und lädt nur interaktive Elemente. Fresh konzentriert sich auf serverseitiges Rendering ohne Laufzeit-Overhead. Enhance.dev priorisiert progressive Verbesserungsmuster mithilfe von Web Components. Obwohl diese Tools die Abhängigkeit von clientseitigem JavaScript reduzieren, indem sie Logik zur Build-Zeit oder serverseitig ausführen, verwenden sie JavaScript weiterhin, wo es für Interaktivität erforderlich ist. Dieser Ansatz macht sie besonders geeignet für leistungskritische und inhaltsorientierte Anwendungen. [ 18 ] [ 19 ] [ 20 ]

Merkmale

Frameworks legen typischerweise den Kontrollfluss eines Programms fest und ermöglichen es dem Benutzer, sich durch die Bereitstellung verschiedener Ereignisse in diesen Ablauf einzuklinken. [ 24 ] Dieses Designmuster der „ Inversion of Control “ gilt als grundlegendes Prinzip eines Frameworks und verbessert den Code, indem es einen einheitlichen Ablauf für ein Team erzwingt, den jeder auf ähnliche Weise anpassen kann. [ 24 ] Beispielsweise ermöglichen einige gängige Mikroframeworks wie Rubys Sinatra (das Express.js inspirierte ) Middleware-Hooks vor und nach HTTP-Anfragen. Diese Middleware-Funktionen können beliebige Funktionen enthalten und ermöglichen es dem Benutzer, Protokollierung, Authentifizierung, Sitzungsverwaltung und Weiterleitungen zu definieren. [ 25 ]

Webvorlagensystem

Caching

Web-Caching bezeichnet das Zwischenspeichern von Webdokumenten , um Bandbreitenverbrauch , Serverlast und gefühlte Verzögerungen zu reduzieren. Ein Web-Cache speichert Kopien der durchlaufenden Dokumente; nachfolgende Anfragen können unter bestimmten Bedingungen aus dem Cache bedient werden. Einige Anwendungsframeworks bieten Mechanismen zum Zwischenspeichern von Dokumenten und zum Überspringen verschiedener Schritte der Seitenvorbereitung, wie z. B. Datenbankzugriffe oder Template-Interpretation.

Sicherheit

Manche Web-Frameworks verfügen über integrierte Authentifizierungs- und Autorisierungsmechanismen , die es dem Webserver ermöglichen , die Benutzer der Anwendung zu identifizieren und den Zugriff auf Funktionen anhand definierter Kriterien einzuschränken. Drupal ist ein Beispiel dafür: Es bietet rollenbasierte Zugriffskontrolle für Seiten und eine webbasierte Oberfläche zum Anlegen von Benutzern und Zuweisen von Rollen.

Datenbankzugriff, Mapping und Konfiguration

Viele Web-Frameworks erstellen eine einheitliche API für ein Datenbank-Backend, wodurch Webanwendungen ohne Codeänderungen mit verschiedenen Datenbanken arbeiten können und Programmierer mit abstrakteren Konzepten arbeiten können. Darüber hinaus enthalten einige objektorientierte Frameworks Mapping-Tools für die objektrelationale Abbildung (ORM) , die Objekte auf Tupel abbildet . [ 26 ]

Einige Frameworks minimieren die Konfiguration von Webanwendungen durch Introspektion und/oder die Einhaltung etablierter Konventionen. Beispielsweise verwenden viele Java-Frameworks Hibernate als Persistenzschicht, das zur Laufzeit ein Datenbankschema generieren kann, welches die notwendigen Informationen speichert. Dadurch kann der Anwendungsentwickler Geschäftsobjekte entwerfen, ohne explizit ein Datenbankschema definieren zu müssen. Frameworks wie Ruby on Rails können auch umgekehrt vorgehen, d. h. Eigenschaften von Modellobjekten zur Laufzeit basierend auf einem Datenbankschema definieren. [ 26 ]

Weitere Funktionen, die Web-Frameworks bieten können, sind Transaktionsunterstützung [ 27 ] und Datenbankmigrationswerkzeuge . [ 26 ]

URL-Zuordnung

Die URL- Zuordnung oder das Routing eines Frameworks ist der Mechanismus, mit dem das Framework URLs interpretiert. Einige Frameworks, wie Drupal und Django, gleichen die angegebene URL mithilfe regulärer Ausdrücke mit vordefinierten Mustern ab , während andere URL-Umschreibungstechniken verwenden , um die URL in eine vom zugrunde liegenden System erkannte URL zu übersetzen. Eine weitere Technik ist die Graphdurchquerung , wie sie beispielsweise von Zope verwendet wird . Dabei wird eine URL in Schritte zerlegt, die einen Objektgraphen (aus Modellen und Ansichten) durchlaufen.

Ein URL-Mapping-System, das Mustervergleich oder URL-Umschreibung zur Weiterleitung und Bearbeitung von Anfragen nutzt, ermöglicht kürzere, benutzerfreundlichere URLs . Dies erhöht die Einfachheit der Website und verbessert die Indexierung durch Suchmaschinen. Beispielsweise könnte eine URL, die mit „/page.cgi?cat=science&topic=physics“ endet, in „/page/science/physics“ geändert werden. Dadurch ist die URL leichter zu merken, zu lesen und zu schreiben, und Suchmaschinen erhalten bessere Informationen über die Struktur der Website. Auch ein Graph-Traversierungsansatz führt häufig zur Erstellung benutzerfreundlicher URLs. Eine kürzere URL wie „/page/science“ existiert oft standardmäßig, da sie lediglich eine kürzere Form der längeren Traversierung zu „/page/science/physics“ darstellt.

AJAX

Ajax , die Abkürzung für „ Asynchronous JavaScript and XML “, ist eine Webentwicklungstechnik zur Erstellung von Webanwendungen. Ziel ist es, Webseiten reaktionsschneller zu gestalten, indem im Hintergrund kleine Datenmengen mit dem Server ausgetauscht werden, sodass die gesamte Webseite nicht bei jeder Änderungsanforderung des Benutzers neu geladen werden muss. Dadurch sollen Interaktivität, Geschwindigkeit, Wartbarkeit und Benutzerfreundlichkeit einer Webseite verbessert werden . [ 28 ]

Aufgrund der Komplexität der Ajax-Programmierung in JavaScript existieren zahlreiche Ajax-Frameworks , die sich ausschließlich mit der Ajax-Unterstützung befassen. Einige Ajax-Frameworks sind sogar in größere Frameworks integriert. Beispielsweise ist die jQuery- JavaScript-Bibliothek in Ruby on Rails enthalten.

Mit dem gestiegenen Interesse an der Entwicklung von Rich-Media-Webanwendungen im Stil von „ Web 2.0 “ wurde die Komplexität der direkten Programmierung in Ajax und JavaScript so deutlich, dass Compiler-Technologien zum Einsatz kamen, um Entwicklern die Programmierung in Hochsprachen wie Java, Python und Ruby zu ermöglichen. Der erste dieser Compiler war Morfik , gefolgt vom Google Web Toolkit . Portierungen für Python und Ruby in Form von PyJS und RubyJS folgten einige Zeit später. Diese Compiler und die zugehörigen Widget-Bibliotheken machen die Entwicklung von Rich-Media-Ajax-Anwendungen deutlich vergleichbarer mit der Entwicklung von Desktop-Anwendungen.

Webdienste

Einige Frameworks bieten Werkzeuge zum Erstellen und Bereitstellen von Webdiensten. Diese Hilfsprogramme können ähnliche Werkzeuge wie der Rest der Webanwendung bieten. [ 29 ]

Webressourcen

Eine Reihe neuerer Web 2.0 RESTful- Frameworks bieten mittlerweile eine ressourcenorientierte Architektur (ROA)-Infrastruktur zum Aufbau von Ressourcensammlungen in einer Art semantischer Web -Ontologie , basierend auf Konzepten des Resource Description Framework (RDF).

Siehe auch

Referenzen

  1. ^ Multiple (Wiki). „Web Application Framework“ . Docforge . Archiviert vom Original am 23.07.2015.
  2. ^ „Die besten Open-Source-Generatoren für statische Websites“ . StaticGen .
  3. ^ „CGI: Common Gateway Interface“ . Archiviert vom Original am 09.04.2009.
  4. ^ „CGI“ . www.ibm.com . Abgerufen am 7. Mai 2021 .
  5. ^ Thomson, Kris (29.10.2003). „Klarstellung zu MVC = Pull und MVC Push“ . Abgerufen am 29.07.2007 .
  6. ^ Microsoft. „Dreistufiger Vertrieb“ . Abgerufen am 19.09.2011 .
  7. ^ Oracle. "clustering_concepts_10en" (PDF) . Abgerufen am 19.09.2011 .
  8. ^ Robert R. Perkoski. „Einführung in die Webentwicklung“ . Archiviert vom Original am 07.11.2013.
  9. ^ IBM. „Using Client Access Express in a three tier environment“ . Abgerufen am 19.09.2011 .
  10. ^ Oracle. „Understanding the Three-Tier Architecture“ . Abgerufen am 19.09.2011 .
  11. ^ Microsoft. „Pragmatische Architektur: Schichtenarchitektur“ . Abgerufen am 19.09.2011 .
  12. ^ Arokia. „3-Tier Web Architecture“ . Abgerufen am 19.09.2011 .{{cite web}}CS1-Wartung: Veralteter Archivierungsdienst ( Link )
  13. ^ „Best Practices für ASP.NET MVC-Controller“ . Archiviert vom Original am 11.10.2011 . Abgerufen am 19.09.2011 .
  14. ^ Jamis Buck. „Schlanker Controller, dickes Model“ . Archiviert vom Original am 16.05.2015.
  15. ^ „Einführung in Web-Frameworks“ . Wired Magazine . Abgerufen am 2. April 2018 .
  16. ^ KLIMUSHYN, Mel (6. April 2015). „Web Application Architecture – Client-Side vs. Server-Side“ . Atomic Spin . Abgerufen am 6. März 2016 .
  17. ^ „AngularJS vs. Backbone.js vs. Ember.js“ . www.airpair.com . Archiviert vom Original am 26.03.2023 . Abgerufen am 04.06.2016 .
  18. ^ a b c Uzayr, Sufyan bin; Cloud, Nicholas; Ambler, Tim (November 2019). JavaScript Frameworks for Modern Web Development: The Essential Frameworks, Libraries, and Tools to Learn Right Now . Apress. ISBN 978-1484249949Die
  19. ^ a b c Rojas, Carlos (13. November 2020). Building Native Web Components: Front-End Development with Polymer and Vue.js . Apress. ISBN 978-1484259047Die
  20. ^ a b c Hands-On JavaScript High Performance: Schnellere Webanwendungen mit Node.js, Svelte.js und WebAssembly entwickeln . ISBN 978-1838821098Die
  21. ^ "Verbessern" . GitHub .
  22. ^ „Astro-Framework“ . GitHub .
  23. ^ "Fresh" . GitHub .
  24. ^ a b Fowler, Martin. "bliki: InversionOfControl" . martinfowler.com . Abgerufen am 06.03.2016 .
  25. ^ Xue, Qiang. „Capital One Engineering – Philosophies that Shaped Successful Frameworks“ . www.capitalone.io . Archiviert vom Original am 13.03.2016 . Abgerufen am 06.03.2016 .
  26. ^ a b c „Active Record Grundlagen“ . Ruby on Rails . Abgerufen am 20. März 2021. Objektrelationale Abbildung (ORM) ist eine Technik , die die komplexen Objekte einer Anwendung mit Tabellen in einem relationalen Datenbankmanagementsystem verbindet. Active Record erstellt automatisch Methoden, mit denen eine Anwendung die in ihren Tabellen gespeicherten Daten lesen und bearbeiten kann.
  27. ^ „Active Record Transactions“ . Ruby on Rails . Abgerufen am 20. März 2021 .
  28. ^ „Website mit Ajax erstellen mit Webplano“ . webplano.com . Abgerufen am 23.11.2025 .
  29. ^ Maximilien, EM (2006). „Tutorial 4: Web Services on Rails: Using Ruby and Rails for Web Services Development and Mashups“. 2006 IEEE International Conference on Web Services (ICWS’06) . S. xliii. doi : 10.1109/ICWS.2006.139 . ISBN 0-7695-2669-1Die