MINA2.0用户手册中文随笔翻译

上传人:豆浆 文档编号:33520594 上传时间:2018-02-15 格式:DOC 页数:44 大小:1.99MB
返回 下载 相关 举报
MINA2.0用户手册中文随笔翻译_第1页
第1页 / 共44页
MINA2.0用户手册中文随笔翻译_第2页
第2页 / 共44页
MINA2.0用户手册中文随笔翻译_第3页
第3页 / 共44页
MINA2.0用户手册中文随笔翻译_第4页
第4页 / 共44页
MINA2.0用户手册中文随笔翻译_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《MINA2.0用户手册中文随笔翻译》由会员分享,可在线阅读,更多相关《MINA2.0用户手册中文随笔翻译(44页珍藏版)》请在金锄头文库上搜索。

1、滨州学院计算机科学与技术系 seesky 译制我的博客:http:/ MINA、NIO 的第一感觉,以及为什么我们在 NIO 上构建框架。我们还展示了如何运行一个基于MINA 的非常简单的程序例子。1、NIO 综述NIO APIs 在 Java 1.4 中被给出,如今它已经在在大量的程序中被使用了。NIO APIs 允许非阻塞 IO 操作。注意:首先,知道 MINA 是在 NIO 1 的基础上开发的是很重要的,如今在 Java 7 中一个新版本的 NIO-2 已经被设计出来,但是我们还没有从这个版本所带有的特性中获益。注意:知道 N 在 NIO 中的意思是 New 也是重要的,但是我们将在很多

2、地方使用非阻塞( Non-Blocking)这个术语。NIO-2 需要被看为 New New I/Ojava.nio.*包包含以下关键结构 Buffers数据容器 Chartsetsbytes 和 Unicode 之间的翻译容器 Channels代表 I/O 操作的连接实体 Selectors提供可选择的多路复用非阻塞 IO Regexps提供一些操作正则表达式的工具我们将集中关注 MINA 框架的 Channels、Selectors 以及 Buffers 部分,其它部分我们将对用户进行隐藏。本手册将集中关注在这些内部组件上构建我们所需要的系统。NIO vs BIO知道 BIO 和 Cloc

3、king IO 这两种 APIs 之间的不同是很重要的,在阻塞模型中依赖普通的 sockets 链接:当你读、写或者在 socket上做任何操作的时候,被调用的操作将会阻塞调用者,知道操作完成。在一些例子中,关键是能够调用操作,并期望被调用的操作在操作完成之后能够通知调用者:这使得调用者在平均的运行时间里可以做更多的事情。这也就是 NIO 的优点,当你有很多的 socket 链接时,NIO 能帮你更好的处理它们:你不需要为每一个链接创建指定的进程,你只需要使用少量的进程来做同样的事情。如果你想获得有关于 NIO 的更多信息,网上有很多不错的文章,还有几本书讲述了有关 NIO 的问题。2、为什么

4、开发 MINA编写网络程序被看做是繁重的底层开发。它一个开发者不经常学习和知晓的区域,要么是因为很久之前在学校里学过但是现在已经忘了,或者是因为复杂的网络层总是被高层隐藏,总之你没有深入学习过它。另外当涉及到异步 IO 的时候,一个额外的发杂层又参杂了进来:time。BIO(Blocking IO)和 NIO(Non-Blocking IO)之间的最大的区别是,在 BIO 中,你发送一个请求,然后需要一直等待直到你获得答复。在服务器端,这意味着一个进程将会与一个对内连接相联系,所以你不得不处理复杂的多路链接。在 NIO 中,另一方面,你需要解决非阻塞系统的同步工作,这就意味当一些事情发生之后,

