MINA开发-1

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提供的不仅如此,而且你可以关注其他方面,比如消息编码/解码,如何扩大网络配置等等...

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 196,099评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,473评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,229评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,570评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,427评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,335评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,737评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,392评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,693评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,730评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,512评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,349评论 3 314
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,750评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,017评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,290评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,706评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,904评论 2 335

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,517评论 18 139
  • MINA服务端的应用应用体系结构 基本上,服务器监听端口传入请求,处理它们并发送回复。它还为每个客户端创建和处理会...
    lengyan_zhao阅读 1,162评论 0 5
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,140评论 25 707
  • MINA客户端的应用应用体系结构 在上一篇文章中我们介绍了MINA服务器端的开发流程,这一章我给大家介绍MINA的...
    lengyan_zhao阅读 1,194评论 2 4
  • 活死人盘旋的黑乌鸦,叫声凄厉 父亲,祖父,还有许多邻居 他们横着,竖着,或者 埋入黄土里。 这么多年,我一直在寻找...
    红精灵阅读 375评论 4 9