Ich stehe zu dem, was ich in Python in Kürze (2. Ausgabe S. 540):
Twisted beinhaltet leistungsstarke, High-Level Komponenten wie Webserver, Benutzer Authentifizierungssysteme, Mail-Server und Kunden, Instant Messaging, SSH Clients und Server, ein DNS-Server und Kunde, und so weiter, sowie die untergeordnete Infrastruktur, auf der all diese High-Level-Komponenten sind gebaut. Jede Komponente ist hoch skalierbar und leicht anpassbar, und Alle sind integriert integriert glatt. Es ist eine Hommage an die Macht von Python und dem Einfallsreichtum von Twisted-Entwickler, die so viel können innerhalb von zwei Megabyte durchgeführt werden Wert des Downloads.
Wenn man fragt, ob dieses unglaublich reichhaltige und mächtige Framework "einfacher zu benutzen" ist als "einfache Sockets", ist es ein bisschen wie zu fragen, ob ein Auto "einfacher zu benutzen" ist als eine Schraube: Was für ein seltsam Frage!
Autos sind gebaut mit Schrauben (unter anderem), und kann nicht ganz so "einfach zu bedienen" sein - nur weil eine Schraube so wenig tut, macht ein Auto so viel.
Aber wenn Sie von A nach B kommen wollen (und möglicherweise Passagiere, Gepäck, Haustiere, ...), hilft eine Schraube nicht viel (es sei denn, Sie bauen im Grunde ein Auto von Grund auf ;-)) .
Natürlich sind Autos nicht der einzige Weg, um von A nach B zu kommen, genauso wie verdreht ist nicht die einzige Möglichkeit, netzwerkzentrierte Systeme in Python zu bauen. Ein Pferd und Buggy (wie asyncore ) ist malerisch und lustig, wenn auch weniger praktisch ; ein Hochgeschwindigkeitszug (wie zB Tornado) ist vielleicht einfacher zu benutzen und mindestens genauso schnell, wenn auch viel weniger flexibel; und für verschiedene spezialisierte Zwecke können Sie alle Arten von anderen Transportmitteln bevorzugen, von Einrädern bis zu Kreuzfahrtschiffen (wie in Python und für Netzwerke, alle Arten von anderen Paketen, von paramiko zu dnspython ) - alle von ihnen werden Schrauben als Teil ihrer Komponenten enthalten (wie alle) wird Sockets als Teil der Art, wie sie gebaut werden, enthalten, wird keiner so einfach zu bedienen sein wie "einfache Sockets", jeder (in seinem eigenen Anwendungsbereich) wird viel mehr für Sie tun als "einfache Sockets" auf ihrem Eigene könnte möglicherweise.
Twisted
ist eine ausgezeichnete Wahl in einer Vielzahl von Fällen, oft am besten, wenn Sie mehrere Aspekte der Funktionalität integrieren und / oder ein Protokoll implementieren müssen, für das es keine vollständig gepackte Lösung gibt. "Einfache Sockets" sind es nicht - sie sind nur eine Low-Level-Komponente, aus der höhere Funktionalität, höhere Ebenen, gebaut werden, und es gibt selten einen guten Grund (außer natürlich zu lernen), "eigene" zu rollen "Komponenten auf höherer Ebene, die" von Grund auf neu "auf Steckdosen aufgebaut sind (anstatt mächtige, gut gebaute bestehende zu wählen) - genau so, wie Sie es selten tun würden, Ihren eigenen Computer aus Transistoren, Widerständen, Kondensatoren usw. zu bauen. anstatt geeignete integrierte Schaltkreise auszuwählen ;-).
Twisted ist ein Parallelitätsrahmen. Es ermöglicht Ihnen, mehrere Aufgaben in einer Anwendung zu jonglieren, ohne Threads / Prozesse zu verwenden. Dies geschieht mit einem ereignisgesteuerten asynchronen System und eignet sich besonders gut für Netzwerkanwendungen. Asynchroner Code tendiert im Allgemeinen dazu, ein wenig "anders" von normalen Dingen zu sein, da der Fluss nicht explizit ist und Dinge auf der Grundlage von externen Ereignissen geschehen. Das kann verwirrend sein, aber es funktioniert. Twisted ist wohl die ausgereifteste Python Async Concurrency Library. Wenn Sie also vorhaben, dies zu tun, ist twisted eine gute Sache, auf die Sie wetten können.
"Einfache Sockets", wie Sie sie nennen, sind Kommunikationsprimitive und nicht wirklich vergleichbar mit twisted. Was versuchst du zu tun?
Ich würde sagen, es ist gut. Schauen Sie sich einfach diese Seite der Projekte an, die verdrehte verwendet.
Twisted wurde erstmals im Jahr 2002 veröffentlicht und ist seither erheblich aufgebläht; (Dies ist ein heikles Thema und viele Leute würden argumentieren, dass dies in einem Rahmen gut und notwendig ist) - Für jemanden, der sich dem Projekt jetzt nähert, kann es jedoch etwas entmutigend sein. Es gibt jedoch Optionen, wenn Sie auf asynchrone Frameworks drängen. Ich fand diesen Blog interessant: Ссылка . Abgesehen von den Benchmarks sind die Codebeispiele allein zum Vergleich sehr interessant.