Кіріспе

TurboGears – бірнеше WSGI компоненттерінен тұратын Python веб-қосымшалар фреймворкі, мысалы WebOb, SQLAlchemy, Kajiki үлгі тілі және Repoze. TurboGears модель-көрініс-бақылаушы (MVC) архитектурасы негізінде құрылған, Struts немесе Ruby on Rails сияқты, Python-да веб-қосымшаларды жылдам жасауды және оларды қолдауды жеңілдету үшін жасалған. 2.3 нұсқасынан бастап, бұл фреймворк «минималды режимді» де ұсынады, ол толық стек қажет емес немесе қаланбаған жағдайларда микрофреймворк ретінде жұмыс істеуге мүмкіндік береді.

TurboGears бөлшектері

TurboGears көптеген әртүрлі кітапханалар мен делдалдық бағдарламалық құралдар негізінде құрылған. Стандартты құралдар 1.x, 2.x және 2.3+ нұсқалары арасында өзгеріп отырады, бірақ осы компоненттердің көпшілігін түрлі баламалы конфигурациялармен бірге пайдалануға болады. Төменде әзірлеушілермен тікелей жұмыс істейтін негізгі компоненттер келтірілген.

TurboGears 2.x компоненттері

SQLAlchemy (Model) пайдаланушының деректер қорының кестелік құрылымдарын және оларды пайдаланушының контроллері өзара әрекеттесетін Python объектілерімен қалай байланыстыруды анықтайды. Ming (Model) MongoDB-ге деректерге қол жеткізу қабатын ұсынады, SQLAlchemy сияқты MongoDB коллекцияларын Python объектілеріне пайдаланушының контроллерімен өзара әрекеттесуге болатын жолды анықтайды. Kajiki (бұрын Genshi) (View) пайдаланушы шығаратын HTML немесе XHTML үлгілерін анықтайды. Мұнда пайдаланушы клиентпен өзара әрекеттесетін интерфейсті анықтайды. Repoze – қауіпсіздікті (таныстыру және аутентификациялау) басқару үшін қолданылады. Пайдаланушылар контроллерлерге қосылған предикаттар негізінде авторизациялық ережелерді анықтай алады, фреймворк кейбір құрастырылған предикаттарды ұсынады, бірақ оларға арнайы ережелерді жазуға болады. ToscaWidgets – формалар мен күрделі графикалық интерфейстерді құру үшін негізгі виджет кітапханасы. Tosca әдетте қарапайым HTML формаларын жасайды, бірақ оны JavaScript виджеттері мен құрал жиынтықтарына қосылу үшін орталық бағдарлама ретінде де қолдануға болады. TurboGears 1.x нұсқасынан айырмашылығы, артықшылықты / интеграцияланған JavaScript кітапханасы жоқ. Gearbox – TurboGears жобаларды басқару, жаңаларын құру және TurboGears қосымшаларын іске қосу үшін қолданылатын құрал жиынтығы, бірақ пайдаланушы Apache, Nginx немесе кез-келген басқа WSGI үйлесімді веб-серверге қосыла алады. 2.3 нұсқасына дейінгі нұсқалар да қолданды: Pylons (Controller) – бұл орталық бағдарлама пайдаланушының барлық логикасын басқарады және пайдаланушының веб-серверіне қосылып, вебке деректерді ұсынады. Paster – Gearbox орнына қолданылатын командалық құрал жиынтығы және веб-сервер. Repoze.what – авторизацияны басқару үшін қолданылады. Пайдаланушының контроллер элементтерін вебке шығаратын элементтерді анықтаған кезде repoze.what предикаттары кімге және қандай шарттарда қол жетімді екенін анықтайды.

TurboGears 1.x компоненттері

