(职员)2015-10-23 星期五 日志 第四天

今天主要看了Mina 和复习了之前看的框架
上午:
主要看了Mina框架,主要整理如下
1.BIO Blocking IO
阻塞IO
在BIO中,你发送一个请求,你需要一直等待,直到获取到响应
2.NIO Non-Blocking IO
非阻塞IO
在NIO中,你不需要调用并等待一个结果,你发送一个命令,当结果准备好后,你会得到通知
3.MINA是一个特别设计的网络框架,可以工作在客户端和服务端。
4.多数应用在调用网络层是通常都期待一个阻塞模式,但是最好的解决方法是编写一个模拟阻塞模式的框架隐藏这些方面的复杂性。而这正是MINA所做的。
5.当没有特殊的性能要求时,MINA是一个比较好的选择
6.MINA目前对现在支持的协议都有不同实现,包括:HTTP,
XML, TCP, LDAP, DHCP, NTP, DNS, XMPP, SSH, FTP...
,在某种情况下,MINA并不仅仅是一个NIO的框架,而是一个实现了不同协议的网络层。
7。MINA是你的应用(作为一个客户端或服务器)和下方的网络层之间的粘合剂,网络层可以是基于TCP、UDP、VM内部通讯或类似RS-232的串行通讯协议。
你仅需要基于MINA设计你的应用而不需要处理网络层的所有复杂性。
8.基于MINA的应用被分为3层:
(1)I/O服务:进行实际的I/O操作
(2)I/O过滤器链:过滤/转换字节为所需的数据结构,及将数据结构转换为字节
(3)I/O
处理器:在这里实现实际的业务逻辑
所以,为了创建一个基于MINA的应用,你需要:
(1)创建一个I/O服务:选择一个已经可用的服务(*Acceptor)或创建一个你自己的
(2)创建一个过滤器链:选择一个已存在的过滤器或创建一个自定义的过滤器来转换请求及响应
(3)创建一个I/O处理器:编写业务逻辑,处理不同的消息。
9.一个新的会话将为一个新的连接创建,随后的所有来自IP地址/端口的请求都将在这个会话中进行处理。
10.NioSocketAcceptor
:这是一个非阻塞Socket通信的IoAcceptor
NioDatagramAcceptor : 这是一个非阻塞的UDP 通信
IoAcceptor
11具体的业务类需要实现IOhandle,其中主要的实现是recevived方法
,大部分的业务是在其中进行定义的,服务端接受到客户端的数据,解析数据做出不同的业务处理,然后发送数据到客户端,通过session的write方法。在客户端,在recevied方法接收到服务器传来的数据,进行相关处理,在主函数中通过session的write方法进行向服务器发送数据。
12.注意点:在进行发送数据前,需要定义好filter,进行合适的过滤,应为所有的发送和接收的原始数据都要经过定义的过滤,不然会收不到对于的数据类型,从而导致错误。

13;服务器监听一自定义的端口,然后客户端对服务器定义的端口进行数据发送,端口要对。

体会:Mina 其实就是对原生的很多网络协议的封装,在Mina框架内开发者不用关心具体的协议是如何在程序中处理的,只要指定使用的协议,然后使用统一的接口,借用统一的方法,就可以进行操作。 使用起来简单方便,框架对很多都进行了封装,开发者只要进行一些配置,少量的代码  然后就可以只关注具体的业务。

下午 主要实践了Mina框架,做了个时间服务器。服务端接收到客户端传来的信息,发回一个时间字符串,客户端收到后进行显示。

复习反思了spring hibernate mina框架 mina用于接收客户端发来的信息,spring利用收到的信息生成对象,不直接new 而是利用bean applicationcontext ,hibernate利用spring生成的对象进行数据库的操作,三个框架相互依靠,形成一个流水线,但又不会相互依赖,每个 功能都很强大,容易进行组合,简单的代码就可以实现很多强大的功能,配置容易。
不知道自己的理解对不对,欢迎修正

原文地址:https://www.cnblogs.com/f-g-k/p/4905370.html