Tvisted matriks

S Vikipedije, slobodne enciklopedije
Twisted
Logo
Logo
Programer(i)Glyph Lefkowitz
Prvo izdanje22.10.2002.[1]
Repozitorijum Uredi na Vikipodacima
Napisan uPajton
TipEvent-driven networking
LicencaMIT License
Veb-sajttwistedmatrix.com

Twisted je frejmvork mrežnog programiranja koji radi pod drugim dešavanjima u okruženju napisan u Pajtonu i licenciran je pod MIT Licencom.

Twisted projekti raznoliko podržavaju TCP, UDP, SSL/TLS, IP multicast, Unix domene soketa, veliki broj protokola (uključujući HTTP, XMPP, NNTP, IMAP, SSH, IRC, FTP, i druge), i mnogo više. Twisted je baziran na paradigmi programiranja koji zavise od dešavanja u okruženjeu, što znači da korisnici Twisted-a pišu kratke pozive koja su pozvana od strane frejmvorka.

Ideje[uredi | uredi izvor]

Razdvajanje protokola i transporta[uredi | uredi izvor]

Twisted je dizajniran za potpuno razdvajanje između logičkih protokola (obično oslanjajući se na semantiku konekcije strimovanja, kao što je HTTP ili POP3) i slojeva fizičkog transporta koji podržavaju takve semantike strimovanja (kao što su fajlovi, soketi, ili SSL biblioteke). Konekcija između logičkog protokola i sloja transporta se dešava u poslednjem trenutku — tačno pre nego što se informacija prosledi u primer logičkog protokola. Logički protokol je informisan primerom sloja transporta, i može ga koristiti da šalje poruke nazad i da proveri identitet povezanog korisnika. Imajte na umu da je i dalje moguće, u kodu protokola, da se podnese dubok upit transportnog sloja na transportnim problemima (kao što je provera SSL sertifikata sa strane klijenta). Prirodno, takav protokol neće biti uspešan (izuzetak) ako transportni sloj ne podržava takvu semantiku.

Odloženi[uredi | uredi izvor]

Centar modela aplikacije Twisted je koncept odloženih (drugde nazvan future). Odloženi je primer dizajnirane klase da prima i obrađuje rezultat koji još nije izračunat, na primer zato što je baziran na podacima udaljenog korisnika. Odloženi mogu biti preneseni okolo, kao bilo koji drugi objekti, ali ne može biti zatraženo od njih za njihovu vrednost. Svaki odloženi podržava lanac poziva. Kada odloženi dobiju vrednost, prenesena je potprogramima na lancu poziva, što čini da svaki poziv postaje unos za sledeći. Odloženi čine mogućim da se raspodele da se operiše na rezulatu poziva potprograma pre nego što njegova vrednost postane dostupna. Na primer, ako odložena vrati string od daljinskog korisnika koji ima IP adresu u četvorostrukom formatu, poziv moće biti privezan da ga prevede u 32-bitni broj. Bilo koji korisnik odloženih ih može sad tretirati kao odloženu koja vraća 32-bitni broj. Ovo, i povezana mogućnost definisanja "errbacks" (pozivi koji su nazvani kao nosioci grešaka), dozvoljava kodu da odredi unapred šta da uradi kada se desi asinhroni događaj, bez zaustavljanja da se čeka na događaj. U sistemima bez događaja, na primer nitnama, operativni sistem poziva prerane i dodatne organizacione nitne svaki put kada je poziv blokiranja napravljen.

Podrška nitni[uredi | uredi izvor]

Twisted podržava sloj apstrakcije pored raw nitni — korišćenjem nitni kao odloženi izvor. Time, odložena je odmah vraćena, koja će vratiti vrednost kada se nitna završi. Pozivi mogu biti dovezani koji će biti pokrenuti u glavnoj nitni, i time izbegavajući potrebu za kompleksnim rešenjima zaključavanja. Jedan od primera takvog korišćenja, koji dolazi od biblioteke Twisted podrške, je korišćenje ovog modela da se pozovu u baze podataka. Poziv same baze podataka se dešava u stranoj nitni, ali analiza rezultata se dešava u glavnoj nitni.

Podrška strane petlje[uredi | uredi izvor]

Twisted se može integrisati sa stranim dešavanjima petlji, kao što su GTK+, Qt i Cocoa (kroz PyObjC). Ovo dozvoljava korišćenje Twisted-a kao sloj podrške umrežavanja u programima grafički korisničkog interfejsa, koristeći se svim svojim bibliotekama bez dodavanja nit-po-soketu metode, kao što bi nativna Pajton biblioteka koristila.

Dijelovi[uredi | uredi izvor]

