9 най-добри Python рамки за изграждане на малки към корпоративни приложения

Python е едновременно забавна играчка и плашещ огнемет. Същото важи и за това, което можете да правите с Python.


Python е обичан както от любители, така и от учени и архитекти.

По дяволите е лесно да започнете, има абстракции от по-висок ред и възможности за метапрограмиране за изграждане на големи и сложни системи и разполага с много библиотеки с камиони, които правят почти всичко. Разбира се, има ограничения, когато става въпрос за едновременност и силно пишене, но можете да работите около тях.

В тази статия ще разгледаме някои от най-добрите рамки на Python, когато става въпрос за изграждане на големи и малки уеб приложения.

Django

Най- Django Framework е издържал на изпитанието на времето, когато се използва уеб-рамката за общността Python. Ако нападнате разработчика на Python в съня си и ги принудите да създадат уеб приложение под оръжие, те автоматично ще достигнат за Django по начина, по който рубистът ще стигне за Rails.

И има основателна причина за това. Джанго е, както се казва във фактурата, “уеб рамка за перфекционисти със срокове.” Това се нарича рамка „включени батерии“ (подобно на това как Python е език, включващ батерии), който осигурява всички общи функции извън кутията.

С помощта на тези функции, Django масово намалява времето за разработка:

  • Удобен и приятен ORM, с миграции, създадени и приложени автоматично от рамката.
  • Скелета за автоматично генериране на администраторски панел въз основа на вашите модели.
  • Поддръжка за бисквитки, сесии, междинен софтуер, шаблони и т.н..
  • Функции за защита като предотвратяване на XSS, предотвратяване на CRSF и др. Се прилагат автоматично.
  • Работи с практически всички бази данни там (лесно е да намерите адаптери, където официалната поддръжка не съществува)
  • Поддръжка първокласна за географски данни и пространствени заявки GeoDjango

И много, много повече. Достатъчно е да се каже, че Django е пълноценна приятелска уеб рамка.

Джанго ли е за теб?

Абсолютно да.

Django има отличен смисъл за всички случаи на използване, независимо дали бързо прототипиране или планиране на корпоративно приложение. Единственият груб ръб, който ще срещнете, е структурата на рамката. Тъй като Django се огъва назад, за да направи развитието бързо и лесно за вас, той налага структурата си (концепция, наречена „конвенция над конфигурация“) на разработчика, с която може да не сте съгласни. Например, ако искате да замените Django ORM с нещо друго (да речем, SQL Alchemy), бъдете готови за изненади.

Интересувате се да станете пълен разработчик на стекове с Django и Python? – Вижте това фантастичен онлайн курс.

Колба

Докато Джанго поема почти целия разум в уеб разработката на Python, Колба е силен претендент.

За разлика от Django, Flask е „микро-рамка“, което означава, че се фокусира върху оправянето на няколко оголени минимални неща, а останалото оставя на вас. Това „останалото зависи от вас“ може да бъде източник на разочарование или наслада, в зависимост от това какви са вашите цели. За тези, които знаят какво правят и искат да изработват с любов своите уеб приложения, като избират компоненти по свой избор, Flask е богиня.

Колбата предлага следните функции:

  • Маршрутизиране, шаблониране, управление на сесии и други полезни функции.
  • Пълна поддръжка за единично тестване
  • Минимална, подвижна архитектура
  • Поддръжка за първокласна REST
  • Поддръжка за чертежи, уникалната архитектура на Flask за малки уеб приложения
  • Изберете вашите пакети за ORM, миграции и т.н..
  • Гъвкава структура на приложението – поставете вашите файлове там, където те имат най-голям смисъл за вас
  • Подаване на статични файлове
  • WGSI съвместим

Флашка е за вас?

Както вече беше казано, Flask е минимална уеб рамка с всичко разбито на отделни компоненти, които можете да разменяте. Ако бързате да изградите прототип, ще отделите много време, вземайки тривиални решения за базата данни, структурата на папките, маршрутизацията и т.н., които могат да се окажат контрапродуктивни. Колбата работи най-добре, когато сте в стабилен, сериозен проект от среден до голям мащаб, особено REST API.

бутилка

Ако смятате, че подходът на Flask не е достатъчно минимален и че все още искате повече контрол, поздравете с бутилка.

Бутилката изчезва още повече, до момента, в който единствената зависимост е стандартната библиотека на Python. Това означава, че не пип инсталирате това или пип инсталирате това, макар че най-вероятно би трябвало да го направите преди дълго. Ето защо бутилката се откроява за някои хора:

  • Разгръщане с един файл. Да, цялото ви приложение живее в един „.py“ файл.
  • Без външни зависимости. Ако имате инсталирана подходяща версия на Python, добре е да продължите.
  • Доставя своя шаблонен двигател, който може да бъде заменен с Jinja2, Mako или Cheetah.
  • Поддръжка за формуляри, заглавки, бисквитки и качване на файлове.
  • Вграден уеб сървър, който може лесно да бъде заменен.

