12 Stimmen

Warum ist Twisted notwendig?

Ich habe seit etwa einer Woche mit dem Twisted-Framework herumgespielt (eher aus Neugierde als um es zu benutzen) und es macht viel Spaß, ereignisgesteuerte asynchrone Netzwerkprogrammierung zu machen.

Es gibt jedoch etwas, das ich nicht verstehe. Die verdrehte Dokumentation fängt an mit

Twisted ist ein Framework, das sehr flexibel ist und mit dem Sie leistungsfähige Server schreiben können.

Mein Zweifel ist: - Warum brauchen wir eine solche ereignisgesteuerte Bibliothek, um leistungsfähige Server zu schreiben, wenn es bereits sehr effiziente Implementierungen von verschiedenen Servern da draußen gibt?

Sicherlich gab es mehr als nur ein paar konkrete Implementierungen, die die Twisted-Entwickler im Kopf hatten, als sie dieses ereignisgesteuerte I \O Bibliothek. Welche sind das? Warum genau wurde sie verdreht?

13voto

Jean-Paul Calderone Punkte 46659

In einem Kommentar zu einer anderen Antwort sagen Sie: "Jede Bibliothek sollte ... haben". "Angenommen" von wem? Anwendungsfälle zu haben ist sicherlich ein guter Weg, um Ihre Anforderungen festzulegen, aber es ist nicht der einzige Weg. Es macht auch keinen Sinn, über die Anwendungsfälle für ganz Twisted auf einmal zu sprechen. Es gibt keinen Anwendungsfall, der jede einzelne API in Twisted rechtfertigt. Es gibt hunderte oder tausende von verschiedenen Anwendungsfällen, von denen jeder eine kleinere oder größere Unterteilung von Twisted rechtfertigt. Diese kamen und gingen im Laufe der Jahre der Entwicklung von Twisted, und es wurde kein Versuch unternommen, eine Liste davon zu führen. Ich kann sagen, dass ich an einem Teil von Twisted Names gearbeitet habe, um ein Thema für ein Papier zu haben, das ich zu dieser Zeit präsentierte. Ich habe den vt102-Parser in Twisted Conch implementiert, weil ich von Terminals besessen bin und ein lustiges Projekt mit ihnen machen wollte. Und ich habe die IMAP4-Unterstützung in Twisted Mail implementiert, weil ich in einer Firma arbeitete, die einen Mailserver entwickelte, der eine engere Kontrolle über den Mailspeicher erforderte als jeder andere IMAP4-Server zu dieser Zeit bot.

Wie Sie also sehen können, wurden verschiedene Teile von Twisted aus sehr unterschiedlichen Gründen geschrieben (und ich habe nur Beispiele für meine eigenen Gründe angeführt, nicht die Gründe anderer Entwickler).

Der anfängliche Grund für das Schreiben eines Programms ist auf lange Sicht jedoch oft nicht von großer Bedeutung. Jetzt ist der Code geschrieben: Twisted Names betreibt jetzt das DNS für viele Domainnamen im Internet, der vt102-Parser hat mir geholfen, einen Job zu bekommen, und die Firma, die die IMAP4-Entwicklung vorangetrieben hat, ist nicht mehr im Geschäft. Was wirklich zählt, ist, welche nützlichen Dinge man mit dem Code machen kann jetzt . Wie MattH hervorhebt, hat die daraus resultierende Fülle an Funktionen zu einer Bibliothek geführt, die (vielleicht einzigartig) eine breite Palette interessanter Probleme behandelt.

7voto

MattH Punkte 35368

Warum brauchen wir eine solche ereignisgesteuerte Bibliothek, um leistungsfähige Server zu schreiben, wenn es bereits sehr effiziente Implementierungen von verschiedenen Servern da draußen gibt?

Mit anderen Worten: Sie können sich nicht vorstellen, warum jemand ein Toolkit braucht, wenn es bereits Dyecast-Produkte gibt?

Ich nehme an, dass Sie noch nie ein Protokoll-Gateway einrichten mussten, z. B.
- einen Daemon schreiben, um lokale Dateien bei Bedarf über einen Unix-Socket mit md5 zu versehen
- eine Software über udp abfragen und Statistiken über http bereitstellen.

Ich habe ein kleines Proof-of-Concept für das zweite Beispiel für eine Frage hier auf SO in einer eine Handvoll Minuten . Ich könnte das nicht ohne Twisted machen.

Haben Sie sich das angesehen: ProjekteVerwendung vonTwisted ?

5voto

Jacob Oscarson Punkte 6198

Mehr zum Thema "Warum": ( Haftungsausschluss: Ich bin kein Entwickler von Twisted proper ), muss man das hohe Alter von Twisted (im Vergleich zu Python) berücksichtigen. Als Twisted geschrieben wurde, gab es keine ausreichend leistungsfähige nicht-blockierend netzwerk-/ereignisgesteuerte Bibliothek, die um das Reaktormuster (fast jeder benutzte damals Fäden). Der ursprüngliche Anwendungsfall von Twisted war ein großes Multiplayer-Spiel, obwohl die Einzelheiten dieses Spiels in der Zeit etwas untergegangen zu sein scheinen.

Seit den Ursprüngen, wie @MattH's Link andeutet, basiert eine sehr große Anzahl von verschiedenen Netzwerkservern, die in Python geschrieben wurden, auf Twisted.

4voto

merwok Punkte 6577

Dieser PyCon-Vortrag vom Schöpfer von Twisted sollte Ihnen Antworten geben.

Es hat meine Meinung über Twisted geändert. Vorher sah ich es als ein riesiges Stück Software mit Schnittstellen und seltsamen Namen, zwei Dinge, die viele Entwickler nicht mögen, die aber eigentlich nur oberflächlich sind, und jetzt, wo ich die Geschichte dahinter und die erstaunliche Anzahl von Anwendungsfällen gesehen habe, respektiere ich es sehr. Das Leben ist kurz, du brauchst Twisted :)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X