2013-08-24 25 views
12

Có kế hoạch nào của nhóm .NET để tạo ổ cắm RIO được giới thiệu trong Windows 8/Server 2012 có sẵn trong .NET không?Ổ cắm RIO (Đã đăng ký I/O) trong .NET

Tùy chọn của tôi trong thời gian tạm thời để sử dụng chúng từ bên trong .NET - mở rộng lớp Socket là gì?

Ngoài tài liệu API Windows, What's New for Windows Sockets và video Channel9, New Techniques to Develop Low-Latency Network Apps, tôi hầu như không tìm thấy bất kỳ tài liệu nào khác về chúng.

+1

Có thể bạn có thể [xem loạt bài này về RIO và dịch chúng thành P/Gọi để bắt đầu] (http://www.serverframework.com/asynchronousevents/2012/03/windows-8-registered-io-example- udp-servers.html). – user7116

Trả lời

5

Tôi đã viết khá nhiều về điều tra ban đầu của mình về RIO từ mã gốc here (làm người nhận xét cho câu hỏi ban đầu của bạn được chỉ ra).

Tôi muốn biết những gì bạn hy vọng đạt được bằng cách sử dụng RIO từ mã được quản lý? Đối tượng mục tiêu có khả năng của RIO là các nhà phát triển cần giảm độ trễ trong mã mạng của họ. Cá nhân tôi không tin rằng mã được quản lý nhất thiết phải lý tưởng cho loại ứng dụng mà RIO nhắm đến; Tôi có thể sai, nhưng tôi hy vọng rằng có khả năng CLR có thể kích hoạt một bộ sưu tập rác tại bất kỳ thời điểm nào sẽ không phải là thứ mà một người nào đó sử dụng RIO muốn ...

Dù sao đi nữa. Tôi nghĩ rằng nếu bạn muốn sử dụng RIO từ mã được quản lý thì tôi khuyên bạn KHÔNG nên đơn giản bằng cách sử dụng P/Invoke và thay vào đó viết một thành phần quản lý tất cả công việc RIO trong mã gốc và có thể gọi lại vào quản lý trên nhiều mạng khác nhau sự kiện. Nhưng một lần nữa, đó chỉ là cách tôi làm điều đó ...

+8

Tôi làm việc trong ngành tài chính và trong khi tôi đồng ý rằng chúng tôi có thể ép thêm một chút hiệu suất viết mã gốc, chúng tôi đã có thể phát triển một ứng dụng được quản lý, phần lớn là GC miễn phí, với độ trễ thấp và độ trễ thấp. Thành phần cụ thể mà tôi sẽ sử dụng RIO có độ trễ trung bình là 5usec cho mỗi gói được xử lý nhưng phải chịu một ~ 20usec hit cho mỗi cuộc gọi trên người dùng đến chuyển đổi chế độ hạt nhân thành winsock. Nếu chúng ta có thể đưa nó xuống thông qua RIO, nó sẽ có vẻ giống như một chiến thắng ngay lập tức mà không cần phải đi qua tuyến đường nhân. - Cảm ơn các liên kết đến bài viết của bạn! – TJF

+0

Nghe có vẻ như đáng để xem xét. –

+1

@TJF bạn đã làm cho GC máy chủ của mình miễn phí và giảm độ trễ như thế nào? – tunafish24

3

RIO đang được nghiên cứu thử nghiệm cho API "kênh", hiện đang ở giai đoạn khởi động/thăm dò, nhưng có thể sử dụng tại đây: https://github.com/davidfowl/Channels. Điều này nằm bên cạnh API libuv và API winsock dựa trên "kênh". Đối với câu hỏi của bạn về việc mở rộng lớp socket: bản chất của các API này dường như tạo ra một cách tiếp cận khác mong muốn - vì thế "các kênh".

+0

Ngoài ra còn có dự án "RioSharp" trên GitHub: https://github.com/aL3891/RioSharp – TJF

Các vấn đề liên quan