• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Twcrashcourse
 

Twcrashcourse

on

  • 351 views

Simple presentation on Twisted fundamentals.

Simple presentation on Twisted fundamentals.

Originally part 4 of a 4 lectures seminar for the Networking class of the Computer Science course at the University of Parma

Statistics

Views

Total Views
351
Views on SlideShare
348
Embed Views
3

Actions

Likes
0
Downloads
0
Comments
0

1 Embed 3

http://www.linkedin.com 3

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n

Twcrashcourse Twcrashcourse Presentation Transcript

  • Twisted CrashCourseEnrico Franchi
  • Cosa fa per la maggior parte del tempoun’applicazione di rete?
  • Cosa fa per la maggior parte del tempoun’applicazione di rete? ATTENDE!
  • Modelli Pratici
  • Modelli Pratici Modello a Processi fork(), ... Buona protezione, buona efficienza, non sempre facilissimo
  • Modelli Pratici Modello a Processi fork(), ... Buona protezione, buona efficienza, non sempre facilissimo Modello a Thread pthreads, Java Nessuna protezione (a meno che Queues), efficienza non buona (su macchine multicore), parecchio complesso
  • Modelli Pratici Modello a Processi Modello ad Eventi fork(), ... “select”, Twisted, ACE, Buona protezione, buona GUI (ma non per I/O) efficienza, non sempre Protezione totale facilissimo Ottima efficienza (a Modello a Thread patto...) pthreads, Java Più complesso da capire Nessuna protezione (a meno la prima volta, semplifica il che Queues), efficienza non lavoro dopo buona (su macchine Prima di Twisted, n-mila multicore), parecchio complesso interfacce
  • Concetti BaseLa logica dietro a Twisted non è dissimileda quella dietro le GUI Reactor (run-loop) Eventi di I/O invece che “bottone premuto” Ma in effetti si integra perfettamente con le GUI (Qt, Windows, Cocoa, Tk, ...)Quando accade x, tu fai f(x), se questo vamale fai error(x).
  • TwistedCore Twisted Protocolli TCP HTTP UDP SMTP SSL POP3 Multicast IMAPImplementa: IRC Client FTP Server SSH Modelli di autenticazione ...
  • ReactorNucleo di un programma Twisted: Il programma descrive come reagire agli eventi Quando accade qualcosa, il reactor “reagisce”Molti reactor (a seconda della piattaforma) select, poll, epoll, kqueues, win-stuff
  • DeferredUn oggetto deferred è un “segnaposto”che sta per qualcosa di cui nonconosciamo ancora il valore. Agganciamo callback ed errback Quando abbiamo il valore, le callback (o le errback) sono chiamateIl concetto di deferred è completamentecentrale a Twisted
  • Implementare...Tipicamente per implementare un protocollodefiniamo: Un Protocol, che descrive il protocollo Una Factory, che genera un nuovo Protocol per ogni clientNon c’è problema di deadlock/race conditions:è tutto sequenziale asincronoFortunatamente la maggior parte dei protocollisono stati implementati: poche linee di codicecreano un servente di classe enterprise
  • Buttiamoci... Cominciamo da un esempio “facile facile” Scriviamo un semplice client e server SMTP Last but not least (se il tempo lo permette): Sistema di Autenticazione/Validazione Perspective Broker (RPC “Python Way”) Condivisione diretta di oggetti! XMLRPC a gogo.
  • 1. Credentials list of interfaces 2. Credentials Credentials 3. Avatar ID Checker Portal 4. Avatar ID list of interfaces Realm6. Avatar matching 5. Avatar ID interface matching interfaces Autenticazione
  • Entità (1) Credentials Informazioni utilizzate per identificare e autenticare un utente (es. username e password) Avatar Un oggetto sul server che “fa cose per conto dell’utente” Avatar ID Una chiave per ottenere un avatar
  • Entità (2) Credentials Checker Prende delle credenziali e le verifica. Ritorna un Avatar ID Realm Da accesso a tutti gli avatar: prende un avatar id e restituisce un avatar Portal Unisce un realm con un insieme di credential checkers