一个NET上的轻量级高性能网络程序框架

给大家推荐一个NET上的轻量级高性能网络程序框架Mina.NET。支持TCP、UDP和串口等多种传输通道,能够帮助开发者快速地开发高伸缩性的应用程序。

Mina.NET是Apache MINA的.Net实现,它通过异步套接字提供了一个抽象的事件驱动的异步 API,以支持各种传输,例如 TCP/IP。



目录结构

1.png


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使用


  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