http webservice socket的区别(转)

转载:http://www.cnblogs.com/111testing/p/6581062.html

1 数据传输方式
1.1 socket传输的定义和其特点
    所谓socket通常也称作"套接字",实现服务器和客户端之间的物理连接,并进行数据传输,主要有udp和tcp两个协议。socket处于网络协议的传输层
    udp协议:广播式数据传输,不进行数据验证
    tcp协议:传输控制协议,一种面向连接的协议,给用户进程提供可靠的全双工的字节流。

   socket传输的特点:
   优点
   1) 传输数据为字节级,传输数据可自定义,数据量小(对于手机应用讲:费用低)
   2) 传输数据时间短,性能高
   3) 适合于客户端和服务器端之间信息实时交互
   4) 可以加密,数据安全性强
   缺点:
   1) 需对传输的数据进行解析,转化成应用级的数据
   2) 对开发人员的开发水平要求高
   3) 相对于http协议传输,增加了开发量

 socket传输适用范围
  基于socket传输的特点 : socket 传输方式适合于对传输速度,安全性,实时交互,费用等要求高的应用中,如网络游戏,手机应用,银行内部交互等

 

1.2 基于http协议传输的定义和其特点

   目前基于http协议传输的主要有http协议 和基于http协议的soap协议(web service),常见的方式是 http 的post 和get 请求,web 服务。

   基于http协议的传输特点

   优点:
   1) 基于应用级的接口使用方便
   2) 程序员开发水平要求不高,容错性强
   缺点:
   1) 传输速度慢,数据包大(http协议中包含辅助应用信息)

   2) 如实时交互,服务器性能压力大

   3) 数据传输安全性差

   基于http协议传输的适用范围
   基于http协议传输的特点:基于http协议传输方式适合于对传输速度,安全性要求不是很高,且需要快速开发的应用。如公司oa系统,互联网服务等

 

WebService与Socket的区别

区别1.

Socket是基于TCP/IP的传输层协议。

WebService是基于HTTP协议传输数据的,HTTP是基于TCP的应用层协议。

区别2.

WebService采用了基于HTTP的SOAP协议传输数据,接口支持面向对象,最终WebService会将对象进行序列化后通过流传输。

Socket接口直接通过流进行传输,不支持面向对象。

Socket在传输层,WebService在应用层。。http 协议基于socket,此外,web service基于http协议和soap。

【结论】

WebService采用SOAP协议进行传输,底层是基于Socket通信的。

WebService不需要针对数据流的发送和就收进行处理,是一种跨平台的面向对象远程调用技术。

 socket和webservice都有跨平台的优点,但是:
        socket偏底层,效率高,但是开发成本大。
        webservice效率低,但是开发成本低廉。

【Socket和WebService应用场景】

[ socket ]

socket通信的即时性比http好。socket 是基于传输层的,http基于应用层,socket是一切通过端口通信的基础(包括http)

Socket处于是OSI 7层协议中的第四层(传输层)  Socket仅仅是传输层抽象在OS基础上的一个接口而已。

适用于传输大数据量的数据。

缺点:由于传输的数据需要手动解析,socket通信的接口协议需要自定义,比如:自定义一种字符串拼接的格式,或者自定义的XML数据,自定义的麻烦之处在于接口调用方法和接口服务端需要相互讨论确定接口的协议内容,不方便。

优点:适合传输大数据量的数据。

常重要的SOAP是应用层的一个协议,而SOAP通常绑定的Http协议也是第七层的一种协议。Socket效率高,但容易被防火墙屏蔽

socket,提供了tcp/ip或者udp的通信的实现,如果做标准的服务器,比如下载服务器;或者语音通信的程序,或者视频,文件传输……这些只能用socket。
单纯用socket写会很烦的,你要处理各种东西,协议的编解码等等,所以这种情况下推荐mina,netty或者grizzly。

 

[ WebService ]

WebService遵循标准的SOAP协议,SOAP协议的内容格式固定,SOAP协议传递的内容是XML数据,由于WebService是基于HTTP的,所以简单理解SOAP=HTTP+XML,因为WebService要经过两次序列化,所以导致其传输速度慢,适用于没有性能要求且数据传输量小的场景,推荐在公开接口上使用WebService。

webservice基于HTTP协议,因此可以利用现有非常成熟的Web集群来提供高负载,同比之下 socket就非常难。
webservice离不开web服务器(apache),web服务器是一个在公网上提供http通信的服务器.webservice 一般都建立在web服务器上,以供别人调用。

WebService效率差点,走http协议,一般不会被防火墙屏蔽。

webservice,基于http协议,以xml为载体的通信方式。
    好处:一直观,二标准,也方便异构系统的交互
    如果想提供对外的业务访问的接口,可能需要浏览器,各种语言的客户端等各种异构系统访问,是首选。

 

 

我觉得把socket和http、webservices等等放在一起对比不是很合适,所谓http的都是对socket进行了一次包装而已,后者更加底层。

好的,以下是开发Http/WebService/Socket协议脚本的基本步骤: 1. 确定测试工具和框架:选择合适的测试工具和框架来编写协议脚本。例如,Apache JMeter是一个常用的Http协议测试工具,SoapUI是一个常用的WebService协议测试工具,Netty是一个常用的Socket协议测试框架。 2. 设计测试用例:根据协议的特点和需求,设计合适的测试用例。测试用例应该覆盖协议的各个方面,包括请求参数、响应状态码、响应内容等。 3. 编写测试脚本:根据测试用例,编写相应的测试脚本。测试脚本应该能够发送请求、接收响应,并对响应进行断言和验证。 以下是一个简单的Http协议测试脚本示例: ```java import org.apache.http.HttpEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; public class HttpTest { public static void main(String[] args) throws Exception { CloseableHttpClient httpClient = HttpClients.createDefault(); HttpGet httpGet = new HttpGet("http://example.com/api/userinfo?token=test_token"); CloseableHttpResponse response = httpClient.execute(httpGet); HttpEntity entity = response.getEntity(); String responseBody = EntityUtils.toString(entity); System.out.println(responseBody); response.close(); httpClient.close(); } } ``` 在这个例子中,我们使用Apache HttpClient库来发送Http请求和接收响应。我们首先创建一个CloseableHttpClient对象,然后使用HttpGet对象来设置请求的URL和参数。使用httpClient.execute()方法发送请求,并获取响应。使用HttpEntity对象来获取响应内容,并使用EntityUtils.toString()方法将内容换为字符串。最后,我们输出响应内容并关闭连接。 类似的,我们可以使用其他工具和框架来编写WebServiceSocket协议的测试脚本,具体实现方式可以根据实际情况做出调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值