给大家推荐一个NET上的轻量级高性能网络程序框架Mina.NET。支持TCP、UDP和串口等多种传输通道,能够帮助开发者快速地开发高伸缩性的应用程序。
Mina.NET是Apache MINA的.Net实现,它通过异步套接字提供了一个抽象的事件驱动的异步 API,以支持各种传输,例如 TCP/IP。
统一的 API,支持各种传输类型:
TCP/IP 和 UDP/IP(通过 .NET 异步套接字)
串口通信(RS232)
环回(应用程序内管道)通信
用户可以实现自己的传输类型!
过滤器接口作为扩展点;
低级和高级 API:
低级 API:使用 IoBuffers
高级 API:使用用户定义的消息对象和编解码器
高度可定制的线程模型:
单线程
一个线程池
多个线程池
开箱即用的 SSL · TLS
过载屏蔽和流量限制
基于流的 I/O 支持,通过 StreamIoHandler
简单易用:Mina.NET 提供了一个简单的 API,可以快速轻松地开发网络应用程序。
高性能:Mina.NET 使用了 .NET 异步 I/O 技术,可以实现高性能的网络应用程序。
可扩展性:Mina.NET 提供了高度可定制的线程模型和过载屏蔽功能,可以满足各种需求。
客户端/服务器应用程序
聊天应用程序
文件传输应用程序
游戏应用程序
流媒体应用程序
IoAcceptor acceptor = new AsyncSocketAcceptor();
acceptor.FilterChain.AddLast("logger", new LoggingFilter());
acceptor.FilterChain.AddLast("codec", new ProtocolCodecFilter(new TextLineCodecFactory(Encoding.UTF8)));
acceptor.ExceptionCaught += (o, e) => Console.WriteLine(e.Exception);
acceptor.SessionIdle += (o, e) => Console.WriteLine("IDLE " + e.Session.GetIdleCount(e.IdleStatus));
acceptor.MessageReceived += (o, e) =>
{
String str = e.Message.ToString();
// "Quit" ? let's get out ...
if (str.Trim().Equals("quit", StringComparison.OrdinalIgnoreCase))
{
e.Session.Close(true);
return;
}
// Send the current date back to the client
e.Session.Write(DateTime.Now.ToString());
Console.WriteLine("Message written...");
};
acceptor.Bind(new IPEndPoint(IPAddress.Any, 8080));
资源获取方式
https://github.com/longshine/Mina.NET