socket 和 webservice 的区别和比较
1、socket是一种协议,采用tcp或udp协议通信。
Tcp、udp属于网络层,上边各层的应用都需要我们自己实现,例如端口的定义,数据包的定义,数据包的加密解密等。
2、webservice是一种服务,采用HTTP协议通信,Soap作为数据格式。HTTP是基于TCP的应用层协议
HTTP协议属于应用层,通过服务器才可以发布,这样内部定义的端口,数据包,加解密都做好了,可以直接使用。
webservice基于HTTP协议,因此可以利用现有非常成熟的Web集群来提供高负载,同比之下 socket就非常难。
WebService采用了基于HTTP的SOAP协议传输数据,接口支持面向对象,最终WebService会将对象进行序列化后通过流传输。
Socket接口直接通过流进行传输,不支持面向对象。
网络七层协议从低到高:
1、物理层(Physical Layer)、
2、数据链路层(Data Link Layer)、
3、网络层(Network Layer)、
4、传输层(Transport Layer)、
5、会话层(Session Layer)、
6、表示层(Presentation Layer)、
7、应用层(Application Layer)
webservice一般分为http webservice ,soap webservice两种,都是基于http通信协议的,一般返回xml格式的数据,所以也可以叫做xml webservice.
http webservice 通过get post 两种方法来调用远程的数据服务,适合简单参数的传递(get 直接在url里带上参数);soap webservice通过soap协议传输数据,soap是基于xml标准的,也是就说可以用xml结构的数据来传输参数,这样参数类型可以很复杂,处理远程返回的xml数据时也更方便.
其实soap协议也是基于http协议的.
webservice离不开web服务器(apache),web服务器是一个在公网上提供http通信的服务器.webservice 一般都建立在web服务器上,以供别人调用.
socket 是基于传输层的,http基于应用层,socket是一切通过端口通信的基础(包括http)
使用中,http常用于b/s通信,如web服务器就是用http做传输协议的,socket用于c/s(还有现在的富客户端),应用服务器中常用.socket穿防火墙有问题,而http几乎可以穿过任何防火墙(屏80的不多吧),socket通信的即时性比http好.
【Socket和WebService应用场景】
[ socket ]
适用于传输大数据量的数据。
缺点:由于传输的数据需要手动解析,socket通信的接口协议需要自定义,比如:自定义一种字符串拼接的格式,或者自定义的XML数据,自定义的麻烦之处在于接口调用方法和接口服务端需要相互讨论确定接口的协议内容,不方便。
优点:适合传输大数据量的数据。
[ WebService ]
WebService遵循标准的SOAP协议,SOAP协议的内容格式固定,SOAP协议传递的内容是XML数据,由于WebService是基于HTTP的,所以简单理解SOAP=HTTP+XML,因为WebService要经过两次序列化,所以导致其传输速度慢,适用于没有性能要求且数据传输量小的场景,推荐在公开接口上使用WebService。
以上是个人理解,如有纰漏,还望加以修正。