5、你的程序将被唤醒。在 NIO 中,你不需要调用和等待结果,你发送完命令之后,之后当恢复准备好了你将获得通知。框架的需求考虑到这些不同,事实上许多的程序都期待在调用网络层的时候有一个阻塞模式,而最好的解决方法就是编写一个模拟阻塞的框架来隐藏这些不同。这就是为什么需要 MINA。但是 MINA 可以做更多。它为使用 TCP、UDP 和其他机制进行通信提供统一的接口。当你只考虑 TCP 和 UDP 的时候,一个是有连接的(TCP),而另外一个是无连接的(UDP)。MINA 掩饰这些不同,使你能够专注于你的程序的两个重要部分:程序的编码以及协议的编码和解码。MINA 不但可以处理 TCP 和 UDP,

6、它还通过 VmpPipe 或 APR 为串口通信(RSC232)提供了一个高层接口。滨州学院计算机科学与技术系 seesky 译制我的博客:http:/ 被特别的设计为能够在客户端和服务器端都能运行的网络框架。编写一个关键是能够扩展的系统,同时在性能和内存使用方面能够符合服务器的要求:这就是 MINA 所擅长的,它使得构建你自己的服务器变得简单。什么时候使用 MINA?这是一个有趣的问题!MINA 在一些情况下并不是最好的选择。当你想要使用 MINA 的时候有几个元素需要考虑。让我们来看看: 当你没有特定的性能环境的时候它是易用的,这个时候 MINA 是一个很好的选择因为它让你更简单的构建一个

7、服务器或客户端,而不用在 BIO 和 NIO 的上层重复编写处理代码和处理各种参数。你甚至能够用简单地 10 行代码完成你的服务器,而且可以避免更少的问题。 一定数量的用户连接 BIO 是比 NIO 快的。不同的是大约 30%支持 BIO。这对于拥有几千条用户连接的系统是正确的,但是在一定程度上,BIO 已经停止扩展了:你不能用一个用户一个进程的方式处理百万级的用户连接!而 NIO 可以。另一方面你在MINA 部分所花费的时间在你整个程序的编码过程中也许并不重要。在一定程度上,编写一个更快的网络层也许并没有什么价值,因为性能基本得不到提升。 在全世界有数万的程序在使用 MINA,这可以证明 M

8、INA 很有用。有很多的 Apache 项目基于 MINA,它们工作的都很好。这也保证了你不用花费数小时的时间来解决你自己的网络层实现中所遇到的奇怪问题了。 MINA 当前支持的已存在协议有:HTTP、XML 、TCP 、LDAP、DHCP 、NTP、DNS、XMPP、SSH、FTP在一定程度上,MINA 不只是一个 NIO 的网络框架,它还是一个带有许多协议实现的网络框架。MINA 的一个未来发展是成为一个你能够使用的各种存在协议的集合。产品特点MINA 是一个简单地同时也是全功能的网络程序开发框架,它提供了以下功能: 为各种传输方式提供了同一个 API:o 基于 NIO 的 TCP/IP

9、& UDP/IPo 基于 RXTX 的串口通信( RS232)o In-VM pipe 通信o 你可以在它上边实现你自己的通信! 作为扩展的过滤器接口;类似于 Servlet 的过滤器 底层和高层 API:o 底层:使用 ByteBufferso 高层:使用用户定义的信息类和编码 可定制的进程模型:o 单线程o 线程池o 多个线程池(SEDA) Out-of-the-box SSL.TLS.StartTLS 支持使用 Java 5 SSLEngine 过载保护和流量节流 模拟对象的单元测试 JMX 可管理性 基于流的 IO 操作:StreamIoHandler 与一些知名的容器集成,例如 Pi

10、coContainer 和 Spring 从 Netty 的平滑迁移, MINA 的祖先滨州学院计算机科学与技术系 seesky 译制我的博客:http:/ MINA 包提供的示例代码为你展示如何简单地使用 MINA。你所要做的第一件事就是在你的程序中使用 MINA 之前配置你的环境。我们将描述你需要安装什么和如何运行 MINA 程序。没什么技巧,只是一个 MINA 的测试下载首先你需要从现在站点现在最新的 MINA 发布包。最好下载最新版,除非你有很好的理由不这样做一般而言,如果你想使用 MINA 构建你自己的项目,你不需要下载什么东西,你只需要将一个 MINA 库包含到你的项目中就可以了:

