Twisted (software)

Twisted (software)
Twisted
Twisted Logo (software).svg
Desarrollador
Glyph Lefkowitz, Community
http://twistedmatrix.com/
Información general
Lanzamiento 22 de octubre de 2002[1]
Última versión estable 10.1.0
[2] 27 de junio de 2010; hace 1 año (2010-06-27)
Género Dirigido por Eventos redes
Programado en Python
Sistema operativo Multiplataforma
Licencia MIT License
En español ?



Twisted es un framework de red para programación dirigida por eventos escrito en Python y licenciado bajo la licencia MIT.

Twisted proporciona soporte para varias arquitecturas (TCP, UDP, SSL/TLS, IP Multicast, Unix domain sockets), un gran número de protocolos (incluidos HTTP, XMPP, NNTP, IMAP, SSH, IRC, FTP), y mucho mas. Twisted se basa en el paradigma de la programación dirigida por eventos, quiere decir que los usuarios de Twisted pueden escribir pequeños callbacks (retrollamadas) predefinidos en el framework para realizar tareas complejas.


Contenido

Lineamientos centrales

Separación de los protocolos y transportes

El diseño de Twisted se basa en la separación completa entre los protocolos lógicos (que por lo general dependen de la conexión semántica basada en streams --flujos--, como el HTTP o POP3) y el transporte en capas físicas soportado como la semántica basada en streams (como archivos, bibliotecas sockets o SSL). La conexión entre un protocolo lógico y una capa de transporte que ocurre en el último momento posible, justo antes de la información se pase a la instancia de protocolo lógico. El protocolo lógico es informado de la instancia de capa de transporte, y puede utilizarlo para enviar mensajes de un lado para comprobar la identidad del otro extremo. Tenga en cuenta que todavía es posible, en el código de protocolo, para consultar profundamente la capa de transporte en cuestiones de transporte (como la comprobación de un certificado SSL del lado del cliente). Naturalmente, el código de dicho protocolo, se producirá un error (lanzar una excepción) si la capa de transporte no es compatible con tales semánticas.

Deferreds

El modelo central de aplicación para Twisted es el concepto de un deferred (predefinir algo que se usara como valor futuro). Un deferred es un valor que no se ha calculado todavía, por ejemplo, porque las necesidades de datos desde un equipo remoto. Los deferreds se pueden transferir, al igual que los objetos normales, pero no se puede pedir por su valor. Cada deferred es compatible con una cadena de devolución de llamada. Cuando el deferred toma el valor, es transferido a través de la cadena de devolución de llamada, con el resultado de cada de callback (devolución) siendo la entrada (input) para la siguiente. Esto permite que operen en los valores de un deferred sin saber lo que son. Por ejemplo, si un deferred devuelve una cadena desde un equipo remoto con una dirección IP en formato quad, un callback se puede adjuntar para traducirla a un número de 32 bits. Cualquier usuario del deferred puede ahora tratarlo como deferred de retorno de un número de 32 bits. Esto, y la capacidad de relación para definir "errbacks" (callbacks que son llamados como controladores de errores), permite que el código que se ve como si fuera de serie, mientras que todavía mantiene la abstracción por eventos.


Soporte de Thread (hilos o subprocesos)

Twisted soporta una abstracción sobre threads en crudo usando un thread como una fuente deferred. Por lo tanto, un deferred que es retornado inmediatamente, recibirá un valor cuando finalice el thread. Los callbacks se pueden adjuntar cuando corran en el thread principal, a fin de aliviar la necesidad de soluciones complejas de bloqueo. Un buen ejemplo de tal uso, que viene de las bibliotecas de soporte de Twisted, es usar este modelo para llamadas en bases de datos. La llamada de la base de datos misma pasa de un thread exterior, pero el análisis del resultado que sucede en el thread principal.


Soporte de bucle de externos

Twisted se puede integrar con bucles de eventos externos, tales como los de GTK+, Qt y Cocoa (a través de PyObjC). Esto le permite el uso de Twisted como la capa de soporte de red en aplicaciones GUI, usando todas sus colecciones sin tener que añadir una sobrecarga de thread-por-socket, como lo haria cualquier biblioteca nativa de Python. Se pude integrar en proceso un completo web server con una aplicación interfaz gráfica utilizando este modelo, por ejemplo.


