TurboGears

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

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

Компоненти 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.

Див. також

Джерела

  • 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. 3 січня 2007. Процитовано 12 квітня 2007.(англ.)
  5. Pylons Merge. Архів оригіналу за 5 липня 2012. Процитовано 27 червня 2007.(англ.)
  6. What’s new in TurboGears 2. Процитовано 16 вересня 2008.(англ.)
  7. State of the Gears. Michael Pedersen. 1 березня 2012. Процитовано 18 березня 2013.(англ.)
  8. TurboGears 2.3 unstable release. Alessandro Molina. 23 січня 2013. Процитовано 18 березня 2013.(англ.)
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.