11、你只需要告诉你的 IDE 你要使用 MINA 的 jar 包就可以了。MINA 库中有什么在你下载完成之后,提取 tar.gz 或 zip 文档中的文件到本地目录。压缩文档中包含了以下内容。在 UNIX 系统中:在 apache-mina-2.0.7 目录中,你能够得到:内容详情 dist包含 MINA 的 jar 包 doce包含 API 文档和代码引用文件 lib包含 MINA 要用到的所有的 jar 库除此之外,根目录还包含 license 文件和其他几个注意文件运行你的第一个 MINA 程序好的,你已经下载了最新的 MINA,让我们来运行 MINA 中附带的示例程序。把以下包加入 cl

12、asspath mina-core-2.0.7.jar mina-example-2.0.7.jar slf4j-api-1.6.6.jar slf4j-log4j12-1.6.6.jar log4j-1.2.17.jar在命令行中输入以下命令:滨州学院计算机科学与技术系 seesky 译制我的博客:http:/ telnet 连接服务器看有什么结果。输入如下 telnet 指令:现在你已经运行了第一个 MINA 程序。请尝试 MINA 中附带的其他示例程序。概要在这一章中,我们看到了基础的 MINA 程序结构,它对于客户端和服务器都适用。我们还涉及到了简单地 TCP 服务器/客户端的实现,还

13、有 UDP 服务器和客户端。在接下来的一章中,我们将会讨论 MINA 的核心结构和一些更高级的话题。第二章基础在第一章中,我们简单地了解了一下 MINA。在这一章中我们将会看到服务器/客户端的结构和一些它们的细节。我们将会展示一些简单地基于 TCP 和 UDP 的服务器和客户端示例。基于 MINA 的应用程序结构我们也可以这样问:“一个基于 MINA 的程序看起来是什么样子的?”在这一章中,让我们来看一看基于 MINA 的程序的结构。我们试图从 MINA 演示中搜集信息。鸟瞰图:在这我们看到 MINA 是你的程序(客户端或服务器)与网络层之间的粘合剂,而程序的底层可以是基于 TCP、UDP、i

14、n-VM 连接,甚至是 RS-232C 串口协议的连接。你只需要在 MINA 的上层构建你的应用而不需要处理复杂的网络层问题。让我们更深入细节一些。下边的图片展示了 MINA 的组成,并写出了每部分做功能:滨州学院计算机科学与技术系 seesky 译制我的博客:http:/ MINA 的程序分为三层: I/O 服务实际执行 I/O 操作 I/O 过滤器链对所需的数据就够进行过滤/翻译,反之亦然 I/O 处理这里包含着真正的业务逻辑所以,为了构建一个基于 MINA 的程序,你需要: 创建 I/O 服务从已有服务器选择一个或者创建你自己的 创建过滤器链选择已经存在的过滤器或者是定义用户转换请求 /

15、回复的过滤器 创建处理器编写业务逻辑,处理不同的信息你可以通过阅读以下两个文件更深入的了解这方面的内容: 服务器结构 客户端结构当然,MINA 提供了比这更多的功能,你还需要注意其他的一些方面,像信息的编码/解码,网络配置的扩展等我们将在下一张进一步讨论这些问题。服务器结构在上一小节我们已经展示了 MINA 程序的结构。接下来让我们看一下服务器的结构。基本上,一个服务器要在特定的端口上监听客户端的请求,处理这些请求并作出回复。同时它需要创建和处理与每一个客户端之间的连接(不管你使用的是 TCP 还是 UDP 协议),这些将在第四章中有更详细的解说。滨州学院计算机科学与技术系 seesky 译制我的博客:http:/ IOAcceptor 监听来自网络的连接和数据包 对于一个新的连接,一个对话将会被建立,同时随后来自于这个 IP 地址和端口的通信都将通过这个回话进行处理 对一个会话的所有数据包,都会穿过如图

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号