我想知道什么序列化机制传递对象通过网络打交道时,我们应该选择。 优缺点都有什么 ?
我知道大多数的我们在使用的时候JSON
或XML
的AJAX
,因为传输格式是非常Javascript
格式,加上JSON
是凭借其体积小巧轻便漂亮,因此是Java
系列化完全出表的?
我想知道什么序列化机制传递对象通过网络打交道时,我们应该选择。 优缺点都有什么 ?
我知道大多数的我们在使用的时候JSON
或XML
的AJAX
,因为传输格式是非常Javascript
格式,加上JSON
是凭借其体积小巧轻便漂亮,因此是Java
系列化完全出表的?
一般来说,重要的问题是客户端将收到的序列化对象 - 像(节点JS),Java客户端,未知/多个客户端的浏览器/ JavaScript引擎。
JSON - JSON语法基本上是JavaScript和因此与JS引擎将处理任何组件其解析很好 - 甚至复杂的数据结构将被转换为有效的“活”的对象。 JSON解析器为几乎任何语言的存在,很容易使用,即使不使用JS引擎时,(以谷歌GSON例如,它能够JSON转换成相应的轻松对象),这使得对跨语言交流一个很好的候选-例如在消息架构 。
XML - 共享许多JSON的好处 - 跨语言,重量轻等Adobe Flex的例如处理XML非常好,甚至比JSON更好。 这绝对是JSON合适的替代品。 我个人更喜欢JSON其JS的语法,但XML也不错。
Java序列 - 应该只考虑Java到Java的通信。 一个重要的注意的是, 类定义应在发送和接收端,而且通常都不会被传递整个对象获益良多。 我不排除RMI作为通信协议,它简化了开发。 然而所得到的应用程序的组件将被硬连接这将使它非常难以更换。
还有一个音符 - 序列化一般有其开销。 然而,当通过网络进行的通信中的瓶颈往往是网络而不是所述序列化/反序列化本身。
我认为这取决于。 如果你发送HTTP请求或东西,然后JSON或XML显然是一个不错的选择。 如果你只是发送一个Java对象通过TCP套接字对一些分布式算法或东西我认为Java序列化更容易/更好
虽然序列化在网络上XML和JSON会工作。 这取决于这些信息的消费者。
如果消费者使用Ajax要求的一些信息并呈现在屏幕上什么浏览器,一般杰森其已经在Javascript对象格式是最好的选择并没有转换为兼容JavaScript对象的开销。 事实上,许多的Ajax库(如jQuery的)为JSON很好的支持。
如果消费者可能会或可能不会在Java中其他应用程序,那么XML是喜欢序列化机制。 Web服务使用XML非常沉重。
如果你的消费是另一个Java程序,然后肯定Java序列化优先选项(如RMI)。 因此,它没有出来:-)。
但是,是有XML和JSON之间的模糊界限。 我这里所说的是一般的做法。 这里是一个很好的文章把所有的方面对XML VS杰森。
我认为,作为开发商,我们不必照顾响应对象的序列化的。 但如果我们考虑JSON,它有体面advantanges在XML选择。