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

Java socket 及 开源框架MINA(二)

阅读更多
3:Socket网络框架 MINA
MINA是一个网络应用框架,在不牺牲性能和可扩展性的前提下用于解决如下问题:
1:快速开发自己的英勇。
2:高可维护性,高可复用性:网络I/O编码,消息的编/解码,业务逻辑互相分离。
3:相对容易的进行单元测试。

3.1 IoFilters:
IoFilter为MINA的功能扩展提供了接口。它拦截所有的IO事件进行事件的预处理和后处理(AOP)。我们可以把它想象成
Servlet的filters。
IoFilter能够实现以下几种目的:
事件日志
性能检测
数据转换(e.g. SSL support),codec
防火墙…等等

3.2 codec: ProtocolCodecFactory
MINA提供了方便的Protocol支持。如上说讲,codec在IoFilters中设置。
通过它的Encoder和Decoder,可以方便的扩展并支持各种基于Socket的网络协议,比如HTTP服务器、FTP服务器、Telnet服务器等等。

要实现自己的编码/解码器(codec)只需要实现interface: ProtocolCodecFactory即可.
在MINA 1.0版本,MINA已经实现了几个常用的(codec factory):

DemuxingProtocolCodecFactory,
NettyCodecFactory,
ObjectSerializationCodecFactory,
TextLineCodecFactory

其中:
TextLineCodecFactory:
A ProtocolCodecFactory that performs encoding and decoding between a text line data and a Java
string object. This codec is useful especially when you work with a text-based protocols such as SMTP and IMAP.

ObjectSerializationCodecFactory:
A ProtocolCodecFactory that serializes and deserializes Java objects. This codec is very useful when
you have to prototype your application rapidly without any specific codec.

DemuxingProtocolCodecFactory:
A composite ProtocolCodecFactory that consists of multiple MessageEncoders and MessageDecoders. ProtocolEncoder
and ProtocolDecoder this factory returns demultiplex incoming messages and buffers to appropriate MessageEncoders
and MessageDecoders.

NettyCodecFactory:
A MINA ProtocolCodecFactory that provides encoder and decoder for Netty2 Messages and MessageRecognizers.

3.3 business logic: IoHandler

MINA中,所有的业务逻辑都有实现了IoHandler的class完成
interfaceHandles:
all protocol events fired by MINA. There are 6 event handler methods, and they are all invoked by MINA automatically.
当事件发生时,将触发IoHandler中的方法:
sessionCreated(),
sessionOpened(),
sessionClosed(),
sessionIdle(),
exceptionCaught(),
messageReceived(),
messageSent()


MINA 1.O中,IoHandler的实现类:
ChainedIoHandler,
DemuxingIoHandler,
IoHandlerAdapter,
SingleSessionIoHandlerDelegate,
StreamIoHandler
具体细节可参考javadoc。

3.4   MINA的高级主题:线程模式
MINA通过它灵活的filter机制来提供多种线程模型。
没有线程池过滤器被使用时MINA运行在一个单线程模式。
如果添加了一个IoThreadPoolFilter到IoAcceptor,将得到一个leader-follower模式的线程池。
如果再添加一个ProtocolThreadPoolFilter,server将有两个线程池;
一个(IoThreadPoolFilter)被用于对message对象进行转换,另外一个(ProtocolThreadPoolFilter)被用于处理业务逻辑。
SimpleServiceRegistry加上IoThreadPoolFilter和ProtocolThreadPoolFilter的缺省实现即可适用于需
要高伸缩性的应用。如果想使用自己的线程模型,请参考SimpleServiceRegistry的源代码,并且自己

初始化Acceptor。

  

IoThreadPoolFilter threadPool = new IoThreadPoolFilter();threadPool.start();    
IoAcceptor acceptor = new SocketAcceptor();    
acceptor.getFilterChain().addLast( "threadPool", threadPool);    
ProtocolThreadPoolFilter threadPool2 = new ProtocolThreadPoolFilter();    
threadPool2.start();    
ProtocolAcceptor acceptor2 = new IoProtocolAcceptor( acceptor );    
acceptor2.getFilterChain().addLast( "threadPool", threadPool2 );    
...    
threadPool2.stop();    
threadPool.stop();  

3.5 采用MINA进行socket开发,一般步骤如下:
1:

IoAcceptor acceptor = new SocketAcceptor(); //建立client接收器   
or client:   
SocketConnector connector = new SocketConnector(); //建立一个连接器 

2:server的属性配置:

  
SocketAcceptorConfig cfg = new SocketAcceptorConfig();    
cfg.setReuseAddress(true);    
cfg.getFilterChain().addLast(    
            "codec",    
            new ProtocolCodecFilter( new ObjectSerializationCodecFactory() ) ); //对象序列化 codec factory    
cfg.getFilterChain().addLast( "logger", new LoggingFilter() );  

3:绑定address和business logic
server:

  
acceptor.bind(    
        new InetSocketAddress( SERVER_PORT ),    
        new ServerSessionHandler( ), cfg ); // 绑定address和handler    
   
   
connector.connect(new InetSocketAddress( HOSTNAME, PORT ),    
                new ClientSessionHandler(msg), cfg );   
分享到:
评论
1 楼 maozilee 2011-08-22  
还有一个经典的图的。。