Aplicaciones que utilizan Twisted

El Buildbot sistema de integración continua se basa en Twisted para comunicación cliente-servidor.[3]

ITA Software ha desarrollado un sistema de reservas de Air Canada que utiliza Twisted ampliamente.[4]

Sage, un alternativa de código abierto para Matemáticas, se ejecuta en un servidor Twisted.[5]

Twisted se utilizó en la Omegle un servicio de chat uno-a-uno[6] hasta que fue reemplazado por gevent por motivos de rendimiento.[7]

Twisted se utiliza también en el Apple Calendar Server,[8] así como en algunos proyectos internos de la NASA.

La versión original de la creación de redes sociales y sitio de microblogging Jaiku utiliza Twisted.

FluidDB, una nube de almacenamiento de datos en línea, utiliza Twisted ampliamente para RPC interno (en parte en combinación con Thrift y AMQP), para sus servicios internos y para API externos.

El servicio de alojamiento de archivos de Ubuntu One utiliza Twisted.

Cloudkick, un servidor de gestión de nube para aplicaciones web utiliza Twisted Python.


Véase también

  • Perl Object Environment, un framework comparable para el lenguaje de programación Perl.
  • JBoss Netty para la programación Java.
  • Ver el portal sobre Software Libre Portal:Software Libre. Contenido relacionado con Software Libre. Portal-puzzle.svg


Referencias


Enlaces externos


Wikimedia foundation. 2010.

Игры ⚽ Поможем написать реферат

Mira otros diccionarios:

  • Twisted (software) — Infobox Software name = Twisted caption = collapsible = author = Glyph Lefkowitz developer = Community released = 22 October 2002 [cite mailinglist|last=Shtull Trauring|first=Itamar|title=ANN: Twisted 1.0|date=2002 10 22|accessdate=2008 08… …   Wikipedia

  • Twisted — may refer to: Music Industry: * Twisted Records (UK), a UK based record label specializing in psychedelic trance * Twisted Records (US), an American electronic music record label Works: * Twisted (Del Amitri album) * Twisted (Hallucinogen album) …   Wikipedia

  • Twisted Metal (série) — Twisted Metal est une série de jeux vidéo de combat motorisé sur PlayStation, PlayStation 2 et PlayStation Portable (un épisode pour PlayStation 3 est en cours de développement). La série est publiée par Sony Computer Entertainment ; elle a… …   Wikipédia en Français

  • Twisted Metal: Black — Éditeur Sony Computer Entertainment Développeur Incognito Entertainment Concepteur David Jaffe Scott Campbell Date de sortie TM:B …   Wikipédia en Français

  • Twisted Metal: Black Online — Twisted Metal: Black Twisted Metal: Black Éditeur Sony Computer Entertainment Développeur Incognito Entertainment Concepteur David Jaffe Scott Campbell Date de sortie TM:B …   Wikipédia en Français

  • Twisted — Тип фрей …   Википедия

  • The Twisted Tales of Spike McFang — Infobox VG title = The Twisted Tales of Spike McFang developer = Red Company publisher = Naxat Soft (JP), Bullet Proof Software (NA) designer = released = JPN 1993 NA 1994 genre = Action RPG modes = Single player ratings = platforms = SNES media …   Wikipedia

  • The Twisted Tales of Felix the Cat — Series Title Card Genre Animation Series Comedy Fantasy Created by …   Wikipedia

  • Microsoft Software Assurance — (SA) is a Microsoft maintenance program aimed at business users who use Microsoft Windows, Microsoft Office, and other server and desktop applications. The core premise behind SA is to give users the ability to spread their payments for the… …   Wikipedia

  • List of Microsoft software applications — Not to be confused with List of Microsoft Windows components. The following is a list of notable Microsoft software applications. Contents 1 Development tools 2 Digital media authoring 3 Internet 4 …   Wikipedia

Compartir el artículo y extractos

Link directo
Do a right-click on the link above
and select “Copy Link”