TurboGears
TurboGears (укр. ТурбоГірз) — веб-фреймворк, написаний мовою програмування Python, що складається з декількох WSGI-компонентів: WebOb, SQLAlchemy, Genshi та Repoze.
Тип | Вебфреймворк |
---|---|
Розробник | Kevin Dangoor (оригінальний розробник), Mark Ramm (TG2 lead) |
Перший випуск | вересня 2005 |
Стабільний випуск | 2.4.0[1] (10 травня 2019 ) |
Версії | 2.4.3 (1 березня 2020)[2] |
Репозиторій | github.com/TurboGears/tg2 |
Платформа | Кросплатформенний |
Мова програмування | Python |
Українська | немає |
Ліцензія | MIT License, LGPL |
Вебсайт | www.turbogears.org |
TurboGears побудовано на архітектурному шаблоні модель-вид-контролер (англ. Model-view-controller, MVC), так само як Struts або Ruby on Rails. Використання TurboGears робить розробку веб-додатків на мові Python простішою і доступнішою для підтримки. Починаючи з версії 2.3 фреймворк має «мінімальний режим», який дозволяє йому працювати як мікро-фреймворк. Режим мікро-фреймворку доцільно використовувати в середовищах, де не потрібен весь стек.
Компоненти TurboGears
TurboGears побудовано на базі численних різнорідних бібліотек та проміжного програмного забезпечення. Засоби за замовчуванням змінилися між версіями 1.x, 2.x та 2.3+, але більшість цих компонентів може бути використана у будь-якій версії фреймворку. Це дає можливість для створення великої кількості альтернативних конфігурацій. Нижче наведено основні компоненти фреймоворку.
Компоненти TurboGears 1.x
- SQLObject (Model) — backend даних, який може створити базу даних або інтерфейс з набором існуючих даних.
- SQLAlchemy встановлено за замовчуванням у TurboGears з версії 1.1.
- Kid (Вид) — XHTML frontend двигун шаблонів, де всі шаблони є дійсними XHTML або XML-файлами, які зазвичай створюються таким чином, щоб була можливість відкривати ці шаблони як прості XHTML-файли для перевірки дизайну. Одночасно існує можливість вбудовувати фрагменти на мові Python в манері притаманній XML.
- Genshi наступник Kid і замінить його в якості шаблону двигуна за замовчуванням в TurboGears з версії 1.1. Це компонент майже на 100 % синтаксис-сумісний з Kid.
- CherryPy (Controller) — проміжне програмне забезпечення, що дозволяє розробляти веб-додатки, записуючи обробники подій, які повертають дані шаблонам (у випадку TurboGears). Ті ж дані можуть бути отримані в AJAX як потік даних JSON.
- MochiKit — краща, але необов'язкова бібліотека JavaScript для TurboGears 1.x. Цей компонент призначено для того, щоб зробити програмування в JavaScript більш «пітонічним» (у відповідності до філософії та стандартів мови Python). В основному він використовується для реалізації функцій та віджетів AJAX, оскільки він надає інтерфейс для отримання потоків даних JSON асинхронним способом.
Компоненти TurboGears 2.x
- SQLAlchemy (Модель) — визначає як зв'язати колекції MongoDB з об'єктами Python, з якими може взаємодіяти контролер користувача.
- Ming (Модель) — забезпечує рівень доступу до даних для MongoDB, схоже на те як SQLAlchemy визначає як зв'язати колекції MongoDB з об'єктами Python, з якими може взаємодіяти контролер користувача.
- Genshi (Вигляд) — визначає шаблони для HTML або XHTML, які буде створено користувачем. Тут користувач сам визначає інтерфейс, з яким клієнт буде взаємодіяти.
- Repoze — Repoze.who використовується для керування безпекою (ідентифікації та аутентифікації). Користувачі можуть визначати правила авторизації, засновані на предикатах, прикріплених до контролерів, у фреймворку вже є деякі вбудовані предикати, але деякі можуть бути написані самостійно.
- ToscaWidgets2 — основна бібліотека віджетів для створення форм і складних графічних інтерфейсів. Tosca за замовчуванням генерує прості HTML-форми, але також може бути використана як проміжне програмне забезпечення для підключення до більш просунутих віджетів JavaScript і інструментальних засобів. На відміну від TurboGears 1.x, бібліотека JavaScript більше не використовується[3].
- Gearbox — інструментарій, який використовується TurboGears для управління проєктами, створенням нових і обслуговуванням додатків TurboGears, але користувач також може підключатися до Apache, Nginx, або будь-яких інших сумісних з WSGI.
До версії 2.3 також може використовуватися:
- Pylons (Контролер) — проміжне програмне забезпечення обробляє всю локальну логіку користувача, підключається до веб-сервера користувача та передає дані в Інтернет.
- Paste — командний інструментарій і веб-сервер, який використовувався замість Gearbox.
- Repoze.what — використовується для обробки авторизації. При визначенні елементів контролера користувача, які піддаються впливу мережі, предикати repoze.what визначають, хто може отримати до них доступ і за яких умов.
Шаблон плагінів
Мови шаблонів, окрім Genshi, можна використовувати через конфігураційний файл програми користувача. Плагіни, що наразі підтримуються в 2.1 це Myghty, Jinja, Mako, Cheetah, та Kajiki. Підтримка Kid в даний час не планується, оскільки Genshi практично ідентичний плагін. Цей список може змінюватися в майбутніх версіях.
Історія проєкту
TurboGears спочатку було створено у 2005 році Кевіном Дангуром як фреймворк для ще не випущеного проєкту Zesty News. Коли в кінці вересня 2005 року він опублікував його як фреймворк з відкритим вихідним кодом, за перші 3 місяці він отримав більше 30 000 завантажень скринкастингів.
У січні 2007 року Кевін Дангур пішов у відставку як керівник проєкту, Альберто Вальверде став керувати проєктом як його наступник[4], але згодом також пішов у відставку через інші особисті зобов'язання. Альберто все ще бере участь у спільноті TurboGears через свій проєкт ToscaWidgets2. Проєкт TurboGears зараз спільно керується групою з приблизно півдюжини основних розробників на чолі з Марком Раммом (ведучій розробник TurboGears 2) та Флораном Айде (менеджер релізу Turbogears 1.x).
У червні 2007 року співтовариство почало експерименти, щоб зробити TurboGears API головним компонентом та протоколом, який використовується в Pylons і з'явилося припущення, що ці два фреймворки можуть нарешті об'єднатися[5]. Тим не менш, офіційна документація TurboGears 2 стверджує, що це навряд чи відбудеться через «різні, але сумісні пріоритети»[6] обох проєктів. Pylons хотіли залишатися зосередженими на низькому рівні, розширенні дизайну, в той час як TurboGears зосередилися на наданні повного, зручного для користувача пакету. Але вони співпрацюють багато в чому так само, як Debian і Ubuntu зараз. Нова гілка 2.x мала свій перший стабільний реліз у травні 2009 року.
Станом на осінь 2008 року, TurboGears має велике та життєздатне співтовариство з понад 3000 користувачів в списку розсилки, опубліковану в листопаді 2006 року книгу, та ряд програм з відкритим кодом та патентованих TurboGears, розгорнутих у реальному світі. Розвиток прогресує в помірному, але постійному темпі, який було підживлено успішною участю проєкту в якості організації наставництва Google Summer of Code в 2008 та 2009 роках. TurboGears версії 1.1, який створено для допомоги переходу до версій 2.x, було випущено в жовтні 2009 року. Нова редакція книги перебуває в стадії оновлення відповідно до змін, які з'явилися в TurboGears версії 2.
У 2010 році проєкт трохи похитнувся. Провідних розробників відкликали через реальні проблеми у житті. Однак до кінця січня 2011 року, проєкт почав реорганізуватися і працювати над поверненням на шлях розвитку. Після декількох місяців, отримавши порядок в інфраструктурі і працюючи над проблемами кодування, TurboGears випустила нові версії (2.0.4 та 2.1.2).
У 2013 році, підтримуючи зворотну сумісність, проєкт відійшов від кодової бази Pylons, щоб підтримати Python 3, забезпечити прискорення та спростити процес інсталяції. З цими змінами було випущено версію 2.3.0 у серпні 2013 року. Також було оголошено про більш швидкий цикл випуску, який повинен привести до публікації релізів приблизно кожні 3 місяці.
Майбутнє TurboGears
Розробка TurboGears тепер орієнтована в першу чергу на нову гілку 2.x, з версією 2.3, яка зараз підтримує Python 3.
Шляхи переходу з гілки 1.x до гілки 2.x забезпечуються через версії 1.1 і 1.5, які переміщують ORM за замовчуванням та мови шаблонів до тієї, що використовується в серії 2.x. Команда TurboGears дала зрозуміти новим користувачам, що 2.x — це майбутнє, а 1.x — лише для зручності існуючих користувачів.
Протягом 2011 року провідні розробники TurboGears вели переговори з проєктом Pylons для об'єднання сил з ними та розробниками Repoze.BFG's як нового уніфікованого проєкту під назвою Pyramid. У зв'язку з проблемами зворотної сумісності цього кроку, та гарантіями TurboGears бути надійною платформою в довгостроковій перспективі, нинішня команда вирішила співпрацювати з проєктом Pylons у всьому можливому, але не на основі ядра TurboGears на Pyramid[7].
Подальша розробка, підтримка Python 3 і поліпшення швидкості відбулися в гілці 2.3, в якій було повністю переписано ядро TurboGears, зберігаючи при цьому зворотну сумісність з існуючими додатками. Починаючи з версії 2.3 TurboGears має власне ядро, і не використовує фреймворк Pylons[8].
В серії 2.3 фреймворк експериментував з так званим «мінімальним режимом», який дозволяє діяти як мікро-фреймворк де-факто зменшуючи залежності від 10-х до всього 3-х. Що дозволило позиціонувати TurboGears між Flask і Django в родині фреймворків на Python, оскільки він має на меті масштабуватися від мікро-фреймворку до повноцінного фреймворку в залежності від того який пакет використовується — TurboGears2 або tg.devtools.
Див. також
- Django (Джанго)
- Comparison of web frameworks
Джерела
- Ramm, M; Dangoor, K; Sayfan, G (November 7, 2006). Rapid Web Applications with TurboGears, Prentice Hall. ISBN 0-13-243388-5
Посилання
Примітки
- Статус проєкту.(англ.)
- Release 2.4.3 — 2020.
- TurboGears2 Cookbook — Widgets & Forms(англ.)
- TurboGears has a new leader. Kevin Dangoor. 3 січня 2007. Процитовано 12 квітня 2007.(англ.)
- Pylons Merge. Архів оригіналу за 5 липня 2012. Процитовано 27 червня 2007.(англ.)
- What’s new in TurboGears 2. Процитовано 16 вересня 2008.(англ.)
- State of the Gears. Michael Pedersen. 1 березня 2012. Процитовано 18 березня 2013.(англ.)
- TurboGears 2.3 unstable release. Alessandro Molina. 23 січня 2013. Процитовано 18 березня 2013.(англ.)