SlideShare a Scribd company logo
1 of 17
Twisted Crash
Course
Enrico Franchi
Cosa fa per la maggior
    parte del tempo
un’applicazione di rete?
Cosa fa per la maggior
    parte del tempo
un’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 Base
La logica dietro a Twisted non è dissimile
da 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 va
male fai error(x).
Twisted
Core Twisted                 Protocolli
 TCP                           HTTP
 UDP                           SMTP
 SSL                           POP3
 Multicast                     IMAP
Implementa:                    IRC
 Client                        FTP
 Server                        SSH
 Modelli di autenticazione     ...
Reactor
Nucleo 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
Deferred
Un oggetto deferred è un “segnaposto”
che sta per qualcosa di cui non
conosciamo ancora il valore.
  Agganciamo callback ed errback
  Quando abbiamo il valore, le callback (o le
  errback) sono chiamate
Il concetto di deferred è completamente
centrale a Twisted
Implementare...
Tipicamente per implementare un protocollo
definiamo:
  Un Protocol, che descrive il protocollo
  Una Factory, che genera un nuovo Protocol per
  ogni client
Non c’è problema di deadlock/race conditions:
è tutto sequenziale asincrono
Fortunatamente la maggior parte dei protocolli
sono stati implementati: poche linee di codice
creano 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

                                                       Realm


6. 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

More Related Content

Viewers also liked

Pycrashcourse4.0 pdfjam
Pycrashcourse4.0 pdfjamPycrashcourse4.0 pdfjam
Pycrashcourse4.0 pdfjamrik0
 
Social Network Analysis
Social Network AnalysisSocial Network Analysis
Social Network Analysisrik0
 
Clojure Interoperability
Clojure InteroperabilityClojure Interoperability
Clojure Interoperabilityrik0
 
Game theory
Game theoryGame theory
Game theoryrik0
 
Pydiomatic
PydiomaticPydiomatic
Pydiomaticrik0
 
Pyimproved again
Pyimproved againPyimproved again
Pyimproved againrik0
 
Social network analysis part ii
Social network analysis part iiSocial network analysis part ii
Social network analysis part iiTHomas Plotkowiak
 
PyCon APAC 2014 - Social Network Analysis Using Python (David Chiu)
PyCon APAC 2014 - Social Network Analysis Using Python (David Chiu)PyCon APAC 2014 - Social Network Analysis Using Python (David Chiu)
PyCon APAC 2014 - Social Network Analysis Using Python (David Chiu)David Chiu
 
Pycrashcourse3.1
Pycrashcourse3.1Pycrashcourse3.1
Pycrashcourse3.1rik0
 
Pycrashcourse3.0
Pycrashcourse3.0Pycrashcourse3.0
Pycrashcourse3.0rik0
 
Pycrashcourse2.0
Pycrashcourse2.0Pycrashcourse2.0
Pycrashcourse2.0rik0
 
Python intro
Python introPython intro
Python introrik0
 
Social Network Analysis (SNA) and its implications for knowledge discovery in...
Social Network Analysis (SNA) and its implications for knowledge discovery in...Social Network Analysis (SNA) and its implications for knowledge discovery in...
Social Network Analysis (SNA) and its implications for knowledge discovery in...ACMBangalore
 
Social choice
Social choiceSocial choice
Social choicerik0
 
Social Network Analysis in Two Parts
Social Network Analysis in Two PartsSocial Network Analysis in Two Parts
Social Network Analysis in Two PartsPatti Anklam
 
Matemática das redes - parte II
Matemática das redes - parte IIMatemática das redes - parte II
Matemática das redes - parte IIDalton Martins
 
Matemática das Redes - Parte I
Matemática das Redes - Parte IMatemática das Redes - Parte I
Matemática das Redes - Parte IDalton Martins
 
Complex and Social Network Analysis in Python
Complex and Social Network Analysis in PythonComplex and Social Network Analysis in Python
Complex and Social Network Analysis in Pythonrik0
 
Introdução à Teoria dos Grafos e Análise de Redes Sociais
Introdução à Teoria dos Grafos e Análise de Redes SociaisIntrodução à Teoria dos Grafos e Análise de Redes Sociais
Introdução à Teoria dos Grafos e Análise de Redes Sociaisfabiomalini
 

Viewers also liked (20)

Pycrashcourse4.0 pdfjam
Pycrashcourse4.0 pdfjamPycrashcourse4.0 pdfjam
Pycrashcourse4.0 pdfjam
 
Social Network Analysis
Social Network AnalysisSocial Network Analysis
Social Network Analysis
 
Clojure Interoperability
Clojure InteroperabilityClojure Interoperability
Clojure Interoperability
 
Game theory
Game theoryGame theory
Game theory
 
Pydiomatic
PydiomaticPydiomatic
Pydiomatic
 
Redes e sistemas complexos
Redes e sistemas complexosRedes e sistemas complexos
Redes e sistemas complexos
 
