Có bất kỳ khung công tác IO không chặn nào cho .NET không?Bất kỳ khung công tác NIO nào cho .NET?
Tôi đang tìm một cái gì đó tương tự như những gì Apache Mina và JBoss Netty cung cấp cho Java: một khuôn khổ để triển khai các máy chủ có khả năng mở rộng cao - không chỉ hỗ trợ cấp thấp mà khung công tác .NET cung cấp.
EDIT: Để giải thích rõ hơn những gì tôi muốn thấy, đây là một ví dụ cơ bản về những gì bạn có thể làm với Mina:
Trong Mina tôi có thể thực hiện một ProtocolDecoder như thế này:
public class SimpleDecoder extends CumulativeProtocolDecoder {
protected boolean doDecode(IoSession session, IoBuffer in, ProtocolDecoderOutput out) throws Exception {
if (in.remaining() < 4)
return false;
int length = in.getInt();
if(in.remaining() < 4 + length)
return false;
Command command = new Command(in.asInputStream());
out.write(command);
}
}
Và một CommandHandler như thế này:
public abstract class CommandHandler extends IoHandlerAdapter{
public void messageReceived(IoSession session, Object message) throws IOException, CloneNotSupportedException {
Command command = (Command) message;
// Handle command. Probably by putting it in a workqueue.
}
}
Nếu tôi khởi động server bằng cách gọi
0.123.CommandHandler handler = new CommandHandler();
NioSocketAcceptor acceptor = new NioSocketAcceptor();
acceptor.getFilterChain().addLast("protocol", new ProtocolCodecFilter(new SimpleDecoder(false)));
acceptor.setLocalAddress(new InetSocketAddress(port));
acceptor.setHandler(handler);
acceptor.bind();
Tôi sẽ nhận được một máy chủ không chặn.
Nó sẽ chạy một chuỗi (hoặc ít nhất một vài), đạp xe qua tất cả các kết nối đến, thu thập dữ liệu từ ổ cắm và gọi SimpleDecoder.doDecode()
để xem nó có lệnh hoàn chỉnh trên kết nối không. Sau đó, nó sẽ chuyển lệnh đến CommandHandler.messageReceived()
và tôi có thể tiếp quản quá trình xử lý.
Đây là khung công tác NIO được thiết kế tốt cho Java: http://www.jboss.org/netty. Tôi đang tìm kiếm một tương đương cho. Net (và tôi cho rằng Rasmus cũng vậy). Nó không chỉ là IO không đồng bộ mà là một khuôn khổ trên cùng mà đơn giản hoá việc phát triển rất nhiều. – jgauffin
Không chặn I/O đã là một phần của .NET kể từ ngày 1. Bạn đang tìm kiếm cái gì, chính xác? –
Tôi đang tìm một khung máy chủ trên đầu các cuộc gọi cấp thấp trong .NET. –