Esistono framework IO non bloccanti per .NET?Qualsiasi framework NIO per .NET?
Sto cercando qualcosa di simile a ciò che Apache Mina e JBoss Netty fornisce per Java: un framework per l'implementazione di server altamente scalabili - non solo il supporto di basso livello fornito dal framework .NET.
EDIT: per spiegare meglio quello che mi piacerebbe vedere, ecco un esempio di base di ciò che si può fare con Mina:
In Mina posso realizzare un ProtocolDecoder come questo:
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);
}
}
E un CommandHandler come questo:
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.
}
}
se inizio il server chiamando
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();
Otterrò un server non bloccante.
Eseguirà un singolo (o almeno alcuni thread), scorrendo tra tutte le connessioni in entrata, raccogliendo i dati dalle prese e chiamando SimpleDecoder.doDecode()
per verificare se ha un comando completo sulla connessione. Quindi passerà il comando a CommandHandler.messageReceived()
e io posso rilevare l'elaborazione.
Ecco un framework NIO ben progettato per Java: http://www.jboss.org/netty. Sto cercando un equivalente per .Net (e suppongo che anche i Rasmus lo facciano). Non è solo IO asincrono, ma una struttura in primo piano che semplifica notevolmente lo sviluppo. – jgauffin
L'I/O non bloccante fa parte di .NET dal giorno 1. Che cosa stai cercando esattamente? –
Sto cercando un framework server in cima alle chiamate di basso livello in .NET. –