Pyimproved again
Pyimproved againPyimproved again
Pyimproved again
 
Social network analysis part ii
Social network analysis part iiSocial network analysis part ii
Social network analysis part ii
 
PyCon APAC 2014 - Social Network Analysis Using Python (David Chiu)
PyCon APAC 2014 - Social Network Analysis Using Python (David Chiu)PyCon APAC 2014 - Social Network Analysis Using Python (David Chiu)
PyCon APAC 2014 - Social Network Analysis Using Python (David Chiu)
 
Pycrashcourse3.1
Pycrashcourse3.1Pycrashcourse3.1
Pycrashcourse3.1
 
Pycrashcourse3.0
Pycrashcourse3.0Pycrashcourse3.0
Pycrashcourse3.0
 
Pycrashcourse2.0
Pycrashcourse2.0Pycrashcourse2.0
Pycrashcourse2.0
 
Python intro
Python introPython intro
Python intro
 
Social Network Analysis (SNA) and its implications for knowledge discovery in...
Social Network Analysis (SNA) and its implications for knowledge discovery in...Social Network Analysis (SNA) and its implications for knowledge discovery in...
Social Network Analysis (SNA) and its implications for knowledge discovery in...
 
Social choice
Social choiceSocial choice
Social choice
 
Social Network Analysis in Two Parts
Social Network Analysis in Two PartsSocial Network Analysis in Two Parts
Social Network Analysis in Two Parts
 
Matemática das redes - parte II
Matemática das redes - parte IIMatemática das redes - parte II
Matemática das redes - parte II
 
Matemática das Redes - Parte I
Matemática das Redes - Parte IMatemática das Redes - Parte I
Matemática das Redes - Parte I
 
Complex and Social Network Analysis in Python
Complex and Social Network Analysis in PythonComplex and Social Network Analysis in Python
Complex and Social Network Analysis in Python
 
Introdução à Teoria dos Grafos e Análise de Redes Sociais
Introdução à Teoria dos Grafos e Análise de Redes SociaisIntrodução à Teoria dos Grafos e Análise de Redes Sociais
Introdução à Teoria dos Grafos e Análise de Redes Sociais
 

Similar to Twcrashcourse

Introduzione a Node.js
Introduzione a Node.jsIntroduzione a Node.js
Introduzione a Node.jsMichele Capra
 
Programma il futuro : una scelta Open Source
Programma il futuro : una scelta Open SourceProgramma il futuro : una scelta Open Source
Programma il futuro : una scelta Open SourceNaLUG
 
High specialized vm on open stack cloud
High specialized vm on open stack cloudHigh specialized vm on open stack cloud
High specialized vm on open stack cloudGabriele Baldoni
 
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open sourceLinux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open sourceMario Rossano
 
Programma il futuro: una scelta open source
Programma il futuro: una scelta open sourceProgramma il futuro: una scelta open source
Programma il futuro: una scelta open sourceMarco Ferrigno
 
Simulazione di un Penetration Test
Simulazione di un Penetration TestSimulazione di un Penetration Test
Simulazione di un Penetration TestSalvatore Lentini
 
Deep diving C# 4 (Raffaele Rialdi)
Deep diving C# 4 (Raffaele Rialdi)Deep diving C# 4 (Raffaele Rialdi)
Deep diving C# 4 (Raffaele Rialdi)DotNetMarche
 
Sistemi Context-aware: Esercitazione 3
Sistemi Context-aware: Esercitazione 3Sistemi Context-aware: Esercitazione 3
Sistemi Context-aware: Esercitazione 3Marco Loregian
 
Primo Incontro Con Scala
Primo Incontro Con ScalaPrimo Incontro Con Scala
Primo Incontro Con ScalaFranco Lombardo
 
Microsoft Azure per l'IT Pro
Microsoft Azure per l'IT ProMicrosoft Azure per l'IT Pro
Microsoft Azure per l'IT ProMarco Parenzan
 
SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!
SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!
SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!DotNetCampus
 
Signal r to the-max
Signal r to the-maxSignal r to the-max
Signal r to the-maxDotNetCampus
 
Del furia signalr-to-the-max
Del furia   signalr-to-the-maxDel furia   signalr-to-the-max
Del furia signalr-to-the-maxDotNetCampus
 
Backdoor Coding: Analisi di una semplice backdoor e prime applicazioni
Backdoor Coding: Analisi di una semplice backdoor e prime applicazioniBackdoor Coding: Analisi di una semplice backdoor e prime applicazioni
Backdoor Coding: Analisi di una semplice backdoor e prime applicazioniSalvatore Lentini
 
Introduzione a Workflow Foundation
Introduzione a Workflow FoundationIntroduzione a Workflow Foundation
Introduzione a Workflow FoundationDotNetMarche
 

Similar to Twcrashcourse (20)

