Irgendwelche NIO-Frameworks für .NET?

Gibt es non-blocking IO-frameworks für .NET?

Ich bin auf der Suche nach etwas ähnliches, was Apache Mina und JBoss Netty bietet für Java: ein framework für die Implementierung von hoch skalierbaren Server - und nicht nur die low-level-support, die .NET framework bietet.

EDIT: besser Zu erklären, was ich würde gerne sehen, hier ist ein basic Beispiel, was Sie tun können, mit Mina:

In Mina kann ich implementieren einen ProtocolDecoder wie diese:

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);
  }
}

Und ein CommandHandler wie diese:

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.
  }
}

Wenn ich starten Sie den server durch Aufruf von

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();

Bekomme ich ein non-blocking server.

Ausgeführt wird, eine einzige (oder zumindest nur wenige) threads, Radfahren durch die alle eingehenden verbindungen, das sammeln der Daten von den sockets und rufen SimpleDecoder.doDecode() zu sehen, ob es einen vollständigen Befehl auf die Verbindung. Dann wird der Befehl zu CommandHandler.messageReceived(), und ich kann über die Verarbeitung.

Kommentar zu dem Problem
Non-blocking I/O ist ein Teil der .NET seit Tag 1. Was suchst du genau? Kommentarautor: John Saunders
Ich bin auf der Suche für ein server-framework, das auf der Oberseite des low-level-Aufrufe in .NET. Kommentarautor: Rasmus Faber
Ich weiß nicht genug über Java zu wissen, warum etwas wie MINA wäre hilfreich. Aber async-Zugang ist in jeder Ebene .NET. Es ist in WCF ADO.NET Workflow - überall. Ich sah MINA-Seite und sehen keinen Wert in .NET für alles, was Sie sagte, auf diese Seite. Kommentarautor: John Saunders
Vielleicht könnten Sie uns eine Vorstellung von der Art von Programm, das Sie schreiben müssen. Gehen Sie nicht davon aus, dass so etwas wie MINA ist erforderlich, um zu tun. Kommentarautor: John Saunders
Sind Sie auf der Suche nach ASP.NET's Unterstützung für asynchrone Seiten? Ermöglicht eine asynchrone Vorgang abgeschlossen ist, während so dass die ursprüngliche Verarbeitung der thread zum verarbeiten von anderen HTTP-requests und dann Kommissionierung bis die ursprüngliche Anforderung, wenn die asynchrone operation abgeschlossen? Kommentarautor: Richard

InformationsquelleAutor der Frage Rasmus Faber | 2009-03-15

Schreibe einen Kommentar