Có gì hay ho về Twisted? [đóng cửa]


83

Tôi ngày càng nghe thấy rằng các nền tảng khung xoắn của Python và các khung công tác khác đều nhạt khi so sánh.

Ai có thể làm sáng tỏ điều này và có thể so sánh Twisted với các khung lập trình mạng khác.


2
Dường như không có bất cứ thứ gì ngoài đó có thể so sánh từ xa với Twisted, vì vậy câu hỏi của bạn hơi khó trả lời. Bạn đang cân nhắc lựa chọn thay thế nào?
Sven Marnach

1
@Sven Thậm chí không phải là một nhà phát triển Python, tôi chỉ tò mò về điều gì làm cho Twisted trở nên tuyệt vời như những gì nó được tuyên bố.
Anton Gogolev

2
@Sven Marnach: Nó phụ thuộc vào một ví dụ vấn đề tên miền, geventlà một thay thế cho Twisted cho "thầy bói" ứng dụng blip.tv/file/4883016
JFS

Câu trả lời:


131

Có rất nhiều khía cạnh khác nhau của Twisted mà bạn có thể thấy thú vị.

Twisted bao gồm rất nhiều và rất nhiều triển khai giao thức, có nghĩa là nhiều khả năng sẽ có một API mà bạn có thể sử dụng để nói chuyện với một số hệ thống từ xa (máy khách hoặc máy chủ trong hầu hết các trường hợp) - có thể là HTTP , FTP , SMTP, POP3, IMAP4 , DNS , IRC, MSN, OSCAR, XMPP / Jabber , telnet, SSH , SSL, NNTP hoặc một trong những giao thức thực sự ít người biết đến như Finger, hoặc danh tính, hoặc một trong những giao thức xây dựng giao thức cấp thấp hơn như netstrings của DJB , đơn giản các giao thức hướng dòng , hoặc thậm chí một trong các giao thức tùy chỉnh của Twisted như Perspective Broker (PB) hoặcGiao thức nhắn tin không đồng bộ (AMP) .

Một điều thú vị khác về Twisted là trên đầu các triển khai giao thức cấp thấp này, bạn sẽ thường tìm thấy một phần trừu tượng dễ sử dụng hơn. Ví dụ: khi viết một máy chủ HTTP, Twisted Web cung cấp một bản tóm tắt "Tài nguyên" cho phép bạn xây dựng cấu trúc phân cấp URL từ các đối tượng Python để xác định cách các yêu cầu sẽ được phản hồi.

Tất cả điều này gắn liền với các API hợp tác, chủ yếu là do không có chức năng nào trong số này được thực hiện bằng cách chặn trên mạng, vì vậy bạn không cần phải bắt đầu một chuỗi cho mọi hoạt động bạn muốn thực hiện . Điều này góp phần vào khả năng mở rộng mà mọi người thường gán cho Twisted (mặc dù đây là loại khả năng mở rộng chỉ liên quan đến một máy tính duy nhất, không phải loại khả năng mở rộng cho phép ứng dụng của bạn phát triển để sử dụng toàn bộ cụm máy chủ) vì Twisted có thể xử lý hàng nghìn các kết nối trong một luồng duy nhất, có xu hướng hoạt động tốt hơn việc có hàng nghìn luồng, mỗi luồng cho một kết nối duy nhất.

Tránh phân luồng cũng có lợi cho việc kiểm tra và gỡ lỗi (và do đó độ tin cậy nói chung). Vì không có chuyển đổi ngữ cảnh trước trong một chương trình dựa trên Twisted thông thường, bạn thường không cần lo lắng về việc khóa. Các điều kiện chạy đua phụ thuộc vào thứ tự của các sự kiện mạng khác nhau xảy ra có thể dễ dàng được kiểm tra đơn vị bằng cách mô phỏng các sự kiện mạng đó (trong khi mô phỏng chuyển đổi ngữ cảnh không phải là tính năng được cung cấp bởi hầu hết (bất kỳ?) Thư viện luồng).

