`
firecloudhawk
  • 浏览: 17127 次
  • 来自: ...
最近访客 更多访客>>
社区版块
存档分类
最新评论

Mina 代码分析 1

阅读更多

      趁着最近比较闲,,花了几天时间粗略看了下Mina的源代码,把最近的心得写出来。一来,怕自己以后忘了。二来,也为跟我一样对Mina感兴趣的朋友们参考参考,免得少走弯路。


      首先,Mina是什么?能帮我们做什么?我研究一个新技术的时候,首先问的就是这样的问题。我个人的理解就是Mina是一个关注于通讯层的框架,任何需要底层通讯的应用,都可以使用它。更详细准确的介绍,请看官方网站http://mina.apache.org/


Mina的优势:

1. 用NIO实现,无需太多线程。可以处理的并发量更大。

2. 对于应用层来说,编程更方便。



好了废话少说,先看个Demo吧

public static void main(String[] args) throws IOException {
    // 创建Acceptor
    IoAcceptor acceptor = new NioSocketAcceptor();

    // 注册filter
   acceptor.getFilterChain().addLast( "logger", new LoggingFilter() );
   acceptor.getFilterChain().addLast( "codec", new ProtocolCodecFilter( new TextLineCodecFactory( Charset.forName( "UTF-8" ))));

    // 注册你的业务处理类
    acceptor.setHandler( new TimeServerHandler() );

    // 配置参数
    acceptor.getSessionConfig().setReadBufferSize( 2048 );
    acceptor.getSessionConfig().setIdleTime( IdleStatus.BOTH_IDLE, 10 );

    // 让Acceptor在绑定的地址侦听
    acceptor.bind( new InetSocketAddress(PORT) );
}

 

 

IoHandler
public interface IoHandler {

     void sessionCreated(IoSession session) throws Exception;

     void sessionOpened(IoSession session) throws Exception;

     void sessionClosed(IoSession session) throws Exception;

     void sessionIdle(IoSession session, IdleStatus status) throws Exception;

     void exceptionCaught(IoSession session, Throwable cause) throws Exception;

     void messageReceived(IoSession session, Object message) throws Exception;

     void messageSent(IoSession session, Object message) throws Exception;
}
  

      首先new一个Acceptor,可以看出,Acceptor是我们要操作的服务器对象。然后,向Acceptor里注册了两个filter。filter的概念类似于web服务器里的filter。filter处于你的业务端代码和具体的发送数据代码之间,它负责过滤或者说处理传递过来的信息。业务处理代码,写在Handler里。


      代码结构相当的清晰。我们需要填写的业务代码就是 Handler 和 Filter了。它们俩很相似,但是在概念上是有区别的。filter事实上主要是处理底层的通信字节流,通信协议等,一般跟业务逻辑没什么关系。Handler是专门暴露给应用开发者,用来填写业务处理代码的。


看看下面的图便知道了

 


 

未完待续

 

  • 大小: 32.6 KB
1
0
分享到:
评论

相关推荐

    Mina源码解析

    在深入解析Mina源码的过程中,我们可以从以下几个关键知识点入手: 1. **Mina的过滤器机制实现**: Mina的核心设计理念之一是过滤器链(Filter Chain),它借鉴了Servlet的过滤器模型。每个过滤器都可以在数据传输...

    Mina2源码分析

    Mina2源码分析,学习mina不可多得的文档资料

    MINA源码分析,内涵类的讲解

    在这个“MINA源码分析,内涵类的讲解”中,我们将深入探讨MINA的核心组件和设计模式,以便更好地理解和利用这个强大的框架。 首先,我们需要了解MINA的基础架构。MINA的核心是`IoService`接口,它定义了服务端和...

    apache-mina源码

    通过阅读和分析`apache-mina-2.0.16`的源码,我们可以深入理解MINA的设计思想,学习如何构建高效的网络服务,并能根据自己的需求定制和扩展MINA的功能。对于想要从事网络编程或系统架构设计的开发者来说,研究MINA...

    Mina 框架源码解析-构建简单通信程序

    通过分析源码,我们可以看到Mina如何优雅地将网络编程的复杂性封装起来,让开发者可以更专注于应用的业务层面。同时,通过心跳机制,我们能够实时检测网络状况,确保服务的稳定性和可靠性。 总的来说,Mina框架提供...

    mina源代码学习提供下载

    通过阅读和分析MINA的源代码,你可以更深入地了解其内部工作原理,学习如何利用MINA构建高性能的网络服务。这包括但不限于理解过滤器链的执行流程、如何自定义协议解析器以及如何优化MINA的配置以适应不同场景的需求...

    Mina 2.0快速入门与源码解析

    Mina 2.0快速入门与源码解析 很适合初学者使用!!!

    mina 源码

    通过源码分析,我们可以了解到MINA如何优化性能,比如减少线程上下文切换,使用NIO的selector提高并发能力等。这些知识对于提升自己编写网络程序的能力大有裨益。 通过上述分析,我们可以看出,MINA是一个强大的...

    mina2 源码 mina

    标题"mina2 源码 mina"暗示我们将探讨MINA2的源代码,这是一个非常有价值的资源,对于理解MINA的工作原理、学习如何构建网络应用程序以及定制MINA的行为非常有用。MINA的源码包含了丰富的注释和示例,可以帮助开发者...

    mina源码+例子mina-2.0.0-M6.zip

    2. **分析源码**:通过阅读MINA的源码,了解其内部处理流程,如读写事件的处理、过滤器链的工作方式等。 3. **编写简单的应用**:从例子入手,创建一个简单的MINA服务器和客户端,理解它们之间的通信机制。 4. **...

    Apache mina源代码框架解析

    写这篇文档主要是想对刚接触Mina的人讲解一些Mina的基本知识,由浅入深,一步一步的学习Mina思想的精髓。这里只是简单的涉及一点,不会对其做很深入的探讨。但是Mina的服务器和客户端在很大的程度上都是一样,所以...

    Mina 1.1.7 示例源码(apache.mina.example)

    这个示例集合是为了学习和交流而准备的,开发者可以通过分析源码了解Mina如何处理网络通信,如何构建过滤器链,以及如何实现自定义的协议编码解码器。同时,这些示例也提供了实际操作的机会,便于开发者在遇到问题...

    Mina Socket 源代码

    **Mina Socket 源代码解析** Mina Socket 是 Apache Mina 项目的一部分,它是一个高性能、可扩展的网络通信框架。Mina 提供了一种简单的方式来构建网络应用,如服务器和客户端,支持多种协议,如 TCP/IP 和 UDP。在...

    Mina学习资料

    通过阅读Mina2源码分析.doc,你可以了解到实际项目中如何应用Mina框架,包括设置服务器、配置过滤器链、处理网络事件等。这份文档将提供具体案例,帮助你将理论知识转化为实践技能。 总结来说,Apache Mina是一个...

    Mina2.0框架源码剖析

    通过深入分析Mina2.0的源码,我们可以了解到其内部的事件驱动模型、网络通信机制以及如何通过过滤器和处理器来处理网络请求。这有助于我们更好地理解和利用Mina框架来开发高并发、高性能的网络应用。

    apache下的mina框架的源码

    在深入分析MINA框架源码之前,我们需要理解几个核心概念: 1. **过滤器(Filter)**:MINA采用过滤器链模式处理网络事件,每个过滤器都可以对入站和出站的数据进行处理。过滤器可以用于数据编码、解码、安全处理、...

    MINA 2.0.9源码

    此外,源码分析还能帮助你掌握如何自定义Filter和Codec,以满足特定的应用场景需求。 总之,MINA 2.0.9源码为开发者提供了一个深入学习网络编程和异步I/O的好资源,通过研究和实践,开发者可以提升自己的网络应用...

    Java mina2源码

    源码分析还能帮助我们理解Java的多线程、并发控制和事件驱动编程等高级特性,提升我们的编程技能和解决问题的能力。 此外,对于Java开发者来说,熟悉Mina2源码有助于理解其他类似的网络通信框架,比如Netty,因为...

    一个Apache MINA使用案例源代码ApacheMina

    在分析和学习这个源代码时,你应该关注MINA如何处理并发、内存管理和性能优化。同时,了解如何将MINA与Android的生命周期管理相结合,确保在网络连接断开或应用被暂停时能够正确地处理资源释放和恢复。 总结来说,...

    MINA_API+MINA_DOC+mina

    这份手册可能详细解析了MINA服务器的搭建步骤、配置选项,以及如何处理各种网络事件。它还可能包含示例代码,展示如何处理客户端连接、读写数据、异常处理等常见任务,让开发者能快速上手MINA服务器开发。 学习MINA...

Global site tag (gtag.js) - Google Analytics