.NET用の非ブロックIOフレームワークはありますか?.NET用のNIOフレームワークは何ですか?
Apache MinaとJBoss Nettyは、.NETフレームワークが提供する低レベルのサポートだけでなく、スケーラビリティの高いサーバーを実装するためのフレームワークを提供しています。
EDIT:
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);
}
}
:はミナに
私はこのようなProtocolDecoderを実装することができます:はより良い私が見たいのかを説明するには、ここにあなたがミナに何ができるかの基本的な例です。
そして、このようなCommandHandler:
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.
}
}
私は
を呼び出すことにより、サーバを起動した場合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();
ノンブロッキングサーバーを取得します。
すべての着信接続をサイクリングし、ソケットからデータを収集し、SimpleDecoder.doDecode()
を呼び出して、接続で完全なコマンドがあるかどうかを確認します。その後、コマンドをCommandHandler.messageReceived()
に渡し、処理を引き継ぐことができます。
ここには、Java用のよく設計されたNIOフレームワークがあります:http://www.jboss.org/netty。私は.Netと同等のものを探しています(そしてRasmusもそうしています)。これは単なる非同期IOではなく、開発を大幅に単純化するフレームワークです。 – jgauffin
ノンブロッキングI/Oは、1日目以降、.NETの一部となっています。何を探していますか? –
.NETの低レベル呼び出しの上にサーバーフレームワークを探しています。 –