Web-Frameworks

Ein Web-Framework ist eine Code-Bibliothek, die die Web-Entwicklung schneller und einfacher macht, indem sie gemeinsame Muster für den Aufbau zuverlässiger, skalierbarer und wartbarer Web-Anwendungen bereitstellt. Seit den frühen 2000er Jahren verwenden professionelle Webentwicklungsprojekte immer ein vorhandenes Web-Framework, außer in sehr ungewöhnlichen Situationen.

Django, Bottle, Flask, Pyramid, Falcon und Sanic Logos, Copyright der jeweiligen Eigentümer.

Warum sind Web-Frameworks nützlich?

Web-Frameworks kapseln, was Entwickler in den letzten zwanzig Jahren bei der Programmierung von Websites und Anwendungen für das Web gelernt haben. Frameworks erleichtern die Wiederverwendung von Code für gängige HTTP-Operationen und die Strukturierung von Projekten, so dass andere Entwickler mit Kenntnissen des Frameworks die Anwendung schnell erstellen und warten können.

Web-Frameworks sind ein Konzept, das von Django, Flask, Bottle, Pyramid, Morepath, TurboGears und verschiedenen anderen Bibliotheken umgesetzt wird. Wie die Teile zusammenpassen, erfahren Sie im Kapitel Webentwicklung oder in allen Themen.

Gemeinsame Web-Framework-Funktionalität

Frameworks stellen in ihrem Code oder durch Erweiterungen Funktionen zur Verfügung, um allgemeine Operationen auszuführen, die für den Betrieb von Webanwendungen erforderlich sind. Zu diesen gemeinsamen Operationen gehören:

  1. URL-Routing
  2. Eingabeformularverarbeitung und -validierung
  3. HTML, XML, JSON und andere Ausgabeformate mit einer Templating-Engine
  4. Datenbankverbindungskonfiguration und persistente Datenmanipulation durch einen objektrelationalen Mapper (ORM)
  5. Websicherheit gegen Cross-Site Request Forgery (CSRF), SQL Injection, Cross-Site Scripting (XSS) und andere häufige bösartige Angriffe
  6. Sitzungsspeicherung und -abruf

Nicht alle Web-Frameworks enthalten Code für alle der oben genannten Funktionen.Das Spektrum der Frameworks reicht von der Ausführung eines einzigen Anwendungsfalls bis zur Bereitstellung aller bekannten Web-Framework-Funktionen für jeden Entwickler. Einige Frameworks verfolgen den Ansatz der „mitgelieferten Batterien“, bei dem alles Mögliche mit dem Framework gebündelt wird, während andere über ein minimales Kernpaket verfügen, das durch andere Pakete erweitert werden kann.

Das Django-Webanwendungs-Framework enthält beispielsweise die Django ORM-Schicht, die es einem Entwickler ermöglicht, relationale Datenbanklese-, -schreib-, -abfrage- und -löschvorgänge in Python-Code statt in SQL zu schreiben.

Das ORM von Django kann jedoch nicht ohne erhebliche Modifikationen mit nicht-relationalen (NoSQL-)Datenbanken wie MongoDB oder Cassandra arbeiten.

Einige andere Web-Frameworks wie Flask und Pyramid sind einfacher mit nicht-relationalen Datenbanken zu verwenden, indem sie externe Python-Bibliotheken einbinden.

Es gibt ein Spektrum zwischen minimaler Funktionalität mit einfacher Erweiterbarkeit auf der einen Seite und dem Einbinden von allem in das Framework mit enger Integration auf der anderen Seite.

Muss ich ein Web-Framework verwenden?

Ob Sie ein Web-Framework in Ihrem Projekt verwenden oder nicht, hängt von Ihrer Erfahrung mit Web-Entwicklung ab und davon, was Sie zu erreichen versuchen. Wenn Sie ein Programmieranfänger sind und eine Webanwendung nur als Lernprojekt entwickeln wollen, kann Ihnen ein Framework helfen, die oben genannten Konzepte zu verstehen, wie z. B. URL-Routing, Datenmanipulation und Authentifizierung, die bei den meisten Webanwendungen üblich sind.

Wenn Sie hingegen ein erfahrener Programmierer mit viel Erfahrung in der Webentwicklung sind, haben Sie vielleicht das Gefühl, dass die vorhandenen Frameworks nicht den Anforderungen Ihres Projekts entsprechen. In diesem Fall können Sie Open-Source-Bibliotheken wie Werkzeug für dieWSGI-Installation mit Ihrem eigenen Code mischen und so Ihr eigenes Framework erstellen. Im Python-Ökosystem ist noch viel Platz für neue Frameworks, um die Bedürfnisse von Webentwicklern zu befriedigen, die von Django, Flask, Pyramid, Bottle und vielen anderen nicht erfüllt werden.

Zusammenfassend lässt sich sagen, dass es von Ihrer Erfahrung und Ihren Zielen abhängt, ob Sie ein Web-Framework für die Entwicklung einer Webanwendung benötigen oder nicht.Die Verwendung eines Web-Frameworks für die Erstellung einer Webanwendung ist sicherlich nicht zwingend erforderlich, aber in vielen Fällen erleichtert es den meisten Entwicklern das Leben.

Vergleich von Web-Frameworks

Talk Python to Me hatte eine Podcast-Folge mit einem detaillierten Vergleich der Frameworks Django, Flask, Tornado und Pyramid.

