Твистед матрикс

Из Википедије, слободне енциклопедије

Твистед је програмско окружење вођено догађајима, за програмирање мрежних апликација у програмском језику Пајтон. Твистед, као и остале пројекте везане са њим, одржава група програмера за отворени код под заједничким именом „Твистед матрикс лабораторије“ енгл. Twisted Matrix Laboratories. Цијело окружење је урађено у Пајтону, и користи уграђени модул за рад са сокетима. Твистед подржава TCP, UDP и јуникс сокете, а од протокола вишег нивоа подржава SSL, IRC, HTTP, SMTP, DNS, и са клијентске и серверске стране[1].

Дијелови[уреди]

Твистед је једна од најјачих, најстабилнијих и најкоришћенијих библиотека доступних за Пајтон[тражи се извор од 09. 2009.]. Његова намјена је у почетку била да служи као бесплатан сервер за опслуживање мрежних рачунарских игара, али је настала вишенамјенска библиотека која се може подијелити на:

* twisted.cred, опционални систем за аутентификацију
* twisted.enterprise, асинхрони адаптер за подршку Пајтона за DB 2.0
* twisted.internet, главна петља
* twisted.manhole, сервис за отклањање грешака
* twisted.protocols, колекција популарних протокола (помагачи)
* twisted.python, скуп програмерских апстракција
* twisted.spread, подршка за серијализацију и удаљено управљање
* twisted.trial, окружење за тестирање јединица
* twisted.web, моћан веб-сервер, упарљив са пројектима Вовен и Невов
* twisted.conch, SSL 2.0, написан за потребе Пајтона
* twisted.mail, сервер за електронску пошту (упарљив са пројектима за филтрирање поште)
* twisted.words, одвојен пројекат (попут посљедња 3) за рад по протоколима Инстант месинџера

Примјер серверске апликације[уреди]

Главна особина Твистеда јесте да реализација свих серверских и клијентских протокола тежи ка томе да буде неблокирајућа. Како би се такав механизам остварио, ради се на сљедећи начин:

  1. Користе се неблокирајући сокети
  2. Сервер је асинхрон, тј. користи се систем догађаја

Највећи проблем схватања функционисања асинхроног сервера стоји у разумијевању рада објекта за контролу одлагања акција (енгл. Deferred.

Филозофија Твистеда[уреди]

Филозофија Твистеда се базира на сљедећем: сервер ради по принципу асинхроних догађаја (а не блокирајућих операција). Да се цио систем не би блокирао, све позване функције се извршавају по систему одлагања извршења, а читање и писање у сокете се ради када су ресурси расположиви, да би се избјегло чекање. Дакле, резултати враћају објекат задужен за одлагање извршавања кода који је познат и „оном ко тражи услугу“ и „оном ко нуди услугу“. Када неко затражи услугу (позове функцију), он смјеста добија објекат за одлагање, који ће активирати „повратни позив“ чим га о томе обавијести „онај ко нуди услугу“.

Филозофија Твистеда је да је коришћење нити у програмирању мрежних апликација сувишно. Твистед је наводно заснован на концепту коначног апарата, тј. апарата који се увијек налази у одређеном „стању“ на основу којег одлучује шта се чини даље, али је то на одређени начин противурјечно. Наиме, неблокирајући сервер може бити једне од три врсте — вишенитни, вођен догађајима и коначни апарат. Прве двије врсте су веома сличне, и једина разлика је у томе што се у системима друге врсте сваки догађај извршава у засебној нити. Твистед декларативно ради по принципу коначног апарата, али се при раду стално користе објекти за одлагање извршења, који изазивају догађаје при завршетку одређене операције. Ово се оправдава тиме што се о тим догађајима брине сам систем, а не програмер, те су за њега догађаји транспарентни и цио систем се понаша као коначни апарат. Друга противурјечност која наизглед постоји се тиче начина извршавања блокирајућих операција, које се извршавају у засебној нити. Опет, ово се имплементира на транспарентан начин тако да корисник нема пријеке потребе да се бави нитима. Наравно, програмерима се ставља могућност да на лак и остатку сервера разумљив начин употпуни свој пројекат вишенитним дизајном.

Референце[уреди]

  1. ^ Званична страница, увод, Приступљено 25. 4. 2013.

Спољашње везе[уреди]