Apache Mina开发手册之二

Apache Mina开发手册之二

作者:chszs,转载需注明。博客主页:http://blog.csdn.net/chszs

四、NIO概述

NIO API是Java 1.4版引入的,NIO的意思是非阻塞的I/O通信。
要知道Mina的NIO是基于NIO-1开发的,而在JDK 7中引入了NIO-2的库,但Mina还没有从NIO-2中获得各方面的提升,因此Mina还是基于NIO-1的。
虽然Oracle官方是把NIO的N作为New的解释,但业界普遍把这个N解释为Non-Blocking。

Mina目前分为1.x和2.x两个主要版本,两个版本的主要区别在于1.x使用传统I/O方式,而2.x使用NIO方式。由于NIO是无阻塞的,而传统IO是阻塞的,所以2.x版本性能会有所提高。但是由于NIO比传统IO更加难于理解,实现更加复杂,想自己开发基于NIO的高性能服务器难度较大,所以这也是选择Mina框架的原因。
Mina 3.x目前还在开发阶段,到时候会通过NIO-2进一步提升通信性能。

java.nio.*包中包含了几个关键的结构:
1)Buffer:数据的容器
2)Charset:字节和Unicode编码的容器转换器
3)Channel:封装了I/O操作的实体的连接表现
4)Selector:提供了可选择的、多分复用的非阻塞I/O
5)Regexps:提供了一些操作正则表达式的工具

使用Mina的优点:
1)隐藏了开发网络程序的复杂性,提供了统一的编程接口;
- 用Java NIO实现TCP/IP和UDP/IP通信
- 用RXTX实现RS232串口通信
- VM级的管道通信
- 实现自己的传输协议

2)与Servlet相似的过滤器接口,支持扩展

3)低层和高层API
- 低层:使用字节缓冲ByteBuffer
- 高层:使用用户定义的消息对象和编码

4)高可定制的线程模型
- 单线程
- 单个线程池
- 多个线程池(即SEDA)

5)通过Java 5的SSLEngine实现开箱即用的SSL、TLS和StartTLS

6)过载防护与流量限制

7)使用mock对象使用单元可测试性

8)JMX管理能力

9)通过StreamIoHandler支持流I/O

10)可与PicoContainer或Spring框架相集成

11)可从Mina 1.x和Netty平滑迁移

五、Mina应用程序架构

1、基于Mina应用程序的架构

基于Mina的应用程序的架构通常是这样的:

可以看出,Mina是应用程序和网络层之间的胶水层,可以通过Mina完成TCP、UDP通信,甚至是串口RS-232C通信。Mina屏蔽了网络编程的复杂性,你只需专心于处理业务逻辑。

下面我们继续深入Mina框架:

广义上来讲,基于Mina的应用程序可以划分为三层:

1)I/O Service:I/O服务,执行实际的I/O通信。
2)I/O Filter Chain:I/O过滤器链,把字节过滤/转换成所需的数据结构,反之亦然。
3)I/O Handler:I/O句柄,放置实际的业务逻辑。

因此,要想创建基于Mina的应用程序,你必须:

1)创建I/O服务
可选择已有的服务(*Acceptor)或创建自己的I/O服务。

2)创建过滤器链
可选择已有的过滤器或创建自定义的过滤器,用于转换请求/响应的数据

3)创建I/O句柄
写业务逻辑,处理不同的消息

时间: 2024-10-09 08:13:44

Apache Mina开发手册之二的相关文章

Apache Mina开发手册之四

Apache Mina开发手册之四 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs 一.Mina开发的主要步骤 1.创建一个实现了IoService接口的类 IoService接口有两个子接口:1)IoAcceptor接口,用于服务器2)IoConnection接口,用于客户端 IoService接口的目的是提供服务,有几个默认实现:NioDatagramAcceptor.NioDatagramConnectorNioSocketAcceptor.N

Apache Shiro 使用手册(二)Shiro 认证

