Webes keretrendszerek

A webes keretrendszer egy olyan kódkönyvtár, amely gyorsabbá és egyszerűbbé teszi a webfejlesztést azáltal, hogy közös mintákat biztosít a megbízható, skálázható és karbantartható webalkalmazások építéséhez. A 2000-es évek eleje után a professzionális webfejlesztési projektek mindig egy meglévő webes keretrendszert használnak, kivéve nagyon szokatlan helyzetekben.

Django, Bottle, Flask, Pyramid, Falcon és Sanic logók, szerzői jogok a megfelelő tulajdonosoktól.

Miért hasznosak a webes keretrendszerek?

A webes keretrendszerek azt foglalják magukba, amit a fejlesztők az elmúlt húsz év során tanultak a webes oldalak és alkalmazások programozása során. A keretrendszerek megkönnyítik a közös HTTP műveletek kódjának újrafelhasználását és a projektek strukturálását, hogy más, a keretrendszert ismerő fejlesztők gyorsan felépíthessék és karbantarthassák az alkalmazást.

A webes keretrendszerek a Django, Flask, Bottle, Pyramid, Morepath, TurboGears és számos más könyvtár által megvalósított koncepció. Ismerje meg, hogyan illeszkednek egymáshoz a részek a webfejlesztés fejezetben, vagy tekintse meg az összes témakört.

Az általános webes keretrendszerfunkciók

A keretrendszerek a kódjukban vagy bővítményeken keresztül nyújtanak funkciókat a webes alkalmazások futtatásához szükséges általános műveletek elvégzéséhez. Ezek a közös műveletek a következők:

  1. URL útválasztás
  2. Bemeneti űrlapok kezelése és érvényesítése
  3. HTML, XML, JSON és egyéb kimeneti formátumok egy sablonozó motor segítségével
  4. Adatbázis kapcsolat konfigurálása és tartós adatmanipuláció egy objektum-relációs leképezőn (ORM) keresztül
  5. Webes biztonság aCross-site request forgery (CSRF) ellen, SQL Injection,Cross-site Scripting (XSS) és más gyakori rosszindulatú támadások ellen
  6. Munkamenet tárolás és visszakeresés

Nem minden webes keretrendszer tartalmaz kódot a fenti funkciók mindegyikéhez.A keretrendszerek az egyetlen felhasználási eset végrehajtásától a minden ismert webes keretrendszerfunkció minden fejlesztő számára történő biztosításáig terjedő spektrumba esnek. Egyes keretrendszerek az “elemeket is tartalmazó” megközelítést követik, ahol minden lehetséges elemet tartalmaz a keretrendszer, míg mások egy minimális alapcsomaggal rendelkeznek, amely más csomagok által biztosított bővítésekre alkalmas.

A Django webalkalmazási keretrendszer például tartalmazza a Django ORM réteget, amely lehetővé teszi a fejlesztő számára, hogy a relációs adatbázisok olvasási, írási, lekérdezési és törlési műveleteit SQL helyett Python kódban írja.A Django ORM azonban jelentős módosítások nélkül nem működik az olyan nemrelációs (NoSQL) adatbázisokon, mint aMongoDB vagy a Cassandra.

Néhány más webes keretrendszer, például a Flask és aPyramid könnyebben használható nem-relációs adatbázisokkal külső Python könyvtárak beépítésével.Van egy spektrum a minimális funkcionalitás és a könnyű bővíthetőség között az egyik végén, és a keretrendszerbe való teljes integráció között a másik végén.

Kell-e webes keretrendszert használnom?

Az, hogy használ-e webes keretrendszert a projektjében, a webfejlesztésben szerzett tapasztalataitól és attól függ, hogy mit szeretne elérni. Ha kezdő programozó vagy, és csak tanulási projektként szeretnél dolgozni egy webes alkalmazáson, akkor egy keretrendszer segíthet megérteni a fent felsorolt fogalmakat, például az URL-irányítást, az adatmanipulációt és a hitelesítést, amelyek a webes alkalmazások többségénél gyakoriak.

Ha viszont tapasztalt programozó vagy, aki jelentős webfejlesztési tapasztalattal rendelkezik, akkor úgy érezheted, hogy a meglévő keretrendszerek nem felelnek meg a projekted követelményeinek. Ebben az esetben a nyílt forráskódú könyvtárakat, mint például a Werkzeug forWSGI plumbing, keverheti a saját kódjával, hogy létrehozza a saját keretrendszerét. A Python ökoszisztémában még mindig rengeteg hely van új keretrendszerek számára, hogy kielégítsék a webfejlesztők azon igényeit, amelyeket a Django, Flask, Pyramid, Bottle és sok más nem elégít ki.