SQLObject (Model) деректер қорын құра алатын немесе көптеген деректер қоры серверлеріндегі қолданыстағы деректермен байланыс құратын деректердің артқы бөлігі. SQLAlchemy TurboGears >= 1.1 нұсқасында стандартты болады. Kid (View) – XHTML интерфейсін жасау үшін үлгілерді өңдейтін құрал, ондағы барлық үлгілер жарамды XHTML немесе XML файлдары болып табылады. Әдетте, бұл үлгілерді қарапайым XHTML файлдары ретінде ашуға мүмкіндік беретіндей етіп жасалады, осылайша дизайнды тексеруге болады. Сонымен қатар, Python кодтарын XML сияқты форматта енгізуге мүмкіндік береді. Genshi – Kid-тің ізбасары және TurboGears >= 1.1 нұсқасында стандартты үлгілерді өңдейтін құрал ретінде оны алмастырады. Genshi және Kid синтаксисі шамамен 100% үйлеседі. CherryPy (Controller) – веб-қосымшаларды оқиғаларды басқарушыларды жазу арқылы бағдарламалауға мүмкіндік беретін делдалдық бағдарламалық құрал (TurboGears жағдайында бұл деректерді үлгілерге қайтару үшін қолданылады). Осы деректерді Ajax арқылы JSON дерек ағыны ретінде де алуға болады. MochiKit – TurboGears 1.x үшін ұсынылатын, бірақ міндетті емес JavaScript кітапханасы. Ол JavaScript-те бағдарламалауды Python сияқты ыңғайлы ету үшін жасалған. Көбінесе Ajax мүмкіндіктерін және виджеттерді іске асыру үшін қолданылады, себебі ол деректерді асинхронды түрде JSON ағыны ретінде алуға интерфейс ұсынады.

Үлгі плагиндері

Genshi-ден басқа үлгі тілдерін пайдаланушының қолданба конфигурация файлы арқылы қолдануға болады. 2.1 нұсқасында қазіргі уақытта қолдау көрсетілетін плагиндер: Myghty, Jinja2, Mako, Cheetah және Kajiki. Genshi-ге өте ұқсас болғандықтан Kid қолдауы қазіргі уақытта жоспарланбаған. Бұл тізім болашақ нұсқаларда өзгертілуі мүмкін.

Жобаның тарихы

TurboGears бастапқыда 2005 жылы Кевин Дангоор әзірге шығарылмаған Zesty News өнімінің негізі ретінде құрылды. 2005 жылдың қыркүйек айының соңында ол оны ашық кодтық база ретінде жариялағанда, алғашқы 3 айда 30 000-нан астам экрандық көрсетілімдер жүктелді. 2007 жылдың қаңтарында Кевин Дангоор жоба жетекшісі қызметінен кетті, ал Альберто Вальверде оның орнын басты, бірақ кейін жеке мәселелерге байланысты қызметтен бас тартты. Альберто әлі де өзінің ToscaWidgets жобасы арқылы TurboGears қауымдастығының жұмысына қатысып жүр. Қазіргі уақытта TurboGears жобасын Mark Ramm (TurboGears 2 дамуын басқаратын жетекші) және Florent Aide (Turbogears 1.x шығару менеджері) басшылығымен шамамен алты негізгі әзірлеуші бірлесіп басқарады. 2007 жылдың маусым айында қауымдастық TurboGears API-ді Pylons-та қолданылатын компоненттер мен протоколдардың үстіне орнату бойынша тәжірибелер жүргізді, сондай-ақ екі шеңбердің бірігу мүмкіндігі де талқыланды. Дегенмен, TurboGears 2 ресми құжаттамасында екі жобаның «әр түрлі, бірақ үйлесімді басымдықтары» болғандықтан, мұндай бірігудің болуы күмәнді екені айтылды. Pylons төмен деңгейдегі, кеңейтілмелі дизайнға назар аударуды қаласа, TurboGears толыққанды, пайдаланушыға ыңғайлы пакет ұсынуға баса назар аударды. Сондықтан екеуі Debian мен Ubuntu сияқты үйлесімді түрде жұмыс істейді. Жаңа 2.x тармағының тұрақты нұсқасы 2009 жылдың мамыр айында жарық көрді. 2008 жылдың күзінен бастап TurboGears үлкен және белсенді қауымдастыққа ие, TurboGears пошталық тізімінде 3000-нан астам пайдаланушы тіркелген, Prentice Hall баспасынан 2006 жылдың қараша айында кітап жарық көрді, сонымен қатар нақты қолданысқа енгізілген көптеген ашық кодтық және коммерциялық TurboGears қолданбалары бар. Даму орташа, бірақ тұрақты қарқынмен жүріп жатыр, ал 2008 және 2009 жылдары жобаның Google Summer of Code бағдарламасына сәтті қатысуы оны одан әрі жандандырды. 2009 жылдың қазан айында TurboGears 1.1 нұсқасы шығарылды, ол ескі сайттардың 2.x нұсқасына көшуіне көмектесуге бағытталған. Кітаптың жаңа редакциясы да дайындалып жатыр, ол TurboGears 2 енгізген өзгерістерге сәйкес жаңартылады. 2010 жылы жобада кейбір қиындықтар туды, басты әзірлеушілер жеке мәселелерге байланысты жұмыстан уақытша шықты. Алайда, 2011 жылдың қаңтар айының соңына қарай жоба қайта ұйымдастырылып, дамуды жаңару бағытында жұмыс бастады. Бірнеше ай бойы инфрақұрылымды жақсарту және кодтау мәселелерін шешкеннен кейін TurboGears жаңа нұсқаларын (2.0.4 және 2.1.2) шығара алды. 2013 жылы, артқа қарай үйлесімділікті сақтай отырып, жоба Python 3 қолдауын қамтамасыз ету, жылдамдықты арттыру және орнату процесін жеңілдету үшін Pylons кодтық базасынан бас тартты. Бұл 2013 жылдың тамызында 2.3.0 нұсқасының шығуына әкелді. Сонымен қатар, шамамен 3 ай сайын жаңа нұсқалар шығарылатындығы туралы хабарлама тарады.