认证就是验证用户身份的过程.在认证过程中,用户需要提交实体信息(Principals)和凭据信息(Credentials)以检验用户是否合法.最常见的"实体/凭证"组合便是"用户名/密码"组合. 一.Shiro认证过程 1.收集实体/凭据信息 Java代码   //Example using most common scenario of username/password pair: UsernamePasswordToken token = new Userna

如何为Apache JMeter开发插件(二)——第一个JMeter插件

文章内容转载于:http://lib.csdn.net/article/softwaretest/25700,并且加上个人一些截图 本篇将开启为JMeter开发插件之旅,我们选择以Function(函数)组件作为插件开发的入手对象,在前面的章节我们将其划分为非GUI组件,选择它的理由不仅仅是因为Function插件在开发方面是极简的,而且在实际运用JMeter执行测试时,对于Function组件的应用会极大的为你的测试带来便利,有些甚至是必不可少的. 什么是Function组件? 我们还是有必要

Apache Shiro 使用手册(二)

认证就是验证用户身份的过程.在认证过程中,用户需要提交实体信息(Principals)和凭据信息(Credentials)以检验用户是否合法.最常见的"实体/凭证"组合便是"用户名/密码"组合. 一.Shiro认证过程 1.收集实体/凭据信息 //Example using most common scenario of username/password pair: UsernamePasswordToken token = new UsernamePasswor

一套仿 微信 IM系统 基于apache mina 隆重出世

历时6个月这套新版IM系统为我个人自主开发 使用了 apache mina ,主要功能为 服务端和客户端,客户端 到客户端的即时通信,可以支持包括文字 图片,语音等任何消息形式服务端使用的 struts2+spring3和hibernate3.6 +apache mina 前言:          现在市面上有很多 xmpp协议的即时通讯方案,openfire androidpn,等等.它们都是使用了apache mina开发,但是这些东西基本都需要二次改造开发.而且改动还很大,我也看过这些东西

【Andorid开发框架学习】之Mina开发1

今天我将介绍 Apache MINA的基本概念和 API,包括 I/O服务.I/O 会话.I/O 过滤器和 I/O 处理器. 一.MINA的简介 Apache MINA是一个网络应用程序框架,用来帮助用户简单地开发高性能和高可靠性的网络应用程序.它提供了一个通过Java NIO在不同的传输例如TCP/IP和UDP/IP上抽象的事件驱动的异步API. 二.什么是NIO? Java NIO,非堵塞应用通常适用用在I/O读写等方面,我们知道,系统运行的性能瓶颈通常在I/O读写,包括对端口和文件的操作上

Apache MINA 的网络应用的架构

基于 Apache MINA 开发的网络应用,有着相似的架构.图 1中给出了架构的示意图. 图 1. 基于 Apache MINA 的网络应用的架构 如 图 1所示,基于 Apache MINA 的网络应用有三个层次,分别是 I/O 服务.I/O 过滤器和 I/O 处理器: I/O 服务:I/O 服务用来执行实际的 I/O 操作.Apache MINA 已经提供了一系列支持不同协议的 I/O 服务,如 TCP/IP.UDP/IP.串口和虚拟机内部的管道等.开发人员也可以实现自己的 I/O 服务.

Apache Shiro 使用手册 链接目录整理

1.Apache Shiro 使用手册(一)Shiro架构介绍 2.Apache Shiro 使用手册(二)Shiro 认证 3.Apache Shiro 使用手册(三)Shiro 授权 4.Apache Shiro 使用手册(四)Realm 实现 5.Apache Shiro 使用手册(五)Shiro 配置说明 Apache Shiro 使用手册 链接目录整理

ODI KM二次开发手册

ODI KM二次开发手册 分类: ODI(16) 目录(?)[+] 1 引言 1.1 编写目的 本手册面向的读者对象为具备数据集成业务知识及对ODI操作了解的开发人员,作为其完成基于ODI基础上KM二次开发的参考手册.详细介绍了如何在ODI上进行KM二次开发,以满足用户数据集成特定场合下的个性化需求. 2 开发模板KM介绍 2.1 KM概述 KM(Knowledge Modules:知识模块)在ODI中是一组代码模板.在集成过程中,每一个KM对应一个特定任务,整个数据集成过程通过选择若干个KM代