Web framework
A Web Framework (Wf) oder Webanwendungs -Framework (WAF) ist ein Software -Framework das soll die Entwicklung von unterstützen Web Applikationen einschließlich Webdienste, Webressourcenund Web Apis. Webrahmen bieten eine Standardmethode zum Erstellen und Bereitstellen von Webanwendungen auf der Weltweites Netz. Web -Frameworks zielen darauf ab, den Overhead zu automatisieren, der mit gemeinsamen Aktivitäten verbunden ist, Web Entwicklung. Zum Beispiel bieten viele Web -Frameworks Bibliotheken zum Datenbank Zugang, Vorlagen Frameworks und Sitzung Management, und sie fördern oft Code -Wiederverwendung.[1] Obwohl sie oft auf die Entwicklung von abzielen Dynamische Websitessie sind auch anwendbar auf Statische Websites.[2]
Geschichte
Als Design der Weltweites Netz war nicht von Natur aus dynamisch, früh Hypertext bestand aus handcodiert Html Textdateien, die veröffentlicht wurden Webserver. Alle Änderungen an veröffentlichten Seiten mussten vom Autor der Seiten durchgeführt werden. 1993 die Gemeinsame Gateway -Schnittstelle (CGI) Standard wurde eingeführt, um externe Anwendungen mit Webservern zu vernichten, um a zu bereitstellen Dynamische Webseite Das reflektierte Benutzereingaben.[3]
Die ursprünglichen Implementierungen der CGI -Schnittstelle hatten jedoch typischerweise nachteilige Auswirkungen auf die Serverlast, da jede Anforderung eine separate Stellungnahme gestartet hat Prozess.[4] Neuere Implementierungen nutzen anhaltende Prozesse unter anderem Techniken, um den Fußabdruck in den Ressourcen des Servers zu verringern und einen allgemeinen Leistungsschub zu bieten.
1995 entstanden vollständig integrierte Server-/Sprachentwicklungsumgebungen, und es wurden neue webspezifische Sprachen eingeführt, wie z. Coldfusion, Php, und Aktive Server-Seiten.
Obwohl die überwiegende Mehrheit der Sprachen zum Erstellen dynamischer Webseiten hat Bibliotheken Um bei gemeinsamen Aufgaben zu helfen, erfordern Webanwendungen häufig bestimmte Bibliotheken für bestimmte Aufgaben, z. B. das Erstellen Html (zum Beispiel, Jakarta Server Faces).
In den späten neunziger Jahren erschienen reife "Full Stack" -Rahmenbedingungen, die oft mehrere Bibliotheken sammelten, die nützlich sind Web Entwicklung in einen einzigen Zusammenhalt Software -Stack für Webentwickler zu verwenden. Beispiele hierfür sind einzuziehen ASP.NET, Java ee, WebObjects, Web2py, Openacs, Katalysator, Mojolicious, Rubin auf Schienen, Laravel, Gral, Django, Zend Framework, Sails.js, Yii,[5] CakePhp,[6] und Symfony.
Arten von Rahmenarchitekturen
Die meisten Webrahmen basieren auf dem Model View Controller (MVC) Muster.
Modell -View -Controller (MVC)
Viele Frameworks folgen dem MVC Architekturmuster um das zu trennen Datenmodell hinein Geschäftsregeln (der "Controller") und der Benutzeroberfläche (die Aussicht"). Dies wird allgemein als gute Praxis als so angesehen modularisiert Code, fördert Code -Wiederverwendungund ermöglicht es, mehrere Schnittstellen anzubringen. In Webanwendungen ermöglicht dies unterschiedliche Ansichten, die beispielsweise unterschiedliche Ansichten präsentieren können Webseiten Für mobile vs. Desktop-Browser oder Bereitstellung von Maschinenlesbar Internetservice Schnittstellen.
Push-basiert gegen Pull-basiert
Die meisten MVC-Frameworks folgen einer Push-basierten Architektur, die auch als "actionbasiert" bezeichnet wird. Diese Frameworks verwenden Aktionen, die die erforderliche Verarbeitung ausführen, und "die Daten anschließend in die Ansichtsschicht" drücken, um die Ergebnisse zu rendern.[7] Django, Rubin auf Schienen, Symfony, Frühlings -MVC, Streifen, Sails.js, Codesigniter[8] sind gute Beispiele für diese Architektur. Eine Alternative dazu ist Pull-basierte Architektur, die manchmal auch als "Komponentenbasiert" bezeichnet wird. Diese Frameworks beginnen mit der Ansichtsschicht, die nach Bedarf von mehreren Controllern "ziehen" kann. In dieser Architektur können mehrere Controller an einer einzigen Ansicht beteiligt sein. Aufzug, Tapisserie, Jboss Naht, Jakarta Server Faces, und Wicket sind Beispiele für Pull-basierte Architekturen.Spielen, Streben, Rife und ZK Unterstützung sowohl für Push- als auch für Pull-basierte Anwendungscontroller-Anrufe.
Dreistufige Organisation
Im dreistufige Organisation, Anwendungen sind um drei physische Ebenen strukturiert: Client, Anwendung und Datenbank.[9][10][11][12] Die Datenbank ist normalerweise eine RDBMS. Die Anwendung enthält die Geschäftslogik, die auf einem Server ausgeführt wird und mit dem Client verwendet wird Http.[13] Der Client in Webanwendungen ist ein Webbrowser, in dem HTML ausgeführt wird, das von der Anwendungsschicht generiert wird.[14][15] Der Begriff sollte nicht mit MVC verwechselt werden, wo es im Gegensatz zur dreistufigen Architektur als gute Praxis angesehen wird, die Geschäftslogik vom Controller, der "mittleren Schicht", fernzuhalten.[16][17]
Framework -Anwendungen
Frameworks werden entwickelt, um die Konstruktion von Internetanwendungen auf der Grundlage einer einzelnen Programmiersprache zu unterstützen, die sich im Fokus von Allzweck-Tools wie Zend Framework und Ruby on Rails konzentrieren, die die Funktionen einer bestimmten Sprache erweitern, bis hin zu programmierbaren Paketen, die in den nativen, programmierbaren Paketen, die sich befinden eine bestimmte Benutzeranwendung, wie z. Content -Management -Systeme, einige mobile Entwicklungstools und einige Portalwerkzeuge.[18]
Allgemeine Website-Rahmenbedingungen
Web -Frameworks müssen nach den architektonischen Regeln von Browsern und Funktionen funktionieren Protokolle wie zum Beispiel Http, welches ist staatenlos. Webseiten werden von a serviert Server und kann dann durch den Browser mithilfe des Browsers geändert werden JavaScript. Beide Ansätze haben seine Vor- und Nachteile.
Die serverseitige Seite Änderungen erfordern normalerweise, dass die Seite aktualisiert wird. Ermöglichen Sie jedoch, dass jede Sprache verwendet wird und mehr Rechenleistung verwendet wird. Bei clientseitigen Änderungen kann die Seite in kleinen Brocken aktualisiert werden, die sich wie eine Desktop-Anwendung anfühlen, jedoch auf JavaScript beschränkt sind und im Browser des Benutzers ausgeführt werden, das möglicherweise nur begrenzte Rechenleistung aufweist. Einige Mix der beiden werden normalerweise verwendet.[19] Anwendungen, die JavaScript stark nutzen und nur Teile der Seite aktualisieren, werden aufgerufen Einseitige Anwendungen und nutzen in der Regel ein clientseitiges JavaScript-Web Framework, um den Code zu organisieren.
Server-Seite
- Apache Wicket
- ASP.NET CORE
- CakePhp
- Katalysator
- Codesigniter
- CPPCMS
- Django
- Flasche
- Jam.py
- Yii
- Laravel
- Mojolicious
- Rubin auf Schienen
- Sails.js
- Symfony
- Frühlings -MVC
- Nur anschauen
- WT (Web Toolkit)
- Zend Framework[20]
Client-Seite
Beispiele beinhalten Backbone.js, Angularjs, Eckig, Emberjs, Reactjs, JQuery UI, Svelte, und Vue.js.[21]
Diskussionsforen, Wikis und Weblogs
- Wikibase/Wikiwikiweb
Merkmale
Frameworks setzen die typischerweise die Steuerfluss eines Programms und erlauben Sie dem Benutzer des Frameworks, sich in den Fluss zu "einzuschließen", indem Sie verschiedene Ereignisse freilegen.[22] Dies "Kontrollinversion"Das Designmuster wird als ein definierendes Prinzip eines Rahmens angesehen und kommt dem Code zugute, indem ein gemeinsamer Fluss für ein Team durchgesetzt wird, das jeder auf ähnliche Weise anpassen kann.[22] Zum Beispiel einige beliebte "Mikroframeworks" wie Ruby's Sinatra (was inspiriert hat Express.js) Ermöglichen Sie "Middleware" -Haken vor und nach HTTP -Anfragen. Diese Middleware -Funktionen können alles sein und es dem Benutzer ermöglichen, Protokollierung, Authentifizierung und Sitzungsverwaltung und Umleitung zu definieren.[23]
Webvorlagensystem
Zwischengespeichert
Web -Caching ist das zwischengespeichert von Netz Unterlagen zur Reduzierung Bandbreite Verwendungszweck, Server Belastungund wahrgenommen "Verzögerung"Ein Web -Cache speichert Kopien von Dokumenten, die durch sie gehen. Nachfolgende Anforderungen können vom Cache erfüllt werden, wenn bestimmte Bedingungen erfüllt sind. Einige Anwendungsrahmen bieten Mechanismen für das Zwischenspeichern von Dokumenten und die Umgehung verschiedener Stufen der Vorbereitung der Seite, z. B. Datenbankzugriff oder Vorlage Deutung.
Sicherheit
Einige Web -Frameworks kommen mit Authentifizierung und Genehmigung Frameworks, die das ermöglichen Webserver Um die Benutzer der Anwendung zu identifizieren und den Zugriff auf Funktionen basierend auf einigen definierten Kriterien einzuschränken. Drupal ist ein Beispiel, das rollenbasierten Zugriff auf Seiten bietet und eine webbasierte Schnittstelle zum Erstellen von Benutzern und zum Zuweisen dieser Rollen bietet.
Datenbankzugriff, Zuordnung und Konfiguration
Viele Webrahmen erstellen eine einheitliche API In einem Datenbank-Backend können Webanwendungen mit einer Vielzahl von Datenbanken ohne Codeänderungen arbeiten und die Programmierer ermöglichen, mit Konzepten auf höherer Ebene zu arbeiten. Zusätzlich einige objektorientierter Frameworks enthalten Mapping -Tools, die bereitgestellt werden sollen Objektrelationskartierung, was kartiert Objekte zu Tupel.[24]
Einige Frameworks minimieren die Konfiguration der Webanwendungen durch die Verwendung von Selbstbeobachtung und/oder nach bekannten Konventionen. Zum Beispiel verwenden viele Java -Frameworks Überwintern Als Persistenzschicht, die zur Laufzeit ein Datenbankschema generieren kann, die die erforderlichen Informationen bestehen können. Auf diese Weise kann der Anwendungsdesigner Geschäftsobjekte entwerfen, ohne ein Datenbankschema explizit zu definieren. Frameworks wie Rubin auf Schienen kann auch umgekehrt funktionieren, dh die Eigenschaften von Modellobjekten zur Laufzeit basierend auf einem Datenbankschema.[24]
Andere Funktionen, die Web Frameworks enthalten können Transaktionsunterstützung[25] und Datenbankmigrationstools.[24]
URL -Zuordnung
Ein Rahmen URL Mapping- oder Routing -Einrichtung ist der Mechanismus, mit dem das Rahmen URLs interpretiert. Einige Frameworks wie Drupal und Django stimmen mit der bereitgestellten URL gegen festgelegte Muster überein Reguläre Ausdrücke, während einige andere benutzen umschreiben Techniken zur Übersetzung der bereitgestellten URL in eine, die der zugrunde liegende Motor erkennen wird. Eine andere Technik ist die von Graph Traversal wie verwendet von Zope, wobei eine URL in Schritten zersetzt wird, die ein Objektdiagramm (von Modellen und Ansichten) durchqueren.
Ein URL -Mapping -System, das ein Musteranpassung oder Umschreibung zum Routen und Handlungsanforderungen verwendet kürzer mehr "Freundliche URLs"Um zu verwenden, erhöhen Sie die Einfachheit der Website und ermöglichen eine bessere Indizierung durch Suchmaschinen. Beispielsweise könnte eine URL, die mit" /page.cgi?cat=science&topic=physics "endet", in einfach "/page/science" geändert werden /Physik ". Dies erleichtert die URL für Menschen, sich zu erinnern, zu lesen und zu schreiben, und bietet Suchmaschinen bessere Informationen über das strukturelle Layout der Website. Ein Graph -Traversal -Ansatz führt auch dazu, freundliche URLs zu erstellen. Eine kürzere URL wie "/Seite/Wissenschaft" existiert standardmäßig, da dies einfach eine kürzere Form des längeren Durchgangs zu "/Seite/Wissenschaft/Physik" ist.
Ajax
Ajax, Kurzschrift für "Asynchron JavaScript und Xml", ist eine Webentwicklungstechnik zum Erstellen von Webanwendungen. Die Absicht ist es, Webseiten zu reagieren, indem kleine Datenmengen mit dem Server hinter den Szenen austauschen, damit die gesamte Webseite nicht jedes Mal neu geladen werden muss, wenn die Benutzer fordert eine Änderung an. Dies soll die Interaktivität, Geschwindigkeit, Wartbarkeit und die Webseite erhöhen und erhöhen Benutzerfreundlichkeit.[26]
Aufgrund der Komplexität der AJAX -Programmierung in JavaScript gibt es zahlreiche zahlreiche Ajax Frameworks Das befasst sich ausschließlich mit AJAX -Unterstützung. Einige Ajax -Frameworks sind sogar als Teil größerer Frameworks eingebettet. Zum Beispiel die JQuery JavaScript -Bibliothek ist in Ruby on Rails enthalten.
Mit dem zunehmenden Interesse an der Entwicklung "Web 2.0" Reiche WebanwendungenDie Komplexität der Programmierung direkt in Ajax und JavaScript ist so deutlich geworden, dass die Compiler-Technologie eingetreten ist, damit Entwickler in hochrangigen Sprachen wie Java, Python und Ruby codieren können. Der erste dieser Compiler war Morfik gefolgt von Google Web Toolkit, mit Häfen nach Python und Ruby in Form von Pyjs und Rubyjs nach einiger Zeit danach. Diese Compiler und ihre zugehörigen Widget -Set -Bibliotheken machen die Entwicklung reicher Medien -Ajax -Anwendungen viel ähnlicher der Entwicklung von Desktop -Anwendungen.
Internetdienste
Einige Frameworks bieten Tools zum Erstellen und Bereitstellen von Webdiensten. Diese Dienstprogramme bieten möglicherweise ähnliche Tools wie der Rest der Webanwendung.[27]
Webressourcen
Eine Reihe neuer Web 2.0 Erholsam Frameworks liefern jetzt Ressourcenorientierte Architektur (ROA) Infrastruktur zum Aufbau von Ressourcensammlungen in einer Art Semantisches Web Ontologiebasierend auf Konzepten von Ressourcenbeschreibung Framework (RDF).
Siehe auch
- Vergleich von JavaScript-basierten Webrahmenbedingungen (Client-Seite)
- Vergleich von serverseitigen Webrahmenbedingungen
- Anwendungsserver
- Anwendungsrahmen
- Anwendungssicherheit
- Konvention über Konfiguration
- Wiederhole dich nicht (TROCKEN)
- Liste der Webdienst -Frameworks
- Reiche Webanwendung (obsolet)
- Lösungsstapel
- Mobile Entwicklungsrahmen
Verweise
- ^ Multiple (Wiki). "Webanwendungsframework". Docforge. Archiviert von das Original Am 2015-07-23.
- ^ "Top Open-Source Statische Site-Generatoren". Statisch.
- ^ "CGI: Common Gateway Interface". Archiviert von das Original am 2009-04-09.
- ^ "CGI". www.ibm.com. Abgerufen 2021-05-07.
- ^ "Yii PHP -Framework".
- ^ "Cakephp".
- ^ Thomson, Kris (2003-10-29). "Klarstellung zu MVC = Pull und MVC Push". Abgerufen 2007-07-29.
- ^ "Was sind die grundlegenden Unterschiede zwischen Streben und JSF?". Struts.apache.org. 2011-02-14. Abgerufen 2013-06-14.
- ^ Microsoft. "Dreistufige Verteilung". Abgerufen 2011-09-19.
- ^ Orakel. "clustering_concepts_10en" (PDF). Abgerufen 2011-09-19.
- ^ Robert R. Perkoski. "Einführung in die Webentwicklung". Archiviert von das Original Am 2013-11-07.
- ^ IBM. "Verwenden von Client Access Express in einer dreistufigen Umgebung". Abgerufen 2011-09-19.
- ^ Orakel. "Die dreistufige Architektur verstehen". Abgerufen 2011-09-19.
- ^ Microsoft. "Pragmatische Architektur: Schichten". Abgerufen 2011-09-19.
- ^ Arokia. "3-stufige Webarchitektur". Abgerufen 2011-09-19.
- ^ "Best Practices von ASP.NET MVC Controller". Archiviert von das Original Am 2011-10-11. Abgerufen 2011-09-19.
- ^ Jamis Buck. "Skinny Controller, Fettmodell". Archiviert von das Original Am 2015-05-16.
- ^ "Erste Schritte mit Web Frameworks". Wired Magazine. Abgerufen 2018-04-02.
- ^ Klimushyn, Mel (6. April 2015). "Webanwendungsarchitektur-Client-Seite vs. serverseitig". Atomarer Spin. Abgerufen 2016-03-06.
- ^ "Home - Zend Framework". Framework.zend.com. Abgerufen 2020-02-09.
- ^ "AngularJS vs. Backbone.js vs. ember.js". www.airpair.com. Abgerufen 2016-06-04.
- ^ a b Fowler, Martin. "Bliki: InversionofControl". Martinfowler.com. Abgerufen 2016-03-06.
- ^ Xue, Qiang. "Capital One Engineering - Philosophien, die erfolgreiche Rahmenbedingungen geprägt haben". www.capitalone.io. Abgerufen 2016-03-06.
- ^ a b c "Active Record -Grundlagen". Rubin auf Schienen. Abgerufen 20. März, 2021.
Objekt Relational Mapping, die allgemein als Abkürzung bezeichnet wird, ist eine Technik, die die reichen Objekte einer Anwendung mit Tabellen in einem relationalen Datenbankverwaltungssystem verbindet. Active Record erstellt automatisch Methoden, um eine Anwendung zu ermöglichen, Daten zu lesen und zu manipulieren, in denen gespeicherte Daten gespeichert sind seine Tische.
- ^ "Aktive Datensatztransaktionen". Rubin auf Schienen. Abgerufen 20. März, 2021.
- ^ "Was ist Ajax". www.dlsweb.rmit.edu.au. Abgerufen 2021-05-07.
- ^ Maximilien, E. M. (19. Dezember 2006). "Webdienste auf Rails: Verwenden von Ruby und Rails für Webdiensteentwicklung und Mashups". IEEE XPLORE. Chicago. doi:10.1109/ICWs.2006.139. ISBN 0-7695-2669-1.