Твистед матрикс
Програмер(и) | Glyph Lefkowitz |
---|---|
Прво издање | 22.10.2002.[1] |
Репозиторијум | |
Написан у | Пајтон |
Тип | Event-driven networking |
Лиценца | MIT License |
Веб-сајт | twistedmatrix |
Twisted је фрејмворк мрежног програмирања који ради под другим дешавањима у окружењу написан у Пајтону и лиценциран је под MIT Лиценцом.
Twisted пројекти разнолико подржавају TCP, UDP, SSL/TLS, IP multicast, Unix домене сокета, велики број протокола (укључујући HTTP, XMPP, NNTP, IMAP, SSH, IRC, FTP, и друге), и много више. Twisted је базиран на парадигми програмирања који зависе од дешавања у окружењеу, што значи да корисници Twisted-а пишу кратке позиве која су позвана од стране фрејмворка.
Идеје
[уреди | уреди извор]Раздвајање протокола и транспорта
[уреди | уреди извор]Twisted је дизајниран за потпуно раздвајање између логичких протокола (обично ослањајући се на семантику конекције стримовања, као што је HTTP или POP3) и слојева физичког транспорта који подржавају такве семантике стримовања (као што су фајлови, сокети, или SSL библиотеке). Конекција између логичког протокола и слоја транспорта се дешава у последњем тренутку — тачно пре него што се информација проследи у пример логичког протокола. Логички протокол је информисан примером слоја транспорта, и може га користити да шаље поруке назад и да провери идентитет повезаног корисника. Имајте на уму да је и даље могуће, у коду протокола, да се поднесе дубок упит транспортног слоја на транспортним проблемима (као што је провера SSL сертификата са стране клијента). Природно, такав протокол неће бити успешан (изузетак) ако транспортни слој не подржава такву семантику.
Одложени
[уреди | уреди извор]Центар модела апликације Twisted је концепт одложених (другде назван future). Одложени је пример дизајниране класе да прима и обрађује резултат који још није израчунат, на пример зато што је базиран на подацима удаљеног корисника. Одложени могу бити пренесени около, као било који други објекти, али не може бити затражено од њих за њихову вредност. Сваки одложени подржава ланац позива. Када одложени добију вредност, пренесена је потпрограмима на ланцу позива, што чини да сваки позив постаје унос за следећи. Одложени чине могућим да се расподеле да се оперише на резулату позива потпрограма пре него што његова вредност постане доступна. На пример, ако одложена врати стринг од даљинског корисника који има IP адресу у четвороструком формату, позив моће бити привезан да га преведе у 32-битни број. Било који корисник одложених их може сад третирати као одложену која враћа 32-битни број. Ово, и повезана могућност дефинисања "errbacks" (позиви који су названи као носиоци грешака), дозвољава коду да одреди унапред шта да уради када се деси асинхрони догађај, без заустављања да се чека на догађај. У системима без догађаја, на пример нитнама, оперативни систем позива преране и додатне организационе нитне сваки пут када је позив блокирања направљен.
Подршка нитни
[уреди | уреди извор]Twisted подржава слој апстракције поред raw нитни — коришћењем нитни као одложени извор. Тиме, одложена је одмах враћена, која ће вратити вредност када се нитна заврши. Позиви могу бити довезани који ће бити покренути у главној нитни, и тиме избегавајући потребу за комплексним решењима закључавања. Један од примера таквог коришћења, који долази од библиотеке Twisted подршке, је коришћење овог модела да се позову у базе података. Позив саме базе података се дешава у страној нитни, али анализа резултата се дешава у главној нитни.
Подршка стране петље
[уреди | уреди извор]Twisted се може интегрисати са страним дешавањима петљи, као што су GTK+, Qt и Cocoa (кроз PyObjC). Ово дозвољава коришћење Twisted-а као слој подршке умрежавања у програмима графички корисничког интерфејса, користећи се свим својим библиотекама без додавања нит-по-сокету методе, као што би нативна Пајтон библиотека користила.
Дијелови
[уреди | уреди извор]Твистед је једна од најјачих, најстабилнијих и најкоришћенијих библиотека доступних за Пајтон[тражи се извор]. Његова намјена је у почетку била да служи као бесплатан сервер за опслуживање мрежних рачунарских игара, али је настала вишенамјенска библиотека која се може подијелити на:
* 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) за рад по протоколима Инстант месинџера
Пример серверске апликације
[уреди | уреди извор]Главна особина Твистеда јесте да реализација свих серверских и клијентских протокола тежи ка томе да буде неблокирајућа. Како би се такав механизам остварио, ради се на сљедећи начин:
- Користе се неблокирајући сокети
- Сервер је асинхрон, тј. користи се систем догађаја
Највећи проблем схватања функционисања асинхроног сервера стоји у разумијевању рада објекта за контролу одлагања акција (енгл. Deferred.
Апликације које користе Twisted
[уреди | уреди извор]- BuildBot континуирано-интегрисани систем који се ослања на Twisted на клијент/сервер комуникацију.[2]
- ITA Software је направио систем резервације авио карата за компанију Air Canada која користи Twisted у широком луку.[3]
- Sage, алтернатива отвореног кода од Mathematica, Maple, Магма, MATLAB, има интерфејс базиран на вебу, Sage notebook,[4] који је покренут на Twisted серверу.[5]
- Twisted је коришћен у серверу Omegle један-на-један чет сервис[6] док није замењен са gevent због перформанси.[7]
- Епл Календарски Сервер користи Twisted,[8] као и неки интерни пројекти НАСЕ.
- Оригинална верзија друштвене мреже и микроблогинга Jaiku је користио Twisted.
- FluidDB, онлајн облак података, користи Twisted у широком луку за интерну RPC (делом у комбинацији са Thrift и AMQP), за своје интерне сервисе, и за екстерни АПИ.
- Сервис хостовања података Ubuntu One је користио Twisted.
- Tor2web, HTTP прокси за Тор користи Twisted.
- GlobaLeaks, фрејмворк whistleblowing отвореног кода користи Twisted.
- Cloudkick, веб апликација у облаку за управљање, је користио Twisted. Сада је преписан коришћењем Node.js.
- Twilio, телефонија у облаку, користи Twisted.
- TwitchTV, сервис стримовања видео игара и чет заједница, користи Twisted.[9]
- Velocity Weather, АПИ интеграција и обрада метеоролошких података је базирана на Twisted-у.[10]
- qwebirc, ИРЦ клијент на вебу користи Twisted.
- Zenoss, платформа управљања мрежом, користи Twisted
Види још
[уреди | уреди извор]- Reactor образац
- Perl Објекат Окружења, упоредив фрејмворк за Perl програмски језик
- Netty, за програмски језик Јава
- EventMachine, библиотека обраде дешавања за Ruby[11]
- Kivy, вишеплатформски GUI фрејмворк (укључујући iOS и Android)[12]
Референце
[уреди | уреди извор]- ^ Shtull-Trauring, Itamar (22. 10. 2002). „Twisted 1.0”. twisted-python (Листа адреса). Архивирано из оригинала 13. 11. 2008. г. Приступљено 14. 8. 2008.
- ^ „BuildBot Manual”. Архивирано из оригинала 12. 11. 2010. г. Приступљено 15. 11. 2015.
- ^ Page 2 - Python Slithers into Systems
- ^ Sage_(mathematics_software)#Features
- ^ Sage a Basic Overview[мртва веза]
- ^ Official Omegle Blog
- ^ Gevent Google Group
- ^ Darwin Calendar Server Official Site
- ^ Jobs - Twitch
- ^ „Velocity Weather[[Категорија:Ботовски наслови]]”. Архивирано из оригинала 18. 11. 2015. г. Приступљено 15. 11. 2015. Сукоб URL—викивеза (помоћ)
- ^ „EventMachine”. Приступљено 20. 8. 2011.
- ^ Integrating with other Frameworks — Kivy 1.9.2-dev0 documentation