2010-02-11 36 views
7

Có điều gì đó giống như xoắn ốc (python) hoặc eventmachine (ruby) trong đất .net không?Mạng đa luồng Thư viện máy chủ UDP cho .net

Tôi thậm chí có cần sự trừu tượng này không? Tôi đang nghe một thiết bị IO đơn lẻ sẽ gửi cho tôi các sự kiện cho ba hoặc bốn cảm biến tương tự gắn với nó. Những rủi ro của việc sử dụng một vòng lặp UdpClient là gì? Tôi không thể bỏ lỡ bất kỳ sự kiện nào, nhưng ngăn xếp ip sẽ xử lý việc xếp hàng các tin nhắn cho tôi? Tất cả điều này có phụ thuộc vào số lượng công việc mà chủ đề cố gắng thực hiện khi tôi nhận được một tin nhắn không?

Điều tôi đang tìm kiếm trong một trừu tượng là loại bỏ sự phức tạp của luồng và đồng bộ hóa khỏi sự cố.

+0

Kiểm tra http://kayakhttp.com/ –

+0

Đó gần như chính xác những gì tôi cần, chỉ tôi không cần HTTP, tôi đang nghe các sự kiện UDP. Cảm ơn các liên kết mặc dù, xin lỗi tôi đã không rõ ràng. –

Trả lời

5

Tôi nghĩ bạn đang khiến nó quá phức tạp. Chỉ cần mở 1 ổ cắm UDP và đặt một cuộc gọi lại không đồng bộ trên đó. Đối với mọi gói dữ liệu gửi vào trong hàng đợi và đặt lại gọi lại. Đó là nó.

đảm bảo rằng khi xếp hàng và khử nhiễu bạn đặt khóa trên hàng đợi.

đơn giản như vậy và hiệu suất sẽ tuyệt vời.

R

0

Tôi muốn giới thiệu ICE đó là công cụ giao tiếp sẽ trừu tượng hóa luồng và giao tiếp với bạn (tài liệu là loại đầy đủ).

+0

ICE sử dụng giấy phép GPLv2, làm cho nó không tương thích với giấy phép AGPL (là giấy phép copyleft được thiết kế đặc biệt cho các ứng dụng mạng). Điều này làm tê liệt hiệu quả bất kỳ máy chủ mạng copyleft nào mà bạn muốn xây dựng. http://en.wikipedia.org/wiki/Affero_General_Public_License#Compatibility_with_the_GPL – Nuzzolilo

+0

Đúng, tôi đã không tính đến khía cạnh giấy phép. –

0

Vấn đề là với Udp bạn sẽ tự động giả định rủi ro bị mất gói. Tôi đã đọc tài liệu về ICE (như Steve đã đề xuất) và nó là rất đầy đủ. Có vẻ như ICE sẽ làm việc cho Udp, tuy nhiên, dường như Tcp được các nhà phát triển ưa thích. Tôi thu thập từ tài liệu ICE rằng nó không cung cấp bất kỳ cơ chế chuyên sâu nào để đảm bảo truyền thông Udp đáng tin cậy.

Thực sự rất dễ dàng để thiết lập máy khách hoặc máy chủ Udp không đồng bộ. Công việc thực sự của bạn là kiểm tra các gói và bộ đệm hoàn chỉnh. Việc triển khai không đồng bộ sẽ giúp bạn quản lý các luồng.

0

Có vẻ như bạn đang tìm kiếm multicast tin cậy -Bạn có thể thử RMF, nó sẽ làm độ tin cậy và cung cấp những thông điệp sử dụng Bản Noi Quy callbacks từ hàng đợi tin nhắn gửi đến. IBM cũng thực hiện WebSphere có thành phần UDP. EmCaster cũng là một lựa chọn - tuy nhiên phát triển dường như đã dừng lại vào năm 2008.

Nếu bạn không chuyển các gói (hoặc sự kiện) này sang các máy khác, bạn có thể chỉ muốn sử dụng một thứ đơn giản như các tệp ánh xạ bộ nhớ hoặc các hình thức IPC khác.