Бутилка ли е за вас?

Ако правите наистина малко приложение (да речем, под 500 реда код) без специални изисквания, Bottle може да има много смисъл за вас. Това е пълен подход без глупости при създаването на уеб приложения, но на практика ще откриете, че сте по-възпрепятствани, отколкото помага на Bottle. Причината е, че реалният свят винаги се променя и преди да го опознаете. Нови изисквания ще ви паднат на главата. В този момент поставянето на всичко в един файл ще се превърне в скучна работа.

Освен това, ако смятате, че бутилката и колбата са почти еднакви, вие сте прав. Предложения на сливане двамата датират от 2012 г. и дори Армин, създателят на Flask, е съгласен с това. Въпреки това Марсел, създателят на Bottle, поддържа строго идеологическо разграничение поради подхода с един файл и настоява двамата да останат разделени.

Zope

Zope е сложно да се обясни, но ще се опитам. Да, това е уеб рамка, която може да се използва за създаване на големи или малки приложения, но това не е всичко. Zope е по-скоро платформа, която се състои от инструменти (включени уеб рамки), създадени по философията на Zope и поддържани от Zope Corporation.

Zope има няколко интересни компонента и функции, подходящи за разработване на корпоративни приложения:

  • Архитектура за регистриране и откриване на компоненти за конфигуриране на голямо приложение.
  • ZODB – (единствената) обектна база данни за Python за съхранение на обектите.
  • Пълноценна рамка и стандарти за системите за управление на съдържанието
  • Набор от рамки за уеб приложения – каноничната все още се нарича Zope, въпреки че над нея са изградени няколко нови рамки (като Grok).
  • Строги стандарти за разработка, издаване и поддръжка на софтуер.

Zope за вас ли е??

Ако имате силно структурирана среда за създаване на наистина големи приложения, Zope е добър. Това каза, че ще се сблъскате и с справедливия си дял от проблеми. Докато Zope продължава да се развива, общността е наистина малка, доколкото много разработчици на Python дори не са чували за това. Намирането на уроци и обширна документация е трудно, така че бъдете готови да направите много изкопаване наоколо (въпреки че общността наистина е полезна!). Също така, разработчиците на Python, на които се натъкнете, може да не искат да научат Zope и да “разреждат” техния набор от умения.

TurboGears

TurboGears е изключително гъвкава рамка, която има истински композиционна архитектура. Това е рамка, която се разраства според вашите нужди и можете да я използвате, за да създадете еднофайл приложение или многоздравен бегемот.

TurboGears има някои елегантни функции, някои от които или не присъстват в популярни рамки (като Django) или са трудни за изграждане:

  • Първокласна поддръжка за множество бази данни
  • Транзакции с много бази данни
  • Силно модулен – започнете с един файл и мащабирайте колкото е необходимо
  • Мощен ORM (SQLAlchemy, който е по-зрял и способен от ORM на Django)
  • Pluggable архитектура, базирана на WSGI спецификацията
  • Вградена поддръжка за заточване на база данни
  • Функционално задвижван интерфейс за разлика от дълбоките, твърди обектно-ориентирани йерархии.

TurboGears е за вас?

Ако искате да се развивате щастливо и искате тествана, зряла и здрава рамка далеч от медийния шум на „страхотно, следващо поколение“ и всичко останало, TurboGears е чудесен начин. Той е много уважаван в общността и разполага с пълна, обширна документация. Разбира се, TurboGears не е убеден, което означава, че първоначалното време за настройка и конфигуриране може да бъде повече, но това е идеалната рамка за разработка на корпоративни приложения.

Web2py

Web2py стартира като хоби проект и беше пуснат през 2007 г. Целите му са да направят уеб разработката лесна и достъпна за всички.

В резултат Web2py доближава нулевата зависимост до крайност – няма изисквания, няма какво да инсталира и включва пълнофункционален уеб-базиран редактор за разработка, управление на бази данни, както и внедряване..

Почти можете да мислите за това като Android Studio, което е по-скоро цялостна среда, отколкото просто рамка. Някои приятни функции, които Web2py има, са:

  • Почти няма крива на обучение.
  • Минимално ядро ​​(само 12 обекта), което дори може да се запомни!
  • Pure-Python шаблониране
  • Защита срещу XSS, CSRF и други атаки
  • Приятен и последователен API

Web2py е за вас?

Web2py е стабилна и забавна рамка, но е трудно да я препоръчам срещу други опции като Django, Flask и др. Работни места почти няма, а историята за тестване на устройства не е страхотна. Въпреки това може да се насладите на API на кода и цялостното изживяване, което рамката предлага, особено ако изграждате REST API.

CherryPy

CherryPy е друга микрокадра, която има за цел да осигури основна функционалност на рамката и бързо да се измъкне от пътя.

