KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
Are there any non-blocking IO frameworks for .NET? I am looking for something similar to what Apache Mina and JBoss Netty provides for Java: a framework for implementing highly scalable servers - not just the low-level support that the .NET framework provides. EDIT: To better explain what I would like to see, here is a basic example of what you can do with Mina: In Mina I can implement a ProtocolDecoder like this: 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); } } And a CommandHandler like this: 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. } } If I start the server by calling 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(); I will get a non-blocking server. It will run a single (or at least just a few) threads, cycling through all incoming connections, gathering data from the sockets, and call SimpleDecoder.doDecode() to see if it has a complete command on the connection.
Tags (comma-separated)
Save Edits
Cancel