阅读(1425)
赞(15)
Netty核心之Buffer(缓冲)
2017-08-03 10:48:24 更新
通过之前的章节我们知道byte(字节)一直都是网络数据的基本单位。然而Java NIO提供的字节容器ByteBuffer的作用受到限制,也没有经过优化,所以使用ByteBuffer会让事情变得繁琐和复杂。
幸运的是,在Netty中提供了一个强大的缓冲实现类用来表示字节序列以及帮助你操作字节和自定义的POJO。这个新的缓冲类,ByteBuf,它的效率与JDK的ByteBuffer相当。设计ByteBuf是为了在Netty的pipeline中传输数据。它是为了解决ByteBuffer存在的一些问题以及满足网络程序开发者的需求,以提高他们的生产效率而被设计出来的。
请注意,在本书剩下的章节中,为了帮助区分,我将使用数据容器指代Netty的缓冲接口及实现,同时仍然使用Java的缓冲API指代JDK的缓冲实现。
在本章中,你将会学习Netty的缓冲API,为什么它能够超过JDK的实现,它是如何做到这一点,以及为什么它会比JDK的实现更加灵活。你将会深入了解到如何在Netty框架中访问被交换数据以及你能对它做些什么。这一章是之后章节的基础,因为几乎Netty框架的每一个地方都用到了缓冲。
因为数据需要经过ChannelPipeline和ChannelHandler进行传输,而这又离不开缓冲,所以缓冲在Netty应用程序中是十分普遍的。我们将在第6章学习ChannelHandler和ChannelPipeline。