Introduzione a Node.js
Introduzione a Node.jsIntroduzione a Node.js
Introduzione a Node.js
 
Introduzione a node.js
Introduzione a node.jsIntroduzione a node.js
Introduzione a node.js
 
Il web 2.0
Il web 2.0Il web 2.0
Il web 2.0
 
Programma il futuro : una scelta Open Source
Programma il futuro : una scelta Open SourceProgramma il futuro : una scelta Open Source
Programma il futuro : una scelta Open Source
 
High specialized vm on open stack cloud
High specialized vm on open stack cloudHigh specialized vm on open stack cloud
High specialized vm on open stack cloud
 
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open sourceLinux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
 
Programma il futuro: una scelta open source
Programma il futuro: una scelta open sourceProgramma il futuro: una scelta open source
Programma il futuro: una scelta open source
 
Simulazione di un Penetration Test
Simulazione di un Penetration TestSimulazione di un Penetration Test
Simulazione di un Penetration Test
 
Deep diving C# 4 (Raffaele Rialdi)
Deep diving C# 4 (Raffaele Rialdi)Deep diving C# 4 (Raffaele Rialdi)
Deep diving C# 4 (Raffaele Rialdi)
 
Sistemi Context-aware: Esercitazione 3
Sistemi Context-aware: Esercitazione 3Sistemi Context-aware: Esercitazione 3
Sistemi Context-aware: Esercitazione 3
 
Socket python
Socket pythonSocket python
Socket python
 
Primo Incontro Con Scala
Primo Incontro Con ScalaPrimo Incontro Con Scala
Primo Incontro Con Scala
 
Microsoft Azure per l'IT Pro
Microsoft Azure per l'IT ProMicrosoft Azure per l'IT Pro
Microsoft Azure per l'IT Pro
 
Virtualizzazione
VirtualizzazioneVirtualizzazione
Virtualizzazione
 
SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!
SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!
SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!
 
Signal r to the-max
Signal r to the-maxSignal r to the-max
Signal r to the-max
 
Del furia signalr-to-the-max
Del furia   signalr-to-the-maxDel furia   signalr-to-the-max
Del furia signalr-to-the-max
 
IPsec
IPsecIPsec
IPsec
 
Backdoor Coding: Analisi di una semplice backdoor e prime applicazioni
Backdoor Coding: Analisi di una semplice backdoor e prime applicazioniBackdoor Coding: Analisi di una semplice backdoor e prime applicazioni
Backdoor Coding: Analisi di una semplice backdoor e prime applicazioni
 
Introduzione a Workflow Foundation
Introduzione a Workflow FoundationIntroduzione a Workflow Foundation
Introduzione a Workflow Foundation
 

Recently uploaded

Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Associazione Digital Days
 
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Associazione Digital Days
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Associazione Digital Days
 
Programma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoProgramma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoQuotidiano Piemontese
 
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Associazione Digital Days
 
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Associazione Digital Days
 
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Associazione Digital Days
 
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Associazione Digital Days
 
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Associazione Digital Days
 

Recently uploaded (9)

Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
 
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
 
Programma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 TorinoProgramma Biennale Tecnologia 2024 Torino
Programma Biennale Tecnologia 2024 Torino
 
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
 
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
 
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
 
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
 
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
 

Twcrashcourse

  • 2.
  • 3. Cosa fa per la maggior parte del tempo un’applicazione di rete?
  • 4. Cosa fa per la maggior parte del tempo un’applicazione di rete? ATTENDE!
  • 6. Modelli Pratici Modello a Processi fork(), ... Buona protezione, buona efficienza, non sempre facilissimo
  • 7. 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
  • 8. 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
  • 9. Concetti Base La logica dietro a Twisted non è dissimile da 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 va male fai error(x).
  • 10. Twisted Core Twisted Protocolli TCP HTTP UDP SMTP SSL POP3 Multicast IMAP Implementa: IRC Client FTP Server SSH Modelli di autenticazione ...
  • 11. Reactor Nucleo 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
  • 12. Deferred Un oggetto deferred è un “segnaposto” che sta per qualcosa di cui non conosciamo ancora il valore. Agganciamo callback ed errback Quando abbiamo il valore, le callback (o le errback) sono chiamate Il concetto di deferred è completamente centrale a Twisted
  • 13. Implementare... Tipicamente per implementare un protocollo definiamo: Un Protocol, che descrive il protocollo Una Factory, che genera un nuovo Protocol per ogni client Non c’è problema di deadlock/race conditions: è tutto sequenziale asincrono Fortunatamente la maggior parte dei protocolli sono stati implementati: poche linee di codice creano un servente di classe enterprise
  • 14. 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.
  • 15. 1. Credentials list of interfaces 2. Credentials Credentials 3. Avatar ID Checker Portal 4. Avatar ID list of interfaces Realm 6. Avatar matching 5. Avatar ID interface matching interfaces Autenticazione
  • 16. 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
  • 17. 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

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n