MINA框架简介_第1页
MINA框架简介_第2页
MINA框架简介_第3页
MINA框架简介_第4页
MINA框架简介_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、MINA框架简介是一个网络通信应用框架,也就是说,它主要是对基于、协议栈的通信框架(然,也可以提供对象的序列化服务、虚拟机管道通信服务等),可以帮助我们快速开发高性能、高扩展性的网络通信应用,提供了事件驱动、异步(的异步默认使用的是作为底层支持)操作的编程模型。主要有和两个分支,这里我们讲解最新版本,如果你使用的是,那么可能会有一些功能并不适用。学习本文档,需要你已掌握、线程及并发库的知识。同时提供了网络通信的端、端的封装,无论是哪端,在整个网通通信结构中都处于如下的位置:1框架简介当客户首次访问采用编写的程序时,作为线程运行,负责接受来自客户的请求。当有客户请求连接时,创建一个,该与c以及联

2、系起来。也作为另外一个线程运行,定时检查客户是否有数据到来,并对客户请求进行处理,依次调用在注册的各个,最后调用进行最终的逻辑处理,再将处理后的结果后返回给客户端。可以理解为服务器与客户端的特定连接,该连接由服务器地址、端口以及客户端地址、端口来决定。客户端发起请求时,指定服务器地址和端口,客户端也会指定或者根据网络路由信息自动指定一个地址、自动分配一个端口。这个地址、端口对构成一个。是服务器端对这种连接的抽象,对其进行了封装,定义了接口,用来代表客户端与服务器的连接,在服务器端来指代客户端,实现对客户端的操作、绑定与客户端有关的信息与对象。通过利用的这个概念,编写程序时就可以在服务器端非常方

3、便地区分出是当前处理的是哪个客户端的请求、维持客户端的状态信息、可以实现客户端之间相互通讯。提供以下一些常用方法:设置/获取用户定义的属性。将该属性与联系起来,方便以后处理用户请求时使用。比如如果要求用户登录后才能继续进行操作,那么在用户成功登陆后,可以通过设置一个属性,当用户以后继续请求时,可以通过获取该属性来判断用户是否登录。()获取远程客户端地址。()获取的、创建时间、上次时间、配置信息。()将数据发送给客户端。()关闭。说明:可以在中发送数据,但是没有提供读取数据的方法,读取数据通过另一套机制在的中实现。可以看成是事件驱动的。通常在网络通讯中,可以将整个过程划分为几个基本的阶段,如建立

4、连接、数据通信、关闭连接。数据通信一般包括数据的发送和接收,由于在通信过程中,可能要多次发送和接收数据,以进行不同的业务交互。不可能一直都接收和发送数据,因此就有出现,在中,如果在设定的时间内没有数据发送或接收,那么就会触发一个事件。由于某种原因,可能会发生错误,导致系统异常发生,引发。因此,如果从事件发生的角度看的话,就可以在中将通信看成由一个建立链接(和)、多个数据接收和发送、一个关闭连接事件以及多个事件等种事件组成的过程。相关是对双方相互通信的抽象,因此通信的过程就是一系列与的事件。没有区别。在现在对的实现中,因此严格来说,有6种类型的事件。从以上框架简图可以看出,对来自客户端数据最终处

5、理是在中处理的。封装了来自客户端不同事件的处理,如果对某个事件感兴趣,可以实现相应的方法,当该事件发生时,中的方法就会被触发执行。总共有个方法对应个事件:()有异常发生时被触发。(2)voidmessageReceived(IoSessions有消息到达时被触发,代表接收到的消息。(3)voidmessageSent(IoSessionsessi发送消息时时被触发,即在调用时被触发,代表将要发送的消息。()当连接关闭时被触发,即终止时被触发。()当创建一个新连接时被触发,即当开始一个新的时被触发。(6)vo,dsess,onIdle(IoSess,onsess,当连接空闲时被触发。使用中的方法

6、可以设置的空闲时间。如果该的空闲时间超过设置的值,该方法被触发,可以通过来获取被触发的次数。()当打开一个连接时被触发。在目前的实现中,好像和没有太大区别,在之前被触发。是一个接口,一般情况没有必要直接实现该接口的每一个方法。提供了一个类,该类实现了要求的方法,但是都没有做任何处理。当我们要编写自己的时,可以扩展,重写我们关心的事件方法即可。比如,一般情况,我们比较关心是否接收到数据这个时间,那么我们就可以覆盖方法,不用管其他方法。用来对客户的请求或发送给客户的数据进行t与一样,也是基于事件的,通过实现接口,就可以对通信过程中的的事件进行处理。是一种链式结构,与不同,处理每一种事件的函数中,除

7、了传入对象外,还传入了对象,用来代表下一个t一般情况,在处理结束后,调用下一个的相应方法作进一步处理。也可以针对特定的通信或数据,不进行进一步处理,就可以不用调用的相应方法。除了与相应的种事件外,在中还可以对的、以及、等时间爱女作出处理。提供了一个类,我们要编写自己的时,可以扩展,不用直接实现接口。提供一个类,用来通信过程。基本类的描述在介绍架构之前先认识几个接口:相当于网络应用程序中的服务器端相当于客户端当前客户端到服务器端的一个连接实例业务处理逻辑过滤器用于悬接通讯层接口与业务层接口图的架构图IJWritesReads在图中的模块链中IoAcc,eIpote以用来添加多个便是应用程序的入口

8、,相当于我们前面代码中的便是的一个扩展接口。接口可i这些符合责任链模式并由线程负责调用。而接口的基础上还提供绑定某个通讯端口以及取消绑定的接口。在上面的例子中,我们是这样使用的:相当于我们使用了通讯方式作为服务的接入,当前版本的还提供了除外的基于数据报文通讯的以及基于管道通讯的以另外还包括串口通讯接入方式,目前基于串口通讯的接入方式已经在最新测试版的中提供。你也可以自行实现接口来使用自己的通讯方式。而在上图中最右端也就是,这便是业务处理模块。相当于前面例子中的类。在业务处理类中不需要去关心实际的通讯细节,只管处理客户端传输过来的信息即可。编写类就是使用开发网络应用程序的重心所在,相当于已经帮你

9、处理了所有的通讯方面的细节问题。为了简化类,提供了类,此类仅仅是实现了接口,但并不做任何处理。一个接口中具有如下一些方法(摘自的文档):当接口中其他方法抛出异常未被捕获时触发此方法当接收到客户端的请求信息后触发此方法.当信息已经传送给客户端后触发此方法.当连接被关闭时触发,例如客户端程序意外退出等等当一个新客户端连接后触发此方法.当连接空闲时触发此方法.当连接后打开时触发此方法,一般此方法与会被同时触发前面我们提到是负责底层通讯接入,而是负责业务处理的。那么架构图中的作何用途呢?答案是你想作何用途都可以。但是有一个用途却是必须的,那就是作为和之间的桥梁。接口中最重要的一个方法是,这个方法的第二个参数是一个型的消息,总所周知,是所有对象的基础,那到底谁来决定这个消息到底是什么类型呢?答案也就在这个中。在前面使用的例子中,我们添加了一个是,这个过滤器的作用是将来自客户端输入的信息转换成一行行的文本后传递给,因此我们可以在中直接将对象强制转换成对象。而如果

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论