今天给大家推荐一个NET上的轻量级高性能网络程序框架Mina.NET。支持TCP、UDP和串口等多种传输通道,能够帮助开发者快速地开发高伸缩性的应用程序。
Mina.NET是Apache MINA的.Net实现,它通过异步套接字提供了一个抽象的事件驱动的异步 API,以支持各种传输,例如 TCP/IP。
目录结构
Mina.NET 特点
- 统一的 API,支持各种传输类型:
- TCP/IP 和 UDP/IP(通过 .NET 异步套接字)
- 串口通信(RS232)
- 环回(应用程序内管道)通信
- 用户可以实现自己的传输类型!
- 过滤器接口作为扩展点;
- 低级和高级 API:
- 低级 API:使用 IoBuffers
- 高级 API:使用用户定义的消息对象和编解码器
- 高度可定制的线程模型:
- 单线程
- 一个线程池
- 多个线程池
- 开箱即用的 SSL · TLS
- 过载屏蔽和流量限制
- 基于流的 I/O 支持,通过 StreamIoHandler
Mina.NET优势
- 简单易用:Mina.NET 提供了一个简单的 API,可以快速轻松地开发网络应用程序。
- 高性能:Mina.NET 使用了 .NET 异步 I/O 技术,可以实现高性能的网络应用程序。
- 可扩展性:Mina.NET 提供了高度可定制的线程模型和过载屏蔽功能,可以满足各种需求。
适用场景
- 客户端/服务器应用程序
- 聊天应用程序
- 文件传输应用程序
- 游戏应用程序
- 流媒体应用程序
Mina.NET使用
代码语言:javascript复制 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