`
bsr1983
  • 浏览: 1116431 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Mina学习笔记一

    博客分类:
  • Mina
 
阅读更多
为啥是Mina?
BIO Blocking IO 阻塞IO
NIO Non-Blocking IO 非阻塞IO
BIO和NIO的区别在于,在BIO中,你发送一个请求,你需要一直等待,直到获取到响应。在服务端,这意味着任何到来的连接都将会关联到一个线程,所以你将不得不处理连接的多路复用的复杂性。另一方面,在NIO中,你不得不处理一个非阻塞系统的同步,这也就意味着当一些时间发生时你的应用将被调用。在NIO中,你不需要调用并等待一个结果,你发送一个命令,当结果准备好后,你会得到通知。
需要一个框架
考虑到这些不同,以及多数应用在调用网络层是通常都期待一个阻塞模式,但是最好的解决方法是编写一个模拟阻塞模式的框架隐藏这些方面的复杂性。而这正是MINA所做的。
但MINA做的并不止这些,它给应用提供一个通用IO版本,来实现TCP、UDP或其他任何方式的连接。
MINA不仅能处理TCP和UDP,它在串行通信(RSC232)上提供了一个层,在VmpPipe或APR之上。
MINA是一个特别设计的网络框架,可以工作在客户端和服务端。
何时使用MINA?
这是一个有趣的问题!MINA并不期望成为任何情况下的最优的选择。下面有一些因素在考虑是否使用MINA可以用到:
1.当没有特殊的性能要求时,MINA是一个比较好的选择,在编写基于BIO或NIO的相同应用时,你可以很容易开发出一个客户端或一个服务器,而不必去处理各种各样的参数和处理不同的用例。你可以通过编写几十行代码来实现你的服务,这里有一些常见的误区。
2.大量的用户连接的BIO要比NIO快,差异大概是30%。这在几千个用户连接的情况下是成立的,但到了一个点,BIO将基本上停止扩展,你将不能通过每个用户一个线程的方式来处理百万级的连接,但NIO可以。现在,另一个方面是在你的MINA部分代码上花费的时间可能并不明显,与你的应用将花费的时间相比。在某些时候,自己花费更多的时间和经历来编写一个更快的网络层并不值得,所带来的收益也并不明显。
3.MINA作为一个成熟的系统被全世界数以万计的应用使用。Apache的一些基于MINA的项目也运行的非常好。这是也是另一种形式的担保,让你免去在自己实现的网络层上花费大量的时间去解决那些诡异的错误。
4.MINA目前对现在支持的协议都有不同实现,包括:HTTP, XML, TCP, LDAP, DHCP, NTP, DNS, XMPP, SSH, FTP... ,在某种情况下,MINA并不仅仅是一个NIO的框架,而是一个实现了不同协议的网络层。未来MINA的功能之一就是提供你能用到的现有的协议集合。
功能
MINA作为一个易用的、功能全面的网络应用框架提供一下功能:
(1)为各种传送类型的协议提供统一的API:
1)通过JAVA NIO实现的TCP/IP及UDP/IP
2)通过RXTX实现的串行通信(RS232)
3)VM内部管道通信
4)你可以实现你自己的
(2)作为一个扩展点的,类似于Servlet 过滤器的过滤器接口
(3)底层和高层API:
1)底层API:使用ByteBuffers
2)高层API:使用用户定义的消息对象和编辑码器
(4)高度可定制的线程模型
1)单线程
2)一个线程池
3)多线程池(例如SEDA)
(5)开箱即用的SSL、TLS、StartTLS ,通过java 5的SSLEngine来支持
(6)过载保护和流量截留
(7)使用模拟对象提供单元可测试性
(8)JMX 的可管理性
(9)通过StreamIoHandle实现的基于流的I/O支持
(10)集成了流行的容器,像PicoContainer 和spring
(11)平滑从Apache MINA的前身Netty迁移,
第一步
(1)下载
首先,下载最新版本的MINA,下载地址:
http://mina.apache.org/mina-project/downloads.html
(2)里面有啥
将下载的zip或tar.gz解压到本地
文件夹:
1)dist 包含MINA库代码的jar
2)docs 包含API文档和外部参照代码
3)lib 包含所有使用MINA所需的jar包
(3)运行你的第一个MINA程序
我们已经下载好了MINA的release,现在我们来运行第一个release中自带的MINA的例子。
将以下jars添加到classpath
 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
日志提示:
Log4J1.2的使用者:slf4j-api.jar, slf4j-log4j12.jar, and Log4J 1.2.x
Log4J1.3的使用者:slf4j-api.jar, slf4j-log4j13.jar, and Log4J 1.3.x
java.util.logging的使用者:slf4j-api.jar and slf4j-jdk14.jar
重要:请确定你正确使用了slf4j-*.jar来匹配你的日志框架,举例来说,slf4j-log4j12.jar 和 log4j-1.3.x.jar不可在一起使用,否则将会发生故障,如果你不需要日志框架,你可以使用slf4j-nop.jar不记录日志或使用slf4j-simple.jar来记录最基本的日志。
在命令行中输入以下命令:
$ java org.apache.mina.example.gettingstarted.timeserver.MinaTimeServer
这将启动服务,现在通过telnet命令来看看程序如何运行
telent 127.0.0.1 9123
总结
在这一章中,我们了解到了MINA的基本架构,通用于客户端和服务端。
1
0
分享到:
评论

相关推荐

    Mina学习笔记

    Apache Mina是一个基于Java的网络通信框架,专为高性能、高可用性和可扩展性而设计。...在深入学习Mina的过程中,理解IoService及其子类的工作原理,以及如何结合IoHandler实现业务逻辑,对于掌握Mina框架至关重要。

    MIna2.0学习笔记

    1. **下载使用的Jar包**:在开始Mina2.0的学习之前,你需要从Apache官网或其他可靠的源下载Mina的最新版本库。通常,这包括核心库和其他依赖库,如slf4j用于日志记录。 2. **工程创建配置**:创建一个新的Java项目...

    Apache Mina Server 2.0中文参考手册V1.0,Apache Mina2.0学习笔记(修订版)

    Apache Mina Server 2.0中文参考手册V1.0,Apache Mina2.0学习笔记(修订版)Apache Mina Server 2.0中文参考手册V1.0,Apache Mina2.0学习笔记(修订版)

    mina学习笔记,记录所有API

    在MINA的学习笔记中,记录的所有API通常会包括以下几个核心部分: 1. **IoSession**: 这是MINA的核心接口,代表了客户端和服务器之间的连接。IoSession提供了读写数据、管理连接状态、获取会话属性等功能。例如,`...

    Mina2.0学习笔记(修订版).

    Apache Mina是一个高性能、事件驱动的网络应用框架,主要用于简化开发服务器端的复杂性,尤其在处理TCP/IP、UDP和SSL/TLS等协议时。它提供了丰富的API和工具,使得开发者能够快速构建网络应用程序,如FTP、SMTP、...

    Mina2.0学习笔记(完整版).doc

    Apache Mina是一个强大的开源框架,专门用于构建高性能、高可扩展性的网络应用程序。Mina2.0是其一个重要的版本,提供了许多改进和新特性,使得开发者能够更轻松地处理网络通信任务,尤其是在Java NIO(Non-blocking...

    Mina 学习笔记(入门)

    **Mina 学习笔记(入门)** Apache Mina 是一个高度可扩展的网络通信框架,主要用于构建高性能、高效率的服务器端应用。它提供了一种简单的方式来处理网络协议,如TCP/IP和UDP/IP,以及SSL/TLS加密的连接。在本学习...

    apache mina 学习笔记三(子项目FtpServer)

    在本学习笔记中,我们将专注于MINA的子项目——FtpServer,它是实现FTP服务器功能的一个模块。 FTP(File Transfer Protocol)是一种广泛使用的互联网协议,用于在不同主机之间传输文件。Apache MINA FtpServer提供...

    Apache mina2学习笔记DEMO

    在这个"Apache MINA2学习笔记DEMO"中,我们很可能会看到如何使用MINA来创建一个自定义协议的示例。自定义协议通常是为了满足特定应用的需求,例如高效的数据传输、安全性或者特定的编码格式。MINA允许开发者定义自己...

    MINA学习笔记(仅供参考)

    ### MINA学习笔记 #### MINA概述 MINA是一个用Java编写的高性能、轻量级的网络通信框架,主要用于简化网络编程的复杂性。它支持多种传输协议(如TCP/IP和UDP/IP),并且提供了一套丰富的API来处理网络通信相关的...

    mina学习笔记

    《mina学习笔记》 Apache MINA(Multipurpose Infrastructure for Network Applications)是一个开源框架,主要设计用于简化网络应用程序的开发,尤其是TCP和UDP协议的应用。MINA 提供了一种与网络协议无关的API,...

    Apache_Mina2.0学习笔记

    最近使用Mina开发一个Java的NIO服务端程序,因此也特意学习了Apache的这个Mina框架。 引言 1 一. Mina入门 2 第一步.下载使用的Jar包 2 第二步.工程创建配置 2 第三步.服务端程序 3 第四步.客户端程序 6 第五步.长...

    Mina学习笔记(修订版)

    MINA 是一个网络应用框架,有助于用户非常方便地开发高性能、高伸缩性的网络应用。 此文档80多页,是方便Mina上手的文档。

Global site tag (gtag.js) - Google Analytics