Турбожиектердің болашағы

TurboGears-тің дамуы қазір негізінен жаңа 2.x тармағына бағытталған, ал 2.3 нұсқасы Python 3 қолдауын негізгі бағыт ретінде қабылдады. 1.x тармағынан 2.x тармағына көшуге 1.1 және 1.5 шығарылымдары арқылы мүмкіндік берілді, олар 2.x сериясында қолданылатын әдепкі ORM және үлгілік тілдерді өзгертіп, үйлесімділікті қамтамасыз етті. TurboGears командасы жаңа пайдаланушыларға 2.x – болашақ екенін, ал 1.x қолданыстағы пайдаланушылардың ыңғайлылығы үшін ғана сақталып қалғанын түсіндірді. 2011 жылы TurboGears-тің жетекші әзірлеушілері Pylons жобасымен, сондай-ақ Repoze және BFG әзірлеушілерімен бірігіп, «Пирамида» деп аталатын жаңа бірыңғай жоба құру мүмкіндігін талқылады. Артқа қарай үйлесімділік мәселелері мен TurboGears ұзақ мерзімде сенімді платформа болып қалатынына кепілдік беру үшін, ағымдағы команда TurboGears өзегін «Пирамида» негізінде құрмай, Pylons жобасымен барлық мүмкін болатын ынтымақтастыққа түсуге шешім қабылдады. Болашақ даму, Python 3 қолдауы және жылдамдықты жақсарту 2.3 тармағында жүзеге асты, онда TurboGears өзегі толыққанды қайта жазылды, бірақ бұрынғы қолданбалармен үйлесімділігі сақталды. Осы шығарылымнан бастап TurboGears Pylons негізінде емес, өз өзегіне ие болды. 2.3 сериясы кезінде фреймворк «минималды режим» деп аталатын тәжірибелік режимді сынап көрді, бұл оны де-факто микрофреймворк ретінде жұмыс істеуге және тәуелділіктерді оннан тек 3-ке дейін азайтуға мүмкіндік берді, соның арқасында TurboGears Flask пен Django арасындағы орнын иеленді. Бұл фреймворктің мақсаты – TurboGears2 немесе tg.devtools пакетін пайдалану арқылы микрофреймворк ретінде бастап, толыққанды фреймворкке дейін кеңейтуге қабілетті болу. 2.4 нұсқасынан бастап фреймворк модульдік компоненттерге негізделген архитектураға көшті, бұл пайдаланушыларға компоненттерді өз қалауынша қосуға және ауыстыруға мүмкіндік береді, осылайша TurboGears пайдаланушылардың қажеттіліктеріне сай келетін веб-фреймворк болу миссиясын іске асырады.