Въпреки че е сравним с други микро рамки като Flask, CherryPy може да се похвали с някакво отличие:

  • Той съдържа вграден многопоточен сървър (нещо, което остава в списъка с желания на Flask)
  • (Единичният) уеб сървър може да хоства множество приложения!
  • Сервирайте приложението си като WSGI приложение (за интерфейс с други WSGI приложения) или обикновен HTTP сървър (който се представя по-добре)
  • Първокласна поддръжка за профилиране и тестване на единица
  • Работи на PyPy (за истинските производители на наркомани), Jython и дори Android

CherryPy прави всичко това и след това обичайното, което бихте очаквали от уеб рамка.

CherryPy за вас ли е??

Ако най-вече изграждате RESTful услуги, CherryPy е много по-сериозен конкурент от Flask. Това е десетилетие, което е узряло добре и е подходящо както за малки, така и за големи приложения.

Sanic

Възходът на Node и неговия асинхронен модел на програмиране остави много общности да се чувстват по-назад, включително и Python. В отговор на радара се появи шум от асинхронни уеб рамки, Sanic като един от тях.

Саник е силно вдъхновен от Flask, дотолкова, доколкото е заимствал декораторите на маршрути, чертежи и други основни линии на куката и потъване. И не се срамуват да го признаят. Това, което Sanic носи на масата, ако сте фен на флашка, е вярно, че не блокира I / O, за да отговаря на нивата на производителност на приложение Node. С други думи, Sanic е Flask с асинхрон / изчаквайте подкрепа!

В сравнение с CherryPy, Sanic има невероятно предимство в представянето (само помислете как би се справило с Flask!). Вижте следните резултати, тествани от DataWeave:

Както можете да видите, след като числата на едновременността започнат да надхвърлят 50 в секунда, CherryPy практически се задави и хвърли висок процент на отказ.

Саник за теб ли е??

Докато характеристиките на изпълнението на Sanic издухват всичко останало от водата, това може да не е най-добрият избор за следващия ви проект. Основната причина е липсата на асинхронни библиотеки. По-голямата част от съществуващите Python инструменти и библиотеки са написани за версията с еднопоточна CPython, без да се предвижда висока съвместимост или асинхронни операции. Ако, например, любимият ви ORM не поддържа асинхронни операции, целият смисъл на използването на Sanic се побеждава.

Поради тези причини за зрялост и наличност няма да изследваме повече асинхронизиращи рамки в Python.

Masonite

Попаднах на тази рамка преди време и реших, че това е стъпка в правилната посока. Оттогава се появи версия 2.0 и имам чувството, че най-накрая е дошло времето Masonite малко обич.

Просто казано, Masonite е Python версията на Laravel (известна PHP рамка, в случай че не сте знаели). Защо това има значение? Има значение, защото Laravel е построен на принципите на Ruby on Rails и заедно тези две рамки позволяват на non-Ruby devs да изживеят „Rails Way“ да правят неща.

Разработчиците на Laravel (и до известна степен Rails) ще се чувстват както у дома си, така и ще работят буквално за нула време. Когато опитах Masonite (и изпратих проблем или два, включително грешка!), Успях да създам REST API с точно нулево мислене, тъй като моята мускулна памет Laravel правеше всичко.

Като пълна стека рамка с включени батерии, Masonite носи няколко интересни неща на масата:

  • ORM в стил на активен запис
  • Миграции на база данни (които за разлика от Django трябва да бъдат създадени от разработчика)
  • Мощен IoC контейнер за инжектиране на зависимост
  • Собствен CLI (наричан „занаят“) за скеле и изпълнение на задачи
  • Първокласна поддръжка за тестване на единица

Най-големият „съперник“ за Masonite е Django, тъй като общността прави всичко възможно, за да предлага на пазара рамката като лесно, възхитително и следващото голямо нещо. Дали ще надмине Джанго е нещо, което времето ще покаже (ако ме попитате, има приличен кадър), но за дискусия, сравнявайки двете, вижте тук и тук.

Масоните ли са за вас?

Masonite все още е бебе в сравнение с Django, така че няма начин да бъде препоръчан спрямо Django. Това казва, че ако сте в начина на Релсите (или по Laravel) да вършите нещата, ще оцените какво може да предложи Masonite. Той е идеален за бързо изграждане на прототипи, които се нуждаят от всичко предварително конфигурирано и лесно за превключване.

заключение

Там не липсват Python уеб рамки, големи и малки. Въпреки че можете да вземете почти всичко за малък проект, корпоративното приложение има изисквания, които не много от тези рамки могат да изпълнят. Ако ме питате, за развитие на предприятието, Django (до известна степен), Zope и TurboGears са това, което ви идва на ум. И дори сред тях съм склонен към TurboGears.

Въпреки това, всеки архитект, струващ неговата сол, може да вземе микро рамка и да разгърне тяхната архитектура. И това почти се случва на практика, което обяснява успеха на Flask и подобни идеи.

Ако сте начинаещ, тогава този онлайн курс би било полезно да научите Python.

ЕТИКЕТИ:

  • Питон

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map