Sind Sie neugierig, wie der Code in einem Django-Projekt im Vergleich zu Flask aufgebaut ist? Schauen Sie sich dieses Django-Webanwendungstutorial an und sehen Sie sich dann die gleiche Anwendung an, die mit Flask erstellt wurde.

Es gibt auch ein Repository namenscompare-python-web-frameworks, in dem die gleiche Webanwendung mit verschiedenen Python-Webframeworks, Template-Engines und objektrelationalen Mappern programmiert wird.

Ressourcen zu Web-Frameworks

  • Building Your Own Python Web Framework ist eine großartige Möglichkeit zu lernen, wie WSGI funktioniert und die vielen anderen Teile, die Web-Frameworks für Web-Entwickler nützlich machen.

  • 12 Anfragen pro Sekundeuntersucht, wie das traditionell synchrone Web-FrameworkFlask im Vergleich zu einem asynchronen Framework wieSanic in einem künstlichen, einfachen Benchmark abschneidet. Die Ergebnisse lassen den Anschein erwecken, dass Sanic viel schneller ist als Flask, aber sobald man einem Projekt auch nur eine Grundmenge an Funktionalität hinzufügt, einschließlich Datenbankabfragen und Templating, gleichen sich die Ergebnisse aus. Miguel Grinberg hat auch eine großartige Lektüre mit breiteren Ergebnissen in diesem Artikel, in dem er die Leser auffordert, alle Web-Performance-Benchmarks zu ignorieren, einschließlich dieses einen.

  • Wenn Sie lernen, wie man ein oder mehrere Web-Frameworks verwendet, ist es hilfreich, eine Vorstellung davon zu haben, was der Code unter der Abdeckung tut. Dieser Beitrag über den Aufbau eines einfachen Python-Frameworks von Grund auf zeigt, wie HTTP-Verbindungen, Routing und Anfragen in nur 320 Zeilen Code funktionieren können. Dieser Beitrag ist großartig, auch wenn das resultierende Framework eine Vereinfachung dessen ist, was Frameworks wie Django, Flask und Pyramid Entwicklern ermöglichen.

  • Es gibt auch ein anderes, aktuelleres mehrteiliges Tutorial über den Aufbau eines eigenen Web-Frameworks in Python. Diese Serie basiert auf demalcazar-Projekt, das der Autor zu Lernzwecken kodiert:

    • Teil 1: Handhabung von Anfragen
    • Teil 2: Routes, klassenbasierte Handler und Unit Testing
    • Teil 3: Test Client and Templating Support
    • Part 4: Exception Handling, Static Files and Middleware
  • Check out the answer to the“What is a web framework and how does it compare to LAMP?“question on Stack Overflow.

  • Another great series that digs behind the web framework magic is“Web Application from Scratch“. The four parts are:

    • Part 1: handling HTTP requests and responses
    • Part 2: abstracting Requests, Responses and Servers
    • Part 3: request handlers and middleware
    • Part 4: abstracting applications
  • Frameworks is a really well done short videothat explains how to choose between web frameworks. The author has someparticular opinions about what should be in a framework. For the most partI agree although I’ve found sessions and database ORMs to be a helpfulpart of a framework when done well.

  • Django vs Flask vs Pyramid: Choosing a Python Web Frameworkcontains background information and code comparisons for similarweb applications built in these three big Python frameworks.

  • Dieser faszinierende Blog-Beitrag wirft einen Blick auf die Code-Komplexität verschiedener Python-Web-Frameworks, indem er Visualisierungen auf Basis ihrer Code-Basis bereitstellt.

  • Die Python Web-Frameworks Benchmarks sind ein Test der Reaktionsfähigkeit eines Frameworks, bei dem ein Objekt in JSON kodiert und als Antwort zurückgegeben wird, sowie Daten aus der Datenbank abgerufen und in einer Vorlage dargestellt werden. Es gab keine eindeutigen Ergebnisse, aber die Ergebnisse sind trotzdem unterhaltsam zu lesen.

  • Welche Web-Frameworks benutzt ihr und warum sind sie toll?

    Eine sprachunabhängige Reddit-Diskussion über Web-Frameworks. Es ist interessant zu sehen, was Programmierer in anderen Sprachen an ihren Web-Frameworks im Vergleich zu den wichtigsten Python-Frameworks mögen und nicht mögen.

  • Diese von Nutzern beantwortete Frage & lautet: „Was sind die besten Allzweck-Python-Web-Frameworks, die in der Produktion eingesetzt werden können?“.Die Stimmen sind nicht so wichtig wie die Liste der vielen Frameworks, die Python-Entwicklern zur Verfügung stehen.

  • Django vs. Flask in 2019: Which Framework vs. Flask. Flask in 2019: Which Framework to Chooselooks at the best use cases for Django and Flask along with whatmakes them unique, from an educational and development standpoint.

  • 11 neue Python-Web-Frameworks enthält einen kurzen Überblick über einige neuere Frameworks, die noch im Entstehen begriffen sind, wie Sanic, Masonite und Molten.

Lern-Checkliste für Web-Frameworks

  1. Wählen Sie ein wichtiges Python-Web-Framework (Django oder Flask werden empfohlen) und bleiben Sie dabei. Wenn man gerade erst anfängt, ist es am besten, zuerst ein Framework zu lernen, anstatt zu versuchen, jedes Framework zu verstehen.

  2. Work through a detailed tutorial found within the resources links on theframework’s page.

  3. Study open source examples built with your framework of choice so you cantake parts of those projects and reuse the code in your application.

  4. Build the first simple iteration of your web application then go tothe deployment section to make it accessible on theweb.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.