Röviden, az, hogy szükséged van-e webes keretrendszerre egy webes alkalmazás elkészítéséhez, a tapasztalatodtól és attól függ, hogy mit akarsz elérni.Egy webes keretrendszer használata egy webalkalmazás építéséhez biztosan nem szükséges,de sok esetben megkönnyíti a legtöbb fejlesztő életét.

Webes keretrendszerek összehasonlítása

A Talk Python to Me podcast epizódjában részletesen összehasonlította a Django,Flask, Tornado és Pyramid keretrendszereket.

Kíváncsi vagy, hogy egy Django projekt kódja hogyan épül fel a Flaskhoz képest? Nézze meg ezt a Django webalkalmazás bemutatót, majd nézze meg ugyanazt a Flaskkal épített alkalmazást.

Ezeken kívül van egy Compare-python-web-frameworks nevű tároló is, ahol ugyanazt a webalkalmazást különböző Python webframeworks, templating engine-ek és objektum-relációs leképezőkkel kódolják.

Hálózati keretrendszerek forrásai

  • A saját Python webes keretrendszer építése egy remek módja annak, hogy megtanuljuk, hogyan működik a WSGI és a sok más darab, amelyek együttesen teszik a webes keretrendszereket hasznosakká a webfejlesztők számára.

  • 12 kérés másodpercenkéntmegvizsgálja, hogyan viszonyul a hagyományosan szinkron webes keretrendszerFlask egy aszinkron keretrendszerhez, mint aSanic, egy mesterséges, egyszerű benchmarkban. Az eredmények alapján úgy tűnik, hogy a Sanic sokkal gyorsabb, mint a Flask, de amint még egy alapvető mennyiségű funkcionalitást is hozzáadunk egy projekthez, beleértve az adatbázis-lekérdezéseket és a templatingot, az eredmények kiegyenlítődnek. Miguel Grinberg is remekül olvasható, szélesebb körű eredményekkel ebben a cikkben, amelyben arra kéri az olvasókat, hogy hagyjanak figyelmen kívül minden webes teljesítmény benchmarkot, beleértve ezt is.

  • Amikor egy vagy több webes keretrendszer használatát tanulod, hasznos, ha van elképzelésed arról, hogy mit csinál a kód a takaró alatt. Ez a bejegyzés az egyszerű Python-keretrendszer megépítéséről a semmiből megmutatja, hogyan működhetnek a HTTP-kapcsolatok, az útválasztás és a kérések mindössze 320 sornyi kódban. Ez a poszt még akkor is nagyszerű, ha az eredményül kapott keretrendszer leegyszerűsítése annak, amit az olyan keretrendszerek, mint a Django, Flask és Pyramid lehetővé tesznek a fejlesztők számára.

  • Egy másik, újabb, több részből álló bemutató is van a saját webes keretrendszer építéséről Pythonban. Ez a sorozat a szerző által tanulás céljából kódolt alcazar projekten alapul:

    • 1. rész: Kérések kezelése
    • 2. rész: Útvonalak, osztályalapú kezelők és egységtesztelés
    • 3. rész: 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 this three big Python frameworks.

  • This fascinating blog post takes a look at thecode complexity of several Python web frameworksby providing visualizations based on their code bases.

  • A Python webes keretrendszerek benchmarkjai egy keretrendszer reszponzivitásának tesztje egy objektum JSON-ba kódolásával és válaszként való visszaküldésével, valamint adatok lekérdezésével azadatbázisból és renderelésével egy sablonban. Nem születtek meggyőző eredmények, de a kimenet mégis szórakoztató olvasmány.

  • Milyen webes keretrendszereket használsz és miért fantasztikusak?Ez egy nyelvfüggetlen Reddit-beszélgetés a webes keretrendszerekről. Érdekes látni, hogy más nyelvek programozói mit szeretnek és mit nem szeretnek a saját webes keretrendszerükben a fő Python keretrendszerekhez képest.

  • Ez a felhasználó által megszavazott kérdés & válaszoldala azt kérdezte, hogy “Melyek a legjobb általános célú, termelésben használható Python webes keretrendszerek?” A szavazatok nem annyira fontosak, mint a Python fejlesztők számára elérhető számos keretrendszer listája.

  • Django vs. 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 új Python webes keretrendszeregy rövid ismertető több új, még kialakulóban lévő keretrendszerről, mint például a Sanic, a Masonite és a Molten.

Webes keretrendszerek tanulási ellenőrzőlista

  1. Válasszon egy fő Python webes keretrendszert (Django vagyFlask ajánlott), és ragaszkodjon hozzá. Ha még csak most kezded, a legjobb, ha először egy keretrendszert tanulsz meg, ahelyett, hogy minden keretrendszert megpróbálsz megérteni.

  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.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük