mina学习---了解

来源:互联网 发布:怎么看淘宝成交价格 编辑:程序博客网 时间:2024/04/30 05:49

    由于项目的需要,先说一下项目的背景,现在流行物联网和社区o2o,本身也是在视频对讲设备,第一个项目的时候,大部分的通讯都是用采用mqtt 来进行通讯,后来由于框架的变动以及底层通讯人员的减少,以及所有客户端都采用android 设备之间采用p2p的通讯方式。具体实现:

   1.设备端与服务端进行通信(socket方式)。

   2.设备端的心跳机制保持(socket方式)。

   3.设备端与设备端进行socket直接通讯。

   4.android 设备做服务器进行转发(socket)。

   5.小区中也有大量的设备是嵌入式的。


  因此在项目中几乎是采用socket通讯。第一版本的时候,由另外的同事设计采用java 原生的socket进行通信,效果不是特别好。新改版的时候已经把原有的socket 用nio的socketchannle来代替。但必须要维护线程池,效率也不是特别高。另外还是关注通讯框架的稳定没有办法专注业务开发,另外也要用socket实现server端。因此优先想到采用半成品的框架和开源成熟框架,在此框架上面进行修改或者进行二次开发来满足项目需求。

   然后在csdn 的官网上面看mina相关文章。因此,决定先了解mina设计能否满足需求。直接引用官方“Apache Mina是一个能够帮助用户开发高性能和高伸缩性网络应用程序的框架。它通过Java nio技术基于TCP/IP和UDP/IP协议提供了抽象的、事件驱动的、异步的API。mina 又称NIO 框架库

● 客户端服务器框架
● 一个网络套接字库 
● 为不同的传输类型提供了统一的API:
○ 通过Java NIO提供TCP/IP 和 UDP/IP支持
○ 通过RXTX提供串口通讯(RS232)
○ In-VM管道通讯
○ 你能实现你自己的API!
● 过滤器作为一个扩展特性; 类似Servlet过滤器
● 低级和高级的API:
○ 低级: 使用字节缓存(ByteBuffers)
○ 高级: 使用用户定义的消息对象(objects)和编码(codecs)
● 高度定制化线程模型:
○ 单线程
○ 一个线程池
○ 一个以上的线程池(也就是SEDA)
● 使用Java 5 SSL引擎提供沙盒(Out-of-the-box) SSL · TLS · StartTLS支持
● 超载保护和传输流量控制
” 
   因此;Mina可以理解成对Socket 封装的通讯方式,提供client 和Server端,采用线程池的方式,提供超载保护和传输流量控制。今天可能大家看到这里还是一点晕。后面我们会介绍大家如何使用mina,如果你乐意看官方文档,可以直接跳过。
0 0