MINA开发-1

作者: lengyan_zhao | 来源:发表于2017-06-01 18:39 被阅读138次

MINA简介

Apache MINA是一个网络应用程序框架,可帮助用户轻松开发高性能和高可扩展性的网络应用程序。 它通过Java NIO在各种传输(如TCP / IP和UDP / IP)上提供抽象·事件驱动的异步API。
Apache MINA经常被称为:
1.NIO框架或者类库
2.客户端和服务器端的框架或者类库
3.一个网络和Scocket通信类库

MINA的特征

MINA是一个简单但功能齐全的网络应用程序框架,提供:
1.对于各种不同的传输类型提供了同一的实现API:

  • TCP/IP 和 UDP/IP 通过java的NIO实现
  • 串口通讯(RS232) 通过RXTX
  • 虚拟机内的管道通信
  • 可扩展实现自定义的传输协议

2.Filter接口作为一个可扩展的点,类似于Servlet的过滤器
3.低级和高级的API:

  • 低级:使用ByteBuffers
  • 高级:使用自定义的消息对象和编解码器

4.高度自定义的线程模式

  • 单线程
  • 一个线程池
  • 多个线程池(即SEDA)

5.SSL·TLS·StartTLS支持使用java5的SSL引擎(SSLEngine)
6.过载屏蔽和流量节流
7.使用模拟对象进行单元测试
8.JMX可管理性
9.通过StreamIoHandler支持基于流的I/O操作
10.与众所周知的容器式框架集成,比如PicoContainer和Spring
11.来自Netty的平滑迁移,这是Apache MINA的前身

MINA的使用场景

  • 当你没有特殊的性能要求时,MINA可能是很好的选择,因为它很容易实现服务器端和客户端的开发,代码简洁。
  • 百万级的用户连接,相对稳定;
  • MINA已经被广泛使用,而且Apache的很多项目也是基于MINA的;
  • MINA对现有的很多协议都已经实现支持:HTTP,XML,TCP,LDSP,DHCP,NTP,DNS,XMPP,SSH,FTP...,所以MINA不仅可以当做NIO的框架,而且还可以看做很多网络协议的实现。

MINA应用架构

mina结构图.png

在这里,我们可以看到,MINA是您的应用程序(无论是客户端还是服务器)和底层网络层之间的粘合,可以基于TCP,UDP,VM内通信或甚至RS-232C串行协议,提供对应的API操作。
您只需在MINA之上设计您的应用程序,而无需处理所有复杂的网络层。
让我们更深入了解细节。 以下图片显示了MINA内部的更多内容,以及每个MINA组件的作用:


mina_app_arch.png

从广义来说,基于MINA的应用程序分为3层:

  • I/O Service - 执行实际的I/O操作
  • I/O Filter Chain - 将字节过滤/转换为所需的数据结构,反之亦然
  • I/O Handler - 这里是实际的业务逻辑处理

所以,为了创建基于MINA的应用程序,你不得不做到以下:
 1.创建一个I/O service - 选择已经可用的Services(*Acceptor)或者创建你自己的
 2.创建一个Filter Chain(过滤器链)- 选择已经存在的Filters或者创建一个自定义的Filter(过滤器)用于转换request(请求数据)/respone(回复数据)
 3.创建一个I/O Handler - 此处编写业务逻辑,处理不同的消息信息

至此就完成了整个流程!

你也可以看看具体的客户端和服务端开发过程:
  - 服务端开发
  - Android客户端开发

当然,MINA提供的不仅如此,而且你可以关注其他方面,比如消息编码/解码,如何扩大网络配置等等...

相关文章

网友评论

    本文标题:MINA开发-1

    本文链接:https://www.haomeiwen.com/subject/aokxfxtx.html