我想知道在处理通过网络传输对象时我们应该选择什么序列化机制。优缺点都有什么 ?
我知道大多数时候我们使用JSON
或XML
用于AJAX
,因为传输格式几乎是Javascript
格式,加上JSON
非常轻巧,占用空间小,因此Java
序列化完全不在桌面之外?
一般来说,重要的问题是哪个客户端将接收序列化对象 - 浏览器/ JavaScript引擎,如(node-js),Java客户端,未知/多个客户端。
JSON - JSON语法基本上是JavaScript,因此任何带有JS引擎的组件都能很好地处理它的解析 - 即使复杂的数据结构也会有效地转换为“活”对象。 JSON解析器几乎适用于任何语言,即使不使用JS引擎也很容易使用(例如,以Google Gson为例,它可以轻松地将JSON转换为相应的对象),这使得它成为跨语言交流的理想选择。 - 例如在messaging architecture。
XML - 分享JSON的许多好处 - 跨语言,轻量级等。例如,Adobe Flex处理XML非常好,甚至比JSON更好。它绝对是JSON的合适替代品。我个人更喜欢JSON的JS语法,但XML也很好。
Java序列化 - 应仅考虑Java到Java通信。一个重要的注意事项是类定义应该在发送端和接收端,并且通常通过传递整个对象不会获得太多。我不排除RMI作为通信协议,它确实简化了开发。然而,所得到的应用组件将是硬耦合的,这将使其非常难以更换。
还有一个注意事项 - 序列化通常有其开销。然而,当通过网络执行通信时,瓶颈通常是网络而不是序列化/反序列化本身。
我认为这取决于。如果您正在发送http请求或其他内容,那么JSON或XML显然是一个不错的选择。如果您只是通过tcp套接字发送一个java对象用于某些分布式算法或其他东西,我认为java序列化更容易/更好
通过网络进行序列化时,xml和json都可以正常工作。这取决于消费者的这些信息。
但是,XML和Json之间存在模糊界限。我在这里提到的是一般做法。这是一个nice article把所有方面放在xml vs jason上。
我认为作为开发人员,我们不需要处理响应对象的序列化。但是如果我们考虑使用JSON,它就可以选择优于XML。