我想知道在处理通过网络传输的对象时应该选择哪种串行化机制。优缺点都有什么 ?
我知道我们大多数时候会使用JSON或XML,AJAX因为传输格式几乎是Javascript格式,加上JSON占用空间很小,而且重量很轻,因此Java序列化完全不在表格之列吗?
JSON
XML
AJAX
Javascript
Java
通常,重要的问题是哪个客户端将接收序列化的对象-浏览器/ JavaScript引擎,例如(node-js),Java客户端,未知/多个客户端。
JSON-JSON语法基本上是JavaScript,因此具有JS引擎的任何组件都可以很好地处理其解析- 甚至复杂的数据结构也可以有效地转换为“活动”对象。JSON解析器几乎适用于任何语言,即使不使用JS引擎也很容易使用(例如,使用Google Gson,它能够轻松地将JSON转换为相应的对象),这是进行跨语言交流的理想选择- 例如在消息传递体系结构中。
XML-共享JSON的许多优点-跨语言,轻量级等。例如Adobe Flex可以很好地处理XML,甚至比JSON更好。绝对是JSON的合适替代品。我个人更喜欢JSON作为其JS之类的语法,但是XML也很好。
Java序列化-仅应用于Java到Java的通信。一个重要的注意事项是, 类定义 应该在发送端和接收端,并且通常不会通过传递整个对象而获得太多收益。我不会排除RMI作为通信协议,它确实简化了开发。但是,生成的应用程序组件将很难耦合,这将使其很难替换。
还有一点要注意-序列化通常会有开销。但是,当通过网络执行通信时,瓶颈通常是网络而不是串行化/反序列化本身。