下载APP 编程狮,随时随地学编程
返回 首页

Netty 实战精髓篇

开始阅读
手册说明:

关于《Netty 实战精髓篇》


《Netty 实战精髓篇》原标题《Netty 实战(精髓)》,经作者waylau授权转载至W3Cschool.cn

《Netty 实战精髓篇》是对 Norman Maurer 的 《Netty in Action》(基于 MEAP v10)的一个中文精简。《Netty 实战 精髓篇》取其精华,去其糟粕,带你快速掌握 Netty ,其中插入的配图,以图文并茂的方式减少用户在理解上的困难。本书是作者利用业余时间编写的,所以在时间的分配上较为紧凑,作者受限于精力和能力,因此书中未免有纰漏和错误,望读者能够热忱斧正。

对于初学者,也推荐参阅《Netty 4.x 用户指南》。与之类似的 NIO 框架还有 MINA, 可参阅《Apache MINA 2 用户指南》


Netty的介绍


Netty是由JBOSS提供的一个java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。也就是说,Netty 是一个基于NIO的客户,服务器端编程框架,使用Netty 可以确保你快速和简单的开发出一个网络应用,例如实现了某种协议的客户,服务端应用。Netty相当简化和流线化了网络应用的编程开发过程,例如,TCP和UDP的socket服务开发。

Netty有哪些新增特性?


  1. 能够更简单地处理大容量数据流;
  2. 能够更简单地处理协议编码和单元测试;
  3. I/O超时和idle状态检测;
  4. 应用程序的关闭更简单,更安全;
  5. 更可靠的OutOfMemoryError预防。

Netty与Mina相比有什么优势?


  1. 都归于Trustin Lee名下,但是Netty更晚;
  2. Mina将内核和一些特性的联系过于紧密,使得用户在不需要这些特性的时候无法脱离,相比下性能会有所下降,Netty解决了这个设计问题;
  3. Netty中包含了许多Mina的特性,Netty的文档更清晰;
  4. Netty更新周期更短,新版本的发布比较快;
  5. 它们的架构差别不大,Mina靠apache生存,而Netty靠jboss,和jboss的结合度非常高,Netty有对google protocal buf的支持,有更完整的ioc容器支持(spring,guice,jbossmc和osgi);
  6. Netty比Mina使用起来更简单,Netty里你可以自定义的处理upstream events 或/和 downstream events,可以使用decoder和encoder来解码和编码发送内容;
  7. Netty和Mina在处理UDP时有一些不同,Netty将UDP无连接的特性暴露出来;而Mina对UDP进行了高级层次的抽象,可以把UDP当成"面向连接"的协议,而要Netty做到这一点比较困难。

在线阅读


W3Cschool https://www.w3cschool.cn/essential_netty_in_action

W3Cschool上的参考资料


《Netty 4.x 用户指南》

《Java教程》

javascript教程


目录

Netty 前言

Netty 异步和数据驱动

Netty 介绍
Netty由哪几个部分构成?
关于Netty 实战这本书

第一个Netty应用

设置Netty开发环境
构建Netty 客户端/服务器 总览
Netty如何写一个 echo 服务器
Netty写一个 echo 客户端
Netty 编译和运行 Echo 服务器和客户端
Netty应用总结

Netty 架构模型的组件总览

Netty 快速入门
Netty的Channel, Event 和 I/O
Netty中 Bootstrapping 的作用
认识Netty的ChannelHandler 和 ChannelPipeline
近距离观察Netty的ChannelHandler
总结Netty部件及概述

介绍Netty的核心功能

Netty核心之Transport(传输)

Netty案例研究:Transport 的迁移
基于Netty传输的API
Netty中包含的 Transport
Netty中Transport 的使用情况
总结Netty的传输

Netty核心之Buffer(缓冲)

Netty中的Buffer API
Netty字节数据的容器ByteBuf
Netty字节级别的操作
Netty之ByteBufHolder的使用
Netty之ByteBuf 分配
Netty引用计数器
Netty的ByteBuf容器总结

研究Netty中的ChannelHandler 和 ChannelPipeline

Netty中的ChannelHandler 家族
介绍Netty的ChannelPipeline
Netty接口ChannelHandlerContext
Netty的ChannelHandler组件总结

Netty核心之Codec 框架

Netty 什么是 Codec
Netty提供的Decoder(解码器)
Netty的Encoder(编码器)
Netty抽象 Codec(编解码器)类
Netty的Codec框架总结

Netty已经提供的 ChannelHandler 和 Codec

使用 SSL/TLS 加密 Netty 程序
构建 Netty HTTP/HTTPS 应用
Netty检测空闲连接以及超时
Netty如何解码分隔符和基于长度的协议
Netty如何编写大型数据
Netty序列化数据
Netty提供的编解码器和处理程序总结

Netty引导(Bootstrapping)

Netty中的Bootstrap 类型
Netty引导客户端和无连接协议
Netty引导服务器
Netty 从 Channel 引导客户端
Netty 在一个引导中添加多个 ChannelHandler
使用Netty 的 ChannelOption 和属性
关闭Netty之前已经引导的客户端或服务器
Netty引导总结

NETTY 实例

Netty单元测试

Netty单元测试总览
Netty如何测试 ChannelHandler
Netty测试异常处理
Netty测试总结

Netty实现WebSocket聊天功能

Netty WebSocket 程序示例
Netty添加 WebSocket 支持
Netty测试程序
Netty使用WebSocket总结

Netty怎么使用SPDY

Netty SPDY 背景介绍
Netty SPDY示例程序
Netty中的SPDY实现
Netty 启动 SpdyServer 并测试
总结Netty使用SPDY

Netty通过UDP广播事件

Netty的UDP基础
Netty UDP 广播
Netty UDP示例
Netty LogEvent的POJO
Netty如何写广播器
Netty如何写监视器
Netty 运行LogEventBroadcaster和LogEventMonitor
Netty中UDP使用总结

Netty高级主题

实现Netty自定义的编解码器

Netty编解码器的范围
Netty实现Memcached编解码器
Netty 了解Memcached二进制协议
Netty 编码器和解码器
测试Netty编解码器
Netty编解码器总结

Netty EventLoop和线程模型

Netty 线程模型的总览
Netty事件循环EventLoop
Netty利用EventLoop实现调度任务执行
Netty I/O和EventLoop/Thread的分配细节
Netty线程模型总结

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }