Socket与webservice的比较

来源:互联网 发布:东北师范大学知乎 编辑:程序博客网 时间:2024/05/21 09:57

一 区别


1.socket是一种协议,采用tcp或udp协议通信。Tcp、udp属于网络层,上边各层的应用都需要我们自己实现,例如端口的定义,数据包的定义,数据包的加密解密等。

2. webservice是一种服务,采用HTTP协议通信,Soap作为数据格式。HTTP协议属于应用层,通过服务器才可以发布,这样内部定义的端口,数据包,加解密都做好了,可以直接使用。webService 内部数据格式为xml格式、由于基于http协议,所以可以不受防火墙的影响。


二 优缺点


1.适用对象

       webservice用http,是单次通信,只连接一次;socket是可以面向连接和不面向连接的。

       如果是简单的只发送一条数据,而且是隔很长一段时间才发送一次信息,那么建议用http。如果是想做实时的信息交互,那么最好用socket,因为socket能够建立起来一个连接通路,并且监听连接后的socket发送的数据。

       一般较小的项目,数据量较少的项目,用webservice足够了,socket的工作量投入和回报不成正比,但对于数据量较大的项目,或者对实时性要求很高的项目,像手游之类的,用webservice是不现实的。


2.速度:

       WebServices 是建立在 HTTP 基础之上的,而HTTP 是建立在 TCP 基础上的。也就是说 WebServices 在 TCP 基础上包装了两层!
       但是,直接使用 TCP Socket 的话速度是快了,但是出错的几率,以及开发难度成数倍地增加了。Socket 通信的话,你还得自己设计通信协议,光这点就很复杂。 


3.趋势:

       现在的大趋势已经逐渐走向SOA架构了,所以肯定是webservice越来越受欢迎,在网络上跨平台调用你的服务就像你在程序里调用底层封装好的一个API方法一样简单。如果是基于socket,别人想要调用你的服务,还得专门写一个支持你这个socket接口的Adapter。 



网络七层协议从低到高:
1、物理层(Physical Layer)
2、数据链路层(Data Link Layer)
3、网络层(Network Layer)
4、传输层(Transport Layer)
5、会话层(Session Layer)
6、表示层(Presentation Layer)
7、应用层(Application Layer)






参考文献: http://blog.163.com/lively_caicai/blog/static/2092171222012814113047728

原文地址:http://blog.csdn.net/finallylly/article/details/44887923

作者: finallylly


1 0
原创粉丝点击