欢迎来到天天文库
浏览记录
ID:8799231
大小:1.99 MB
页数:44页
时间:2018-04-08
《mina2.0用户手册中文随笔翻译》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、滨州学院计算机科学与技术系seesky译制第一章——开始 在这一章中,我们将给你什么是MINA、NIO的第一感觉,以及为什么我们在NIO上构建框架。我们还展示了如何运行一个基于MINA的非常简单的程序例子。1、NIO综述 NIOAPIs在Java1.4中被给出,如今它已经在在大量的程序中被使用了。NIOAPIs允许非阻塞IO操作。 注意:首先,知道MINA是在NIO1的基础上开发的是很重要的,如今在Java7中一个新版本的NIO-2已经被设计出来,但是我们还没有从这个版本所带有的特性中获益。 注意:知道N在NIO中的意思是New也是重要的,但是我们将在很多地方使用非阻塞(Non-Bl
2、ocking)这个术语。NIO-2需要被看为NewNewI/O…… java.nio.*包包含以下关键结构·Buffers——数据容器·Chartsets——bytes和Unicode之间的翻译容器·Channels——代表I/O操作的连接实体·Selectors——提供可选择的多路复用非阻塞IO·Regexps——提供一些操作正则表达式的工具 我们将集中关注MINA框架的Channels、Selectors以及Buffers部分,其它部分我们将对用户进行隐藏。 本手册将集中关注在这些内部组件上构建我们所需要的系统。NIOvsBIO 知道BIO和ClockingIO这两种APIs之间
3、的不同是很重要的,在阻塞模型中依赖普通的sockets链接:当你读、写或者在socket上做任何操作的时候,被调用的操作将会阻塞调用者,知道操作完成。 在一些例子中,关键是能够调用操作,并期望被调用的操作在操作完成之后能够通知调用者:这使得调用者在平均的运行时间里可以做更多的事情。 这也就是NIO的优点,当你有很多的socket链接时,NIO能帮你更好的处理它们:你不需要为每一个链接创建指定的进程,你只需要使用少量的进程来做同样的事情。 如果你想获得有关于NIO的更多信息,网上有很多不错的文章,还有几本书讲述了有关NIO的问题。2、为什么开发MINA 编写网络程序被看做是繁重的底层开
4、发。它一个开发者不经常学习和知晓的区域,要么是因为很久之前在学校里学过但是现在已经忘了,或者是因为复杂的网络层总是被高层隐藏,总之你没有深入学习过它。 另外当涉及到异步IO的时候,一个额外的发杂层又参杂了进来:time。 BIO(BlockingIO)和NIO(Non-BlockingIO)之间的最大的区别是,在BIO中,你发送一个请求,然后需要一直等待直到你获得答复。在服务器端,这意味着一个进程将会与一个对内连接相联系,所以你不得不处理复杂的多路链接。在NIO中,另一方面,你需要解决非阻塞系统的同步工作,这就意味当一些事情发生之后,你的程序将被唤醒。在NIO中,你不需要调用和等待结果,
5、你发送完命令之后,之后当恢复准备好了你将获得通知。框架的需求 考虑到这些不同,事实上许多的程序都期待在调用网络层的时候有一个阻塞模式,而最好的解决方法就是编写一个模拟阻塞的框架来隐藏这些不同。这就是为什么需要MINA。 但是MINA可以做更多。它为使用TCP、UDP和其他机制进行通信提供统一的接口。当你只考虑TCP和UDP的时候,一个是有连接的(TCP),而另外一个是无连接的(UDP)。MINA掩饰这些不同,使你能够专注于你的程序的两个重要部分:程序的编码以及协议的编码和解码。 MINA不但可以处理TCP和UDP,它还通过VmpPipe或APR为串口通信(RSC232)提供了一个高层接
6、口。我的博客:http://blog.chinaunix.net/uid/25176319.html滨州学院计算机科学与技术系seesky译制 最后但不是最终的,MINA被特别的设计为能够在客户端和服务器端都能运行的网络框架。 编写一个关键是能够扩展的系统,同时在性能和内存使用方面能够符合服务器的要求:这就是MINA所擅长的,它使得构建你自己的服务器变得简单。什么时候使用MINA? 这是一个有趣的问题!MINA在一些情况下并不是最好的选择。当你想要使用MINA的时候有几个元素需要考虑。让我们来看看:·当你没有特定的性能环境的时候它是易用的,这个时候MINA是一个很好的选择因为它让你更简
7、单的构建一个服务器或客户端,而不用在BIO和NIO的上层重复编写处理代码和处理各种参数。你甚至能够用简单地10行代码完成你的服务器,而且可以避免更少的问题。·一定数量的用户连接BIO是比NIO快的。不同的是大约30%支持BIO。这对于拥有几千条用户连接的系统是正确的,但是在一定程度上,BIO已经停止扩展了:你不能用一个用户一个进程的方式处理百万级的用户连接!而NIO可以。另一方面你在MINA部分所花费的时间在
此文档下载收益归作者所有