互联网传输:从XML到protcolbuffer

1.概述

       我的上一篇文章(https://blog.csdn.net/wangzhezhilu001/article/details/108226381)写道,互联网是20世纪最伟大的发明。但技术进步的逻辑是:更高效得做事情。互联网的最基本架构是:1)客户端;2)服务器;3)通信结构。在互联网中,通信是互联网发展的基础。互联网的通信结构的发展必然趋势是更高效和更方便传输数据。

       当然,传输数据功能的提升一方面是硬件的提升,一方面是软件的提升。但硬件的功能提升,不在本文讨论范围之内。本文是讨论软件的提升,并侧重点为传输格式的变化。

2.数据传输与协议

       在网络通信中,数据传输和协议息息相关。数据经编码成为二进制之后,随后转为电子码,随后通过一定的网络中介进行传播。

        网络传输的规范要求有很多,但对于计算机从事者来说,设计比较多的是协议。对于计算机行业从业者来说,一定要理解OSI的7层协议和TCP/IP协议族的4层协议。

        对于通信来说,通信协议最的是TCP和UDP这两种协议。这两种协议的区别,资料比较多,笔者不想在这里过多赘言。但笔者想强调的是几乎所有(叫高层)协议都是TCP或UDP的变种或者基于这两种协议。

       但对于互联网开发人员来说,需要了解最多的是HTTP协议。

3.HTTP的几种操作

       HTTP协议本意是超文本传输协议,是支持文本传输的协议。HTTP是应用层协议;运输层协议为TCP。HTTP虽然本意是传输文本,但实际也可以支持图片、音视频等数据的传输,并成为事实互联网上运用最广的协议。很多其他协议,如SMTP,RTSP都借鉴了HTTP的功能。

       HTTP本身的有几种最基本的操作:

       1)GET方法;

       2)POST方法;

       3)PUT方法;

       4)DELETE方法;

       5)HEAD方法;

       6)TRACE方法;

       7)OPTIONS方法。

      其中GET方法相当于查询,POST相当于新建,PUT相当于修改,DELETE相当于删除;HEAD方法相当于GET,但只返回头;TRACE方法相当于回环诊断;OPTIONS方法用于获得服务器支持的操作。

4.互联网传输数据与幂等性

       互联网是用来传输数据的。在互联网传输数据过程中,有一个很重要的概念,叫幂等性。

       幂等性原本是数学上的概念,即使公式:f(x)=f(f(x)) 能够成立的数学性质。用在编程领域,则意为对同一个系统,使用同样的条件,一次请求和重复的多次请求对系统资源的影响是一致的

       理论上,在GET、PUT、DELETE、HEAD、OPTIONS等操作中,这些操作必须是幂等的。幂等性也意味着同样的操作,必须是同样的状态。幂等性其实是状态机的应有之义。笔者在以前的博客上谈过状态机(https://blog.csdn.net/wangzhezhilu001/article/details/107342443)。其实任何计算机都是状态机,在进行程序设计的适合,必须要考虑幂等性。

5.互联网传输的最基础的传输格式:XML

       回到本文的主题:互联网格式传输。互联网格式传输,最基本的格式为XML。

       XML的本质,就是一种树。自然世界是混沌无序的图,要想变得有序,必须变成树。关于图和树的关系,以及XML本身,《由图与数的关系说起——兼谈XML语言的好处》(https://blog.csdn.net/wangzhezhilu001/article/details/51979372)讲过,本文不再赘述。

       本文要强调的是:XML是一个大的标准,详见http://www.obj-sys.com.cn/resources-Standard-W3CXML.asp,足够一本书写完。

      同时,XML本身,由于其规范化,故定义更加严格,也造成XML文件使用起来过于麻烦。

      XML是最基本的传播格式;SOAP格式就是HTTP+XML;而最有典型意义的互联网WebService三大框架就是SOAP、WSDL和UUID,其中SOAP和WSDL都是XML进行描述的。

6.互联网传输的另一种广泛的传输格式:JSON

       随着互联网的发展,传输性能要求越来越高,另一种格式也越来越流行,这种数据格式就是JSON。JSON这种格式相比XML有几个特点:

        1)依然是树形文件;

         2)标准更加简单;

         3)不再定义严格的规范,并只保留最简单的数据定义。

        由于数据定义简单,注重主要内容等特点,这造成JSON在同等情况下,内容比XML更少。这让JSON在互联网传播的时候,更加方便。在相当长的一段时间,JSON在互联网传输比XML更广泛,甚至成为了Restful风格的主要要求。

        这并不意味着JSON可以取代XML,因为XML可以描述JSON无法描述的关系和形式;在严格的数据结构形式里,XML依然会存在。但在互联网传输上,追求更高效的传输方式,是必然趋势。

7.互联网传输的最新的格式:protocolbuffer

        另一种更高效的传输格式是:protocolbuffer。这种格式的特点是:

       (1)跨语言,可自定义数据结构。

       (2)字段被编号,新添加的字段不影响老结构。解决了向后兼容问题。

       (3)自动化生成代码,简单易用(用protoc工具)。

       (4)二进制消息,效率高,性能高。

       这种格式,相对于JSON,更加严格,但由于是二进制编码而不是字符编码,故体积更小,传输效率更高。(详见本人博客protocol buffer与json对比https://blog.csdn.net/wangzhezhilu001/article/details/91961227)       

       这也成为protoclbuffer成为微服务中的主要规范。但微服务并未抛弃XML、JSON和WebService,这几个是互不冲突的几个概念。

8.结论

      通过这一切,可以得知:在互联网传输的过程中,传输效率越来越高,是必然趋势(之一)。推而广之,在技术发明上,追求更高效的生产方式,是必然规律。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值