Netty 代码分析Posted by bucketli on 2010-09-25 Leave a comment (1) Go to commentsNetty 提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序[官方定义],整体来看其包含了以下内容:1
提供了丰富的协议编解码支持,2
实现自有的buffer 系统,减少复制所带来的消耗,3
整套 channel 的实现,4
基于事件的过程流转以及完整的网络事件响应与扩展,5
丰富的example
本文并不对 Netty 实际使用中可能出现的问题做分析,只是从代码角度分析它的架构以及实现上的一些关键细节
首先来看下最如何使用 Netty(其自带 example 很好展示了使用),Netty 普通使用一般是通过 BootStrap 来启动,BootStrap 主要分为两类:1
面向连接(TCP)的BootStrap(ClientBootStrap 和 ServerBootstrap),2
非面向连接(UDP) 的(ConnectionlessBootstrap)
Netty 整体架构很清晰的分成 2 个部分,ChannelFactory 和ChannelPipelineFactory,前者主要生产网络通信相关的Channel 实例和ChannelSink 实例,Netty 提供的ChannelFactory 实现基本能够满足绝大部分用户的需求,当然你也可以定制自己的ChannelFactory,后者主要关注于具体传输数据的处理,同时也包括其他方面的内容,比如异常处理等等,只要是你希望的,你都可以往里添加相应的handler,一般 ChannelPipelineFactory 由用户自己实现,因为传输数据的处理及其他操作和业务关联比较紧密,需要自定义处理的handler