本书共分 4 个部分:
第一部分:Netty 的概念及体系结构
第一部分是对框架的详细介绍,涵盖了它的设计、组件以及编程接口。
第 1 章首先简要概述了阻塞和非阻塞的网络 API,以及它们对应的 JDK 接口。我们引入 Netty作为构建高度可伸缩的、异步的、事件驱动的网络编程应用的工具包。我们将首先看一下该框架的基础构件块:Channel、回调、Future、事件及 ChannelHandler。
第 2 章解释了如何配置读者的系统以构建并运行本书中的示例代码。我们将用一个简单的应用程序来测试它,这是一个回送从连接的客户端接收到的消息的服务器应用程序。我们还介绍了引导(Bootstrap)——在运行时组装和配置一个应用程序的所有组件的过程。
第 3 章首先讨论了 Netty 的技术以及体系结构方面的内容。介绍了该框架的核心组件:Channel、EventLoop、ChannelHandler 以及 ChannelPipeline。这一章的最后解释了引导服务器和客户端之间的差异。
第 4 章讨论了网络传输,并且对比了通过 JDK API 和 Netty 使用阻塞和非阻塞传输的用法。我们研究了 Netty 的传输 API 的底层接口的层级关系以及它们所支持的传输类型。
第 5 章专门介绍了该框架的数据处理 API——ByteBuf,Netty 的字节容器。我们描述了它相对于 JDK 的 ByteBuffer 的优势,以及如何分配和访问由 ByteBuf 所使用的内存。我们展示了如何通过引用计数来管理内存资源。
第 6 章重点介绍了核心组件 ChannelHandler 和 ChannelPipeline,它们负责调度应用程序的处理逻辑,并驱动数据和事件经过网络层。其他的主题包括在实现高级用例时ChannelHandlerContext 的角色,以及在多个ChannelPipeline 之间共享ChannelHandler的缘由。这一章的最后说明了如何处理由入站事件和出站事件所触发的异常。
第 7 章提供了关于线程模型的一般概述,并详细地介绍了 Netty 的线程模型。我们研究了interface EventLoop,它是 Netty 的并发 API 的主要部分,并解释了它和线程以及 Channel的关系。这个信息对于理解 Netty 是如何实现异步的、事件驱动的网络编程模型来说至关重要。我们展示了如何通过EventLoop 进行任务调度。
第 8 章以介绍 Bootstrap 类的层级结构作为引子,深入地讲解了引导。我们重新审视了一些基本用例以及一些特殊用例,例如,在一个服务器应用程序中引导一个客户端连接、引导数据报 Channel,以及在引导的过程中添加多个 ChannelHandler。这一章最后讨论了如何优雅地关闭应用程序并有序地释放所有的资源。
第 9 章是关于对 ChannelHandler 进行单元测试的讨论,对此 Netty 提供了一个特殊的Channel 实现EmbeddedChannel。本章的示例展示了如何使用这个类和 JUnit 一起来测试入站和出站 ChannelHandler 实现。
第二部分:编解码器
数据转换是网络编程中最常见的操作之一。第二部分介绍了 Netty 提供的用于简化这一任务的丰富的工具集。
第 10 章首先解释了解码器和编码器,它们将字节序列从一种格式转换为另外一种格式。一个无处不在的例子便是将一个非结构化的字节流转换为一个特定于协议的布局结构,或者相反的。编解码器则是一个结合了编码器以及解码器以处理双向转换的组件。我们提供了几个例子,展示了通过 Netty 的编解码器框架类创建自定义的解码器以及编码器是多么地容易。
第 11 章研究了 Netty 提供的用于各种用例的编解码器以及 ChannelHandler。这些类包括用于协议的(如 SSL/TLS、HTTP/HTTPS、WebSocket 以及 SPDY)即用型的编解码器,以及能异步社区会员 够通过扩展来处理几乎任意的基于分隔符的协议、变长协议或者定长协议的解码器。这一章的最后介绍了用于写入大型数据的和用于序列化的框架组件
第三部分:网络协议
第三部分详细阐述了几种本书前面简要介绍过的网络协议。我们将会再次看到 Netty 是如何使你能在自己的应用程序中轻松采用复杂的 API,而又不必关心其内部复杂性的。
第 12 章展示了如何使用 WebSocket 协议来实现 Web 服务器和客户端之间的双向通信。示例程序是一个聊天室服务器,其允许所有已连接的用户与其他已连接的用户进行实时通信。
第 13 章通过利用了用户数据报协议(UDP)的广播能力的服务器和客户端应用程序,说明了 Netty 对于无连接协议的支持。如同前面的那些示例一样,我们使用了一组特定于协议的支持类:DatagramPacket 和 NioDatagramChannel。
第四部分:案例研究
第四部分介绍了由使用 Netty 实现了任务关键型系统的知名公司提交的 5 份案例研究。这些案例不仅说明了我们在整本书中所讨论过的框架各个组件在现实世界中的应用,而且还演示了Netty 的设计以及架构原则,在构建高度可伸缩和可扩展的应用程序方面的应用。
第 14 章有 Droplr、Firebase 以及 Urban Airship 提交的案例研究。
第 15 章有 Facebook 和 Twitter 提交的案例研究。
最后
需要这份Netty实战文档的朋友可以:转发文章并关注我,后台私信【资料】即可免费获取