Twisted cũng thực sự quan tâm đến chất lượng . Vì vậy, bạn sẽ hiếm khi tìm thấy các hồi quy trong bản phát hành Twisted và hầu hết các API chỉ hoạt động, ngay cả khi bạn không sử dụng chúng theo cách phổ biến (bởi vì chúng tôi cố gắng kiểm tra tất cả các cách bạn có thể sử dụng chúng, không chỉ thông thường đường). Điều này đặc biệt đúng đối với tất cả các mã được thêm vào Twisted (hoặc sửa đổi) trong 3 hoặc 4 năm qua, vì độ phủ 100% của đường truyền là yêu cầu thử nghiệm tối thiểu kể từ đó.

Một điểm mạnh khác thường bị bỏ qua của Twisted là mười năm tìm ra những điều kỳ quặc của nền tảng khác nhau . Có rất nhiều lỗi ổ cắm không có giấy tờ trên các nền tảng khác nhau và thật khó để biết rằng chúng thậm chí còn tồn tại chứ chưa nói đến việc xử lý chúng. Twisted đã dần dần bao phủ nhiều hơn và nhiều hơn nữa, và nó khá tốt ở thời điểm này. Các dự án trẻ hơn không có kinh nghiệm này, vì vậy họ bỏ lỡ các chế độ thất bại khó hiểu có thể chỉ xảy ra với người dùng của bất kỳ dự án nào bạn phát hành, không phải với bạn.

Tất cả những gì tôi nói, điều tôi thấy thú vị nhất về Twisted là đó là một thư viện khá nhàm chán cho phép tôi bỏ qua rất nhiều vấn đề thực sự nhàm chán và chỉ tập trung vào những điều thú vị và vui vẻ. :)


1
và có vẻ kém tài liệu từ liên kết bạn đã cung cấp về Tóm tắt tài nguyên. Nhưng cảm ơn vì đã trả lời tuyệt vời, ủng hộ.
vinipsmaker

Một điểm tốt là, giải thích về "lỗi ổ cắm không có tài liệu". Lời giải thích hay. Cảm ơn.
Haranadh

Tôi đã sử dụng Twisted và Django được một thời gian và tôi đã đến thời điểm mà tôi cảm thấy mình có thể thay thế Django bằng Twisted. Nghe có vẻ kỳ lạ nhưng tôi chỉ cần một ứng dụng Front-end và tôi sẽ xác định tất cả các giao thức của mình trên Twisted và sử dụng một số ORM để quản lý cơ sở dữ liệu của mình. Tuy nhiên, tôi thấy nó là một khuôn khổ không cố gắng khiến bạn chỉ có thể làm một việc.
Durodola Opemipo

9

Vâng, nó có lẽ là theo khẩu vị.

Twisted cho phép bạn dễ dàng tạo các máy chủ / máy khách mạng hướng sự kiện mà không thực sự lo lắng về mọi thứ để hoàn thành việc này. Và nhờ Giấy phép MIT , Twisted có thể được sử dụng ở hầu hết mọi nơi. Nhưng tôi chưa thực hiện bất kỳ điểm chuẩn nào nên tôi không biết nó chia tỷ lệ như thế nào, nhưng tôi đoán khá ổn.

Một điểm cộng khác sẽ là Dự án xoắn , bạn có thể nhanh chóng xem cách triển khai hầu hết các máy chủ / dịch vụ mà bạn muốn.

Twisted cũng có một số tài liệu tuyệt vời , khi tôi bắt đầu với nó một vài tuần trước, tôi đã có thể nhanh chóng có được một nguyên mẫu hoạt động.

Khá mới với cảnh trăn xin vui lòng sửa cho tôi nếu tôi sai.


8
Một trong những lợi thế lớn khi bắt đầu với Twisted là có rất nhiều vấn đề về khả năng mở rộng mà chỉ đơn giản là không bao giờ xuất hiện do chính cách thiết kế của Twisted. Nó cho phép bạn tiếp tục với việc khám phá những cách thức mới và sáng tạo để bắn mình trong bàn chân, thay vì đầu tiên tái khám phá tất cả những cách trần tục làm như vậy khi xây dựng một ứng dụng mạng :)
ncoghlan

Đúng là một người yêu thích khi làm việc với Twisted, đó là điều tôi nhanh chóng phát hiện ra. Và tôi thích cách kiến ​​trúc gợi nhớ cho tôi rất nhiều về Netty [ jboss.org/netty ] mà tôi đã sử dụng khá rộng rãi nên việc chọn ra cách suy nghĩ rất nhanh.
Johann du Toit
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.