Tvisted je jedna od najjačih, najstabilnijih i najkorišćenijih biblioteka dostupnih za Pajton[traži se izvor]. Njegova namjena je u početku bila da služi kao besplatan server za opsluživanje mrežnih računarskih igara, ali je nastala višenamjenska biblioteka koja se može podijeliti na:

* twisted.cred, opcionalni sistem za autentifikaciju
* twisted.enterprise, asinhroni adapter za podršku Pajtona za DB 2.0
* twisted.internet, glavna petlja
* twisted.manhole, servis za otklanjanje grešaka
* twisted.protocols, kolekcija popularnih protokola (pomagači)
* twisted.python, skup programerskih apstrakcija
* twisted.spread, podrška za serijalizaciju i udaljeno upravljanje
* twisted.trial, okruženje za testiranje jedinica
* twisted.web, moćan veb-server, uparljiv sa projektima Voven i Nevov
* twisted.conch, SSL 2.0, napisan za potrebe Pajtona
* twisted.mail, server za elektronsku poštu (uparljiv sa projektima za filtriranje pošte)
* twisted.words, odvojen projekat (poput posljednja 3) za rad po protokolima Instant mesindžera

Primer serverske aplikacije[uredi | uredi izvor]

Glavna osobina Tvisteda jeste da realizacija svih serverskih i klijentskih protokola teži ka tome da bude neblokirajuća. Kako bi se takav mehanizam ostvario, radi se na sljedeći način:

  1. Koriste se neblokirajući soketi
  2. Server je asinhron, tj. koristi se sistem događaja

Najveći problem shvatanja funkcionisanja asinhronog servera stoji u razumijevanju rada objekta za kontrolu odlaganja akcija (engl. Deferred.

Aplikacije koje koriste Twisted[uredi | uredi izvor]

  • BuildBot kontinuirano-integrisani sistem koji se oslanja na Twisted na klijent/server komunikaciju.[2]
  • ITA Software je napravio sistem rezervacije avio karata za kompaniju Air Canada koja koristi Twisted u širokom luku.[3]
  • Sage, alternativa otvorenog koda od Mathematica, Maple, Magma, MATLAB, ima interfejs baziran na vebu, Sage notebook,[4] koji je pokrenut na Twisted serveru.[5]
  • Twisted je korišćen u serveru Omegle jedan-na-jedan čet servis[6] dok nije zamenjen sa gevent zbog performansi.[7]
  • Epl Kalendarski Server koristi Twisted,[8] kao i neki interni projekti NASE.
  • Originalna verzija društvene mreže i mikrobloginga Jaiku je koristio Twisted.
  • FluidDB, onlajn oblak podataka, koristi Twisted u širokom luku za internu RPC (delom u kombinaciji sa Thrift i AMQP), za svoje interne servise, i za eksterni API.
  • Servis hostovanja podataka Ubuntu One je koristio Twisted.
  • Tor2web, HTTP proksi za Tor koristi Twisted.
  • GlobaLeaks, frejmvork whistleblowing otvorenog koda koristi Twisted.
  • Cloudkick, veb aplikacija u oblaku za upravljanje, je koristio Twisted. Sada je prepisan korišćenjem Node.js.
  • Twilio, telefonija u oblaku, koristi Twisted.
  • TwitchTV, servis strimovanja video igara i čet zajednica, koristi Twisted.[9]
  • Velocity Weather, API integracija i obrada meteoroloških podataka je bazirana na Twisted-u.[10]
  • qwebirc, IRC klijent na vebu koristi Twisted.
  • Zenoss, platforma upravljanja mrežom, koristi Twisted

Vidi još[uredi | uredi izvor]

Reference[uredi | uredi izvor]

  1. ^ Shtull-Trauring, Itamar (22. 10. 2002). „Twisted 1.0”. twisted-python (Lista adresa). Arhivirano iz originala 13. 11. 2008. g. Pristupljeno 14. 8. 2008. 
  2. ^ „BuildBot Manual”. Arhivirano iz originala 12. 11. 2010. g. Pristupljeno 15. 11. 2015. 
  3. ^ Page 2 - Python Slithers into Systems
  4. ^ Sage_(mathematics_software)#Features
  5. ^ Sage a Basic Overview[mrtva veza]
  6. ^ Official Omegle Blog
  7. ^ Gevent Google Group
  8. ^ Darwin Calendar Server Official Site
  9. ^ Jobs - Twitch
  10. ^ „Velocity Weather[[Kategorija:Botovski naslovi]]”. Arhivirano iz originala 18. 11. 2015. g. Pristupljeno 15. 11. 2015.  Sukob URL—vikiveza (pomoć)
  11. ^ „EventMachine”. Pristupljeno 20. 8. 2011. 
  12. ^ Integrating with other Frameworks — Kivy 1.9.2-dev0 documentation

Spoljašnje veze[uredi | uredi izvor]