TurboGears (укр. ТурбоГірз) — веб-фреймворк, написаний мовою програмування Python, що складається з декількох WSGI-компонентів: WebOb, SQLAlchemy, Genshi[en] та Repoze.

TurboGears
TgGear.png
Тип Веб-фреймворк
Розробник Kevin Dangoor (оригінальний розробник), Mark Ramm (TG2 lead)
Перший випуск вересня 2005
Стабільний випуск 2.4.0[1] (10 травня, 2019; 12 місяців тому (2019-05-10))
Версії 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 фреймворк має «мінімальний режим», який дозволяє йому працювати як мікро-фреймворк[en]. Режим мікро-фреймворку доцільно використовувати в середовищах, де не потрібен весь стек.

Компоненти TurboGearsРедагувати

TurboGears побудовано на базі численних різнорідних бібліотек та проміжного програмного забезпечення. Засоби за замовчуванням змінилися між версіями 1.x, 2.x та 2.3+, але більшість цих компонентів може бути використана у будь-якій версії фреймворку. Це дає можливість для створення великої кількості альтернативних конфігурацій. Нижче наведено основні компоненти фреймоворку.

Компоненти TurboGears 1.xРедагувати

  • SQLObject (Model) — backend даних, який може створити базу даних або інтерфейс з набором існуючих даних.
    • SQLAlchemy встановлено за замовчуванням у TurboGears з версії 1.1.
  • Kid[en] (Вид) — XHTML frontend двигун шаблонів, де всі шаблони є дійсними XHTML або XML-файлами, які зазвичай створюються таким чином, щоб була можливість відкривати ці шаблони як прості XHTML-файли для перевірки дизайну. Одночасно існує можливість вбудовувати фрагменти на мові Python в манері притаманній XML.
    • Genshi[en] наступник Kid і замінить його в якості шаблону двигуна за замовчуванням в TurboGears з версії 1.1. Це компонент майже на 100 % синтаксис-сумісний з Kid.
  • CherryPy (Controller) — проміжне програмне забезпечення, що дозволяє розробляти веб-додатки, записуючи обробники подій, які повертають дані шаблонам (у випадку TurboGears). Ті ж дані можуть бути отримані в AJAX як потік даних JSON.
  • MochiKit[en] — краща, але необов'язкова бібліотека JavaScript для TurboGears 1.x. Цей компонент призначено для того, щоб зробити програмування в JavaScript більш «пітонічним» (у відповідності до філософії та стандартів мови Python). В основному він використовується для реалізації функцій та віджетів AJAX, оскільки він надає інтерфейс для отримання потоків даних JSON асинхронним способом.

Компоненти TurboGears 2.xРедагувати

  • SQLAlchemy (Модель) — визначає як зв'язати колекції MongoDB з об'єктами Python, з якими може взаємодіяти контролер користувача.
  • Ming (Модель) — забезпечує рівень доступу до даних для MongoDB, схоже на те як SQLAlchemy визначає як зв'язати колекції MongoDB з об'єктами Python, з якими може взаємодіяти контролер користувача.
  • Genshi[en] (Вигляд) — визначає шаблони для HTML або XHTML, які буде створено користувачем. Тут користувач сам визначає інтерфейс, з яким клієнт буде взаємодіяти.
  • Repoze — Repoze.who використовується для керування безпекою (ідентифікації та аутентифікації). Користувачі можуть визначати правила авторизації, засновані на предикатах, прикріплених до контролерів, у фреймворку вже є деякі вбудовані предикати, але деякі можуть бути написані самостійно.
  • ToscaWidgets2 — основна бібліотека віджетів для створення форм і складних графічних інтерфейсів. Tosca за замовчуванням генерує прості HTML-форми, але також може бути використана як проміжне програмне забезпечення для підключення до більш просунутих віджетів JavaScript і інструментальних засобів. На відміну від TurboGears 1.x, бібліотека JavaScript більше не використовується[3].
  • Gearbox — інструментарій, який використовується TurboGears для управління проектами, створенням нових і обслуговуванням додатків TurboGears, але користувач також може підключатися до Apache, Nginx, або будь-яких інших сумісних з WSGI.

До версії 2.3 також може використовуватися:

  • Pylons (Контролер) — проміжне програмне забезпечення обробляє всю локальну логіку користувача, підключається до веб-сервера користувача та передає дані в Інтернет.
  • Paste[en] — командний інструментарій і веб-сервер, який використовувався замість Gearbox.
  • Repoze.what — використовується для обробки авторизації. При визначенні елементів контролера користувача, які піддаються впливу мережі, предикати repoze.what визначають, хто може отримати до них доступ і за яких умов.

Шаблон плагінівРедагувати

Мови шаблонів, окрім Genshi[en], можна використовувати через конфігураційний файл програми користувача. Плагіни, що наразі підтримуються в 2.1 це Myghty, Jinja, Mako, Cheetah[en], та 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.

Див. такожРедагувати

ДжерелаРедагувати

  • Ramm, M; Dangoor, K; Sayfan, G (November 7, 2006). Rapid Web Applications with TurboGears, Prentice Hall. ISBN 0-13-243388-5

ПосиланняРедагувати

ПриміткиРедагувати

  1. Статус проекту. (англ.)
  2. Release 2.4.3 — 2020.
  3. TurboGears2 Cookbook — Widgets & Forms(англ.)
  4. TurboGears has a new leader. Kevin Dangoor. 2007-01-03. Процитовано 2007-04-12. (англ.)
  5. Pylons Merge. Архів оригіналу за 2012-07-05. Процитовано 2007-06-27. (англ.)
  6. What’s new in TurboGears 2. Процитовано 2008-09-16. (англ.)
  7. State of the Gears. Michael Pedersen. 2012-03-01. Процитовано 2013-03-18. (англ.)
  8. TurboGears 2.3 unstable release. Alessandro Molina. 2013-01-23. Процитовано 2013-03-18. (англ.)