使用Netty传输Java对象

时间:2013-12-05 17:54:57

标签: java netty

我正在使用Netty4开发客户端/服务器应用程序。我需要将不同类型的Java对象(PO​​JO)从客户端传输到服务器和反之亦然。我对客户端或服务器如何知道收到的java对象的类型感到困惑?此外,像这样(或)传输Java对象是否最好尝试使用JSON / XML / Proto-buffers之类的格式,并在收到后将消息转换为Java对象?

2 个答案:

答案 0 :(得分:1)

您可以使用Protobuf或仅使用序列化。 Netty为他们提供解码器/编码器。

答案 1 :(得分:1)

对象更像是一种存在于内存中的概念,您无法按原样传输它们。你必须使用某种序列化方式。

序列化会产生一系列数据,以所有相关方都能理解的方式描述数据的状态和类型。

Java附带了一个序列化机制(Serializable),它不需要您的工作。它生成的序列化信息包含类名,因此另一方知道哪个类负责从序列化数据创建对象。使用该机制要求双方共享相同的类(例如,共享一个公共库),并且它们必须都用Java编写(*可能有方法)。如果他们拥有完全相同的类版本也是一个好主意。一旦你只更新一方,它可能会变得困难,因为这可能会改变表达状态的方式。

其他序列化机制,如JSON,Protocol Buffer,...通常独立于您的具体实现和语言。它们仍然包含所有必需状态的描述,但您不受某些类甚至对象概念的约束。