Netty是一个传输层的框架,主要的功能就是两个:封装了NIO的操作,封装了CodeC接口,从而使得NIO的开发者只需要关注与业务功能本身的ChannelHandler。
不只是Netty,传输层主要解决的问题就是这两个,处理IO,处理CodeC
CodeC主要处理的问题就是字节流的分帧(Frame),一般有以下几种
按结束符,比如http定长使用消息头消息体的方式,在消...
分类:
Web程序 时间:
2014-09-16 17:32:30
阅读次数:
219
前面关注的地方都是Netty采用的流水线处理方式的组织方式,ChannelHandler如何管理,通道状态,通道事件等这些上层的架构设计,那么Netty中如何实现诸如套接字绑定,连接,关闭等这些底层的操作呢?不能只顾着套用API写程序,却对细节不求甚解。这里大致追踪下OIO模式下Channel中套接字绑定的实现,(NIO以后分析)其实逻辑都是一样的,只是在线程模型的地方时不同的。
大致过程如下(...
分类:
Web程序 时间:
2014-09-12 17:10:13
阅读次数:
175
ChannelPipeline的作用就是组织一系列的ChannelHandlers 为某一个Channel服务,处理各种事件。实现了拦截过滤器模式的高级形式(an advanced form of the Intercepting
Filter pattern),进而有效控制如何处理一个事件以及ChannelHandlers之间如何交互。类型结构图为:
流水线的创建:对于...
分类:
Web程序 时间:
2014-09-12 12:00:13
阅读次数:
310
Netty3 源码分析 - ChannelEvent
ChannelEvent是和这个Channel相关的IO事件和请求,会由各个ChannelHandler来处理。
事件分为上行和下行两种。当服务器从客户端收到一个消息,那么与之相关的就是一个上行事件(upstream event),流水线中的UpstreamChannelHandler会处理它;如果服务要回应这个...
分类:
Web程序 时间:
2014-09-10 15:49:20
阅读次数:
332
Netty3 源码分析 - ChannelHandlerContext
ChannelHandlerContext存在的意义是可以让其管理的Handler与Pipeline或其他handlers进行交互,ChannelHandler的理解在前面说过。
发送事件:可以调用 sendUpstream(ChannelEvent)
或sendDownstream(Channel...
分类:
Web程序 时间:
2014-09-10 12:35:11
阅读次数:
282
Netty3 源码分析 - ChannelHandler
每个通道关联一个Pipeline,在流水线中拦截处理各种事件的对象就是ChannelHandler,它处理ChannelEvent而后进行传递。
接口ChannelHandler没有提供任何方法,有两个子接口分别用来规范处理上行和下行的通道事件。
ChannelHandler是随ChannelHandl...
分类:
Web程序 时间:
2014-09-10 10:54:00
阅读次数:
221
State management(handler的状态管理) A ChannelHandler often needs to store some stateful information. The simplest and recommended approach is to use member variables: public?interface?Message?...
分类:
Web程序 时间:
2014-07-29 16:22:59
阅读次数:
317
1.创建ChannelPipeline的方法是实现接口 ChannelPipelineFactory 中的那个 getPipeline() 方法,然后根据自己的业务需要加入相应的 ChannelHandler。
2.
接口 ChannelHandlerContext 提供的功能是统一管理这些ChannelHandler,使其能够和这个ChannelPipelin...
分类:
其他好文 时间:
2014-06-24 23:40:24
阅读次数:
237