赞
踩
应用层是程序猿最经常打交道的一层,其他四层都是操作系统,驱动,硬件实现好的,不需要程序猿管(除非系统工程师,驱动开发工程师…)
在应用层中,最重要的就是"设计并实现一个应用层协议"
设计一个应用层协议,主要包含两个工作
明确传输的信息,
明确数据的组织格式
举个栗子:
如果公司在开发一个项目,关于点外卖的软件,其中有个功能是这样的:
当前要开发的功能,叫做获取用户的订单历史,(在数据库里,服务器中来拿)这样的功能需要涉及到前端(客户端)和后端(服务器)彼此之间的交互
前端和后端是通过网络来进行交互的,在这个交互的构成中就需要约定好,前端发什么样的数据,后端回应什么样的
形如这样的工作,就是在设计一个应用层协议,上图的这部分工作就是在规划请求和响应之间要传递的信息.
目前为止,我们约定了相互传的数据,但仍然是不够的,我们还需要一个具体的格式
但是由于应用层协议是可以随心所欲的来指定的,所以就会导致两极分化的情况非常严重 (大佬设计的非常好,菜鸟设计的协议就非常糟糕)对于次,大佬发明了一些比较好的协议的模板,可以让我们直接往上套.
当下比较流行的协议模板(数据的组织格式)]
- xml
- json
- protobuffer
- …
xml是属于一种比较老牌的数据格式了,虽然仍在使用,但是使用更多越来越少了
xml的格式是由标价构成的
<标签名> 内容 </标签名>
开始标签 要表示的值 结束便签
举个栗子:
发送请求的协议模板如下:
<request>
<userId>1234</userId>
<startTime>2022-04-01</startTime>
<finishTime>2022-04-12</finishTime>
<count>10</count>
</request>
可以将这看做k-v模型
标签名就是key
便签值就是value
通过这些便签,就更好的体现了这个数据的可读性,尤其是那部分是什么意思,一目了然.
虽然xml提高了可读性,但是引入了太多的辅助信息(标签名) ,对于一个服务器程序来说,最贵的硬件资源就是网络带宽,对于xml来说,因为要表示这些辅助信息,就会导致传输相同数目的请求的时候,占用的网络带宽是更高的;如果带宽固定,相同时间能传输的请求个数就是更少的.
xml模板的可读性好,但是运行效率不高
xml现在很少会作为应用层协议的设计模板,现在使用xml作为一些配置文件
json是当下最流行的一种设计应用层协议的数据格式
格式:
{
键:值,
键:值,
.......
}
通过一对大括号构成了键值对结构.
一个大括号中有很多的键值对,
键值对之间使用逗号分割,
键和值之间使用冒号分割,
要求键必须是字符串类型
值允许为很多种类型(数字,字符串,布尔,数组,另一个json…)
举个栗子:
{
userId:1234,
startTime:'2022-04-01',
finishTime:'2022-04-12',
count:10
}
json中表示字符串使用单引号或者双引号都是可以的(类似于SQL)最后一对个键值对,后面可以加逗号,也可以不加逗号(标准是没有的,但是一般的json解析器不会在意这个细节)
json要求key一定是字符串,因此key这里的引号可以省略,除非key包含了一些特殊符号,(比如空格或者-…)必须要加上引号
json模型对比于xml,json他同样保证了可读性,同时又没有xml那样的繁琐,占用的宽带要更
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。