Відкрити головне меню

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

TurboGears
TgGear.png
Тип Веб-фреймворк
Розробник Kevin Dangoor (оригінальний розробник), Mark Ramm (TG2 lead)
Перший випуск вересня 2005
Стабільний випуск 2.4.0[1] (10 травня, 2019; 6 місяців тому (2019-05-10))
Версії 2.4.2 (20 жовтня 2019)[2]
Репозиторій github.com/TurboGears/tg2
Платформа Кросплатформенний
Написано на Python
Українська немає
Ліцензія MIT License, LGPL
www.turbogears.org

TurboGears побудований на архітектурі Модель-вид-контролер, англ. Model-view-controller, MVC), так само як Struts або Ruby on Rails, розроблений для того, щоб зробити швидку розробку веб-додатків у 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 (Модель) - визначає табличні структури бази даних користувача та як зв'язати їх з об'єктами 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, Jinja2, Mako, Cheetah[en], та Kajiki. Підтримка Kid в даний час не планується, оскільки Genshi практично ідентичний. Цей список може продовжувати змінюватися в майбутніх версіях.

Історія проектуРедагувати

TurboGears спочатку був створений у 2005 році Кевіном Дангуром як фреймворк для ще не випущеного проекту Zesty News. Коли в кінці вересня 2005 року він опублікував його як фреймворк з відкритим вихідним кодом, за перші 3 місяці він отримав більше 30 000 завантажень скрінкаста[en].

У січні 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 користувачів на списку розсилки TurboGears, книгу від Prentice Hall[en] опубліковану в листопаді 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[en]. У зв'язку з проблемами зворотної сумісності цього кроку, та гарантіями TurboGears бути надійною платформою в довгостроковій перспективі, нинішня команда вирішила співпрацювати з проектом Pylons у всьому можливому, але не на основі ядра TurboGears на Pyramid.[7]

Подальша розробка, підтримка Python 3 і поліпшення швидкості відбулися в гілці 2.3, яка побачила повне переписання ядра TurboGears, зберігаючи при цьому зворотну сумісність з існуючими додатками, починаючи з цього випуску 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.2 — 2019.
  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. 

Зовнішні посиланняРедагувати