相关推荐

    niosocket及其开源框架MINA学习总结收集.pdf

    MINA (Java Multithreaded Network Application Framework) 是一个基于NIO的开源框架,它为开发高性能、高可用性的网络应用提供了抽象层。MINA 提供了事件驱动的模型,简化了网络编程的复杂性,开发者可以通过编写...

    Android Java Socket框架 Mina2.0

    总之,Android Java Socket框架Mina2.0提供了一个强大的工具集,使得开发者能够更专注于业务逻辑,而无需过多关注底层的网络通信细节。通过理解和掌握Mina,开发者可以构建出高效、稳定、易于扩展的网络应用。

    Mina+Socket通信

    Mina和Socket是两种常见的网络通信框架和技术,它们在Java编程环境中被广泛使用。本篇文章将深入探讨如何使用Mina与Socket实现通信,并提供客户端和服务端的实现代码概述。 Mina(全称“MINA: Minimalistic ...

    一般Socket客户端与Mina NIO Socket客户端对比示例

    相比之下,Mina NIO是一种基于Java NIO API的网络通信框架,它利用了多路复用器(Selector)和通道(Channel)的概念,实现了非阻塞I/O。在Mina中,`SocketConnectorSupport.java`可能是一个自定义的连接器支持类,...

    mina框架中socket应用的简单小项目,包含了所需jar

    "mina框架" 标签强调了项目的核心技术是Apache MINA,一个用于构建网络应用程序的开源框架。"socket" 标签则表明项目涉及到的是网络通信的基础部分,即Socket编程,这是互联网应用中常用的数据交换机制。 **文件...

    基于Android开发MINA框架使用详解

    此时,我们可以借助开源框架MINA(Multi-purpose Infrastructure for Network Applications)来构建高效、可扩展的网络应用程序。MINA是一个用Java编写的高性能、异步I/O框架,适用于多种传输协议,如TCP/IP和UDP/IP...

    java socket nio 研究

    2. `MinaTimeServer.java`:Mina是一个开源的Java网络应用框架,它提供了一套高度可扩展的、高效的网络通信API。这个类可能是使用Mina库来实现的NIO时间服务器,Mina简化了NIO的使用,提供了更高级别的抽象。 3. `...

    mina框架的demo 入门,开发

    Mina框架是一个基于Java的网络通信应用框架,它为高性能、高可用性的网络应用程序提供了强大的支持。本教程将深入探讨Mina框架的入门与开发,帮助你快速掌握这个框架的关键概念和技术。 首先,理解Mina的核心概念至...

    mina连接 mina心跳连接 mina断线重连

    Apache Mina是一个开源的网络通信框架,常用于构建高性能、高效率的服务端应用程序,尤其在Java平台上。在本文中,我们将深入探讨Mina的核心概念,包括连接管理、心跳机制以及断线重连策略。 首先,让我们理解"Mina...

    MINA2 教程 socket

    MINA2,全称为“Java Multicast Network Application Framework 2”,是Apache软件基金会的一个开源项目,主要用于构建高性能、高可用性的网络应用程序。MINA提供了一种抽象层,简化了网络编程,尤其是TCP/IP和UDP/...

    MinaServer for Android

    Mina是一个开源项目,旨在简化网络应用开发,尤其适用于TCP/IP和UDP/IP协议,如Socket编程。通过使用Mina,开发者可以构建复杂的服务端系统,如FTP服务器、聊天服务器或者任何需要处理大量并发连接的应用。 **...

    socket框架调研文档

    开源的Socket框架如QuickServer和Netty提供了简化TCP服务器和客户端开发的解决方案。QuickServer是一个免费的Java库,专注于多线程、多客户端TCP服务器应用的快速创建。而Netty是一个高性能的网络应用框架,它封装了...

    mina socket 代码

    MinA Socket是Apache软件基金会下的一个开源项目,全称为“MINA (Multi-purpose Infrastructure for Network Applications)”,它提供了一个高性能、可伸缩的网络应用程序框架,用于开发基于TCP/IP和UDP/IP协议的...

    mina源代码学习提供下载

    Apache MINA(Multipurpose Infrastructure for Network Applications)是一个Java框架,专为开发高性能和高度可扩展的网络应用程序而设计。MINA 提供了一种抽象层,允许开发者远离底层的Socket编程,专注于业务逻辑...

    apache mina实例免费下载

    Apache MINA(Multipurpose Infrastructure for Network Applications)是一个开源框架,主要设计用于简化网络应用程序的开发,尤其是基于TCP和UDP协议的应用。它提供了高度可扩展和高性能的非阻塞I/O模型,使得...

    Mina文件及字符串传输

    在IT行业中,Apache Mina是一个广泛使用的开源框架,主要用于创建高性能、高效率的网络应用程序。Mina提供了一种抽象层,使得开发者可以专注于业务逻辑,而不是底层的网络通信细节。本话题将深入探讨如何利用Mina...

    mina 长连接 客户端+服务端

    Mina 是一个强大的开源框架,主要用于构建网络应用,如服务器和客户端。在Java环境中,它提供了高效的、事件驱动的网络应用程序框架,支持TCP和UDP协议,适用于开发高性能、高并发的网络服务。在这个"mina 长连接 ...

    mina 多路分离解码

    mina框架是Apache软件基金会的一个开源项目,它为Java开发者提供了一套高效、功能丰富的网络通信库,主要用于构建高性能的网络应用服务器,如TCP和UDP服务。在mina框架中,“多路分离解码”(Multiplexing Decoding...

    Mina是java脚本消歧的好工具.zip

    标题中的"Mina是java脚本消歧的好工具"暗示了我们正在讨论Apache Mina,一个用Java编写的高度可扩展的网络通信框架。Apache Mina不仅仅局限于脚本消歧,它实际上是一个广泛使用的库,用于创建高性能、高效率的网络...

    socket资源

    在本文中,我们将深入探讨Socket的基本概念、工作原理、使用步骤,以及MINA框架在Socket编程中的应用。 首先,让我们了解什么是Socket。Socket,又称为套接字,是操作系统为网络通信提供的接口,它允许应用程序通过...

Global site tag (gtag.js) - Google Analytics