1、为何使用Mina

    java提供的BIO、NIO使用的复杂性等原因,导致Mina框架的诞生;

2、什么时候使用Mina

    易于使用

    高并发的用户量

    被证明的系统:

      Mina已被全球数以万计的应用使用;

    现有协议的支持:

      HTTP、TCP、UDP。。。

3、Mina的特性

    

4、Mina应用架构

    

5、Mina架构实现细节

    

      基于Mina的应用分为3个层次

          1.1  I/O Service(I/O服务)      ----具体的I/O操作

          1.2  I/O Filter Chain(I/O 过滤器链)    -----将字节过滤/转换为想要的数据结构,反之亦然

          1.3  I/O Handler(I/O 处理器)      -----实现实际的业务逻辑

6、创建基于Mina的应用的步骤

      1.1  创建一个I/O Service    ---从已存在的service中挑选一个或创建自己的

      1.2  创建一个Filter Chain     ---从现有Filter中挑选或创建一个自定义Filter

      1.3  创建一个I/O Handler    ---处理不同消息时编写具体业务逻辑      

7、Mina---服务端架构

      1.1  服务器端监听一个端口以获得连入请求,将其进行处理后然后发送回复;

          服务器端还会为每个客户端创建并维护一个Session;

          

              I/O Acceptor :监听网络以获取连入的连接或包

              对于每一个新的连接,一个新的session会被创建,之后所有来自该IP地址/端口组合的请求会在同一个session中处理

              在一个session中接收到的所有包,将穿越上图中所示的Filter Chain;

                  只要一个客户端连接到了Mina服务器端,需要创建一个新的session存放持久化数据;

                  Filter Chain用于修正包的内容(转化为对象、添加、删除信息等);

                  对于从原始字节到高层对象的相互转换,PacketEncoder/Decoder相当有用;

              包或转化后的对象最终交由IOHandler

                  IOHandler用于实现具体业务需求;

8、Mina---客户端架构

       1.1   客户端需要连接一个服务器端,发送消息并处理响应;

           

          客户端首先创建一个IOConnector,开启一个服务器的绑定;

          在连接创建时,一个Session会被创建并关联到该连接;

          应用或客户端写入Session,导致数据在穿越Filter Chain后被发送到服务器端;

          所有接收自服务器端的响应穿越Filter Chain后由IOHandler接收并处理;    

Mina---系统学习的更多相关文章

  1. Dubbo -- 系统学习 笔记 -- 配置参考手册

    Dubbo -- 系统学习 笔记 -- 目录 配置参考手册 <dubbo:service/> <dubbo:reference/> <dubbo:protocol/> ...

  2. Dubbo -- 系统学习 笔记 -- 依赖

    Dubbo -- 系统学习 笔记 -- 目录 依赖 必需依赖 缺省依赖 可选依赖 依赖 必需依赖 JDK1.5+ 理论上Dubbo可以只依赖JDK,不依赖于任何三方库运行,只需配置使用JDK相关实现策 ...

  3. 零基础如何系统学习Java Web

    零基础如何系统学习Java Web?   我来给你说一说 你要下决心,我要转行做开发,这样你才能学成. 你要会打字,我公司原来有一个程序员,打字都是两个手一指禅,身为程序员你一指禅怎么写出的代码,半个 ...

  4. Unity3D 装备系统学习Inventory Pro 2.1.2 基础篇

    前言 前一篇 Unity3D 装备系统学习Inventory Pro 2.1.2 总结 基本泛泛的对于Inventory Pro 这个插件进行了讲解,主要是想提炼下通用装备系统结构和类体系.前两天又读 ...

  5. MES系统学习

    MES系统是当今制造型企业信息化的热点,而统一建模语言UML是面向对象建模的标准语言,在软件工程发挥着重要作用.MES系统如何进行UML建模呢,今天和大家重点讨论一下MES系统的UML建模方法,请看本 ...

  6. 001 今天开始系统学习C#

    2016-01-16 之前只是大概了解过c#语言,感觉掌握不牢靠.现在开始系统学习C#.现以该博客作为学习笔记,方便后续查看.C# 目标:系统掌握c#知识 时间:30天 范围:C#基础,Winform ...

  7. Linux系统学习笔记:文件I/O

    Linux支持C语言中的标准I/O函数,同时它还提供了一套SUS标准的I/O库函数.和标准I/O不同,UNIX的I/O函数是不带缓冲的,即每个读写都调用内核中的一个系统调用.本篇总结UNIX的I/O并 ...

  8. 从mina中学习超时程序编写

    从mina中学习超时程序编写 在很多情况下,程序需要使用计时器定,在指定的时间内检查连接过期.例如,要实现一个mqtt服务,为了保证QOS,在服务端发送消息后,需要等待客户端的ack,确保客户端接收到 ...

  9. Hibernate的系统 学习

    Hibernate的系统 学习 一.Hibernate的介绍 1.什么是Hibernate? 首先,hibernate是数据持久层的一个轻量级框架.数据持久层的框架有很多比如:iBATIS,myBat ...

  10. css系统学习网站

    最近系统学习一下css样式,找到一个不错的网站.http://css.doyoe.com/

随机推荐

  1. Java网络编程:IP地址和端口号

    1)IP地址 用来标志网络中的一个通信实体的地址.通信实体可以是计算机,路由器等. 2)IP地址分类 IPV4:32位地址,以点分十进制表示,如192.168.0.1 IPV6:128位(16个字节) ...

  2. 【串线篇】SpringMvc数据传出

    /** * SpringMVC除过在方法上传入原生的request和session外还能怎么样把数据带给页面 *  * 四大域: *  pageContext:${pageScope.msg }< ...

  3. webpack第一节(4)

    每次修改了代码都需要重新手动打包,这样很麻烦,不符合webpack的初衷,我们查看webpack帮助看看有没有可以自动运行的方法 输入 webpack -help 可以发现有个 --watch方法 它 ...

  4. java基础学习笔记三(多态)

    多态? 多态是同一个行为具有多个不同表现形式或形态的能力. 存在的必要条件 继承 重写 父类引用指向子类对象 比如: Parent p = new Child(); 当使用多态方式调用方法时,首先检查 ...

  5. .net从服务端下载文件(可以断点续传)

    public void DownFile(string guid) { var fileTransfer = new FileTransfer(); var directoryPath = Path. ...

  6. nucleus plus代码学习

    int.S: ;************************************************************************ ;* ;* FUNCTION ;* ; ...

  7. Codeforces #55D (数位dp+离散化)

    Description Volodya is an odd boy and his taste is strange as well. It seems to him that a positive ...

  8. ShopNC B2B2C最新版去除shop方法教程

    1.转移shop下目录文件至根目录: 2.修改config.ini.php里的shop绑定域名更改为无shop目录: 3.将原始根目录的index.php更改为main.php文件名自己定!并修改in ...

  9. [CSP-S模拟测试]:简单的区间(分治)

    题目描述 给定一个长度为$n$的序列$a$以及常数$k$,序列从$1$开始编号.记$$f(l,t)=\sum \limits_{i=l}^ra_i-\max \limits_{i=l}^r\{a_i\ ...

  10. ABP的新旧版本

    新版本 https://abp.io/documents/abp/latest/Index https://github.com/abpframework/abp ABP is an open sou ...