最近这段时间在做一个项目,其中牵扯到数据传送的问题,也就是说客户端与服务器的数据传输。我们首先遇到以下几个问题:
一、我们用什么来进行数据交换?
方案一:
用socket来传输数据,把我们的数据转换成二进制,用简单的send和recieve来进行传输。
用此方法的缺点:
1、我们是用Java来做这个项目的,Java是纯对象的语言,如果我们把收集来的数据要从对象的形式转化为二进制的形式,到了服务器那一边我们又要把这些二进制的形式转化为对象的形式存储到我们的数据库里面,当然转换不是什么难事,只要编码方式一致就能收到对应的信息。但是最大的一个问题是,我们必须要对每一个类做一个标记,对类里面的成员也要做一个标记,要不然我们把数据从客户端传到服务端都不知道之歌数据是哪一个类的,是哪一个类成员,标记了才知道。我们利用标记信息可以对应把相应的内容插入到相应的表中。
2、用这种方式,我们是自己做一个服务器,那么我们还要面临多线程的问题,这个问题与JSON没有什么关系,在这里就不说了。
总结这个方案:
传递数据,我们需要标记,如果我们能够传递对象呢?那么该所好啊。
方案二:
采用Java的序列化对象进行数据传输,例子在这里:http://blog.csdn.net/xie389124248/article/details/8755672
这个例子说明了Java里面是可以进行对象的传输。
这个方法的优点:
比方案一好一点了,因为我们可以不用关心细节问题了,不管是在客户端还是在服务端,我们到像是在本地操作我们的对象,好像没用进行数据传输一样,对于我们数据的获取和数据的存储都很好,这是一个很好的方法。
个人觉得这个方法的缺点:
‘我对这份序列化对象传输的方法经过一些探究,结果发现,它要传输的数据很多,它不只是传输我们想要传输的数据,同时也要传递这个类的相关信息,我就是觉得这个信息的传输量的利用率不高,overhead比较多。
方案三:
这个时候JSON来了,这个东西我是从我同学哪里听来的,他说我们可以试一试JSON这个东西。赶开始对JSON不是很了解,在网上查找了不少资料,最终对它的理解如下:
1、JSON是一个轻量级的数据交换的语言,它可以说是与平台无关的,
2、JSON很简单,只有对象和数组两种,但是却可以构建很复杂的数据结构,而且这两种结构都是能够与字符串相互转化。
3、JSON传输的量比较大,没有什么overhead。
总结:
基于以上几点,我个人比较喜欢JSON并不是因为JSON是我花了很长时间才了解到的,而是真的是被它的简单的表达方式所吸引了。
以上是属于个人的见解,如果有什么不对的地方,希望各位帮我纠正。。。。