-
Netty SSL/TLS
Netty 的开箱即用
Netty 为许多通用协议提供了编解码器和处理器,几乎可以开箱即用,这减少了你在那些相当繁琐的事务上本来会花费的时间与精力。
在本章中,我们将探讨这些工具以及它们所带来的好处,其中包括Netty 对于SSL/TLS 和WebSocket 的支持,以及如何简单地通过数据压缩来压榨HTTP,以获取更好的性能。
通过SSL/TLS 保护Netty 应用程序
如今,数...
2017-11-16 11:23:06 |
Netty
-
Netty 序列化
序列化数据
JDK 提供了ObjectOutputStream 和ObjectInputStream,用于通过网络对POJO 的基本数据类型和图进行序列化和反序列化。
该API 并不复杂,而且可以被应用于任何实现了java.io.Serializable 接口的对象。
但是它的性能也不是非常高效的。
在这一节中,我们将看到Netty 必须为此提供什么。
JDK 序列化
如果你的应...
2017-11-16 11:23:06 |
Netty
-
Netty 空闲的连接和超时
空闲的连接和超时
连接管理
到目前为止,我们的讨论都集中在Netty 通过专门的编解码器和处理器对HTTP 的变型HTTPS 和WebSocket 的支持上。
只要你有效地管理你的网络资源,这些技术就可以使得你的应用程序更加高效、易用和安全。
所以,让我们一起来探讨下首先需要关注的——连接管理吧。
核心 API
检测空闲连接以及超时对于及时释放资源来说是至关重要的。
由于这是一...
2017-11-16 11:23:06 |
Netty
-
Netty HTTP/HTTPS
构建基于Netty 的HTTP/HTTPS 应用程序
HTTP/HTTPS 是最常见的协议套件之一,并且随着智能手机的成功,它的应用也日益广泛,因为对于任何公司来说,拥有一个可以被移动设备访问的网站几乎是必须的。
这些协议也被用于其他方面。
许多组织导出的用于和他们的商业合作伙伴通信的 WebService API 一般也是基于HTTP(S)的。
接下来,我们来看看 Netty 提供...
2017-11-16 11:23:06 |
Netty
-
Netty 基于分隔符的协议和基于长度的协议
解码基于分隔符的协议和基于长度的协议
在使用 Netty 的过程中,你将会遇到需要解码器的基于分隔符和帧长度的协议。
下一节将解释 Netty 所提供的用于处理这些场景的实现。
基于分隔符的协议
基于分隔符的(delimited)消息协议使用定义的字符来标记的消息或者消息段(通常被称为帧)的开头或者结尾。
由RFC文档正式定义的许多协议(如SMTP、POP3、IMAP以及Telne...
2017-11-16 11:23:06 |
Netty
-
Netty 写大型数据
写大型数据
因为网络饱和的可能性,如何在异步框架中高效地写大块的数据是一个特殊的问题。
由于写操作是非阻塞的,所以即使没有写出所有的数据,写操作也会在完成时返回并通知ChannelFuture。
当这种情况发生时,如果仍然不停地写入,就有内存耗尽的风险。
所以在写大型数据时,需要准备好处理到远程节点的连接是慢速连接的情况,这种情况会导致内存释放的延迟。
让我们考虑下将一个文件内容写...
2017-11-16 11:23:06 |
Netty
-
Netty-14-抽象编解码器
抽象的编解码器类
虽然我们一直将解码器和编码器作为单独的实体讨论,但是你有时将会发现在同一个类中管理入站和出站数据和消息的转换是很有用的。
Netty 的抽象编解码器类正好用于这个目的,因为它们每个都将捆绑一个解码器/编码器对,以处理我们一直在学习的这两种类型的操作。
正如同你可能已经猜想到的,这些类同时实现了ChannelInboundHandler 和ChannelOutbound...
2017-11-16 11:23:06 |
Netty
-
Netty-14-encoder 编码器
编码器
回顾一下我们先前的定义,编码器实现了ChannelOutboundHandler,并将出站数据从一种格式转换为另一种格式,和我们方才学习的解码器的功能正好相反。
Netty 提供了一组类,用于帮助你编写具有以下功能的编码器:
将消息编码为字节;
将消息编码为消息
抽象类 MessageToByteEncoder
我们将首先从抽象基...
2017-11-16 11:23:06 |
Netty