http webservice restful rpc websocket socket

最近碰到一些通信需求,对一些协议和技术稍作了解,理解如下,尚有不足。
http和websocket都是应用层协议。

http对于复杂大量的远程调用不太方便,不利于开发,所以就衍生出了webservice、restful、rpc。
websocket主要是解决长连接问题,不像http一问一答,而是全双工通信,可以相互通信。它不是为了解决频繁的远程调用,是为了解决双方互相通信。

http标准的html传输协议,属于应用层协议,底层是socket封装(介于应用层和传输层)和TCP协议(传输层协议)
端口号归TCP和UDP管理,都属于网络传输的范畴。
进程ID即PID,一个进程可以分配多个端口号,提供多个网络服务。

webservice以SOAP为应用协议http为传输协议,实现http功能的扩展,实际还是用http干活,只是在传输内容上增加了一个SOAP约定,约定如何调用函数,以实现远程调用,像本地调用自己的应用程序函数一样。

restful是对http协议的一种升级,除了POST、Get,增加更多新的方法,如DELETE、HEAD等,理念上也做了改变,之前以过程为角度,现在以资源为角度,所有的方法都是针对资源的。
restful算是对webservice的一种对标,为了不让http落后,直接升级了http的能力,使其也拥有远程调用的能力。

rpc,remote procedure call,翻译过来就是远程过程调用,也是要实现远程调用的一种协议或技术。
rpc跟http基本没关系了,它脱离http,自己的底层基于tcp协议定义了一种新的应用层协议,不再受http臃肿的设计,完全简化协议头的定义,更利于大量的远程调用。
实现rpc的框架很多,grpc是其一,这个框架通过ptotobuf协议,实现了客户端和服务的跨语言开发,并且用protobuf使得接口的定义标准化,类似一个头文件,客户端和服务端拿到这个头文件,各自开发测试即可。

websocket和http也没关系,但是类似http,底层也是基于socket封装(介于应用层和传输层)和TCP协议(传输层协议)。实际上就是让socket有了web的功能。

socket,属于对TCP、UDP协议的封装,不然上面用起来太不方便了,socket把复杂的东西封装好,提供了简单的接口给应用层使用。

需要根据自己的需求来选择使用的技术和协议。
我这里的一个需求:
主工程A开发语言用的是C#,有个功能模块B用的python,交互并不多,A调用B,B运行时间较久,中途需要反馈一些数据给A,用到了双向通信。
方案:
C#调用python感觉有点麻烦,考虑把B当作一个服务,双方采用websocket连接,方便双向通信。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值