通信接口是webservice快还是scoket快解决方案
通信接口是webservice快还是scoket快
webservice和scoket都可以做为通信接口,一个走HTTP访问,一个走TCP协议访问
问1:
通讯速度是webservice快还是scoket快
问2:
并发数量是webservice大还是scoket大
问3:
大数据包是webservice合适还是scoket更合适
以上一个问题15分,先谢谢各位回复,回复得好,还会给贴加分!
------解决方案--------------------
apache的mina2.0对scoket做了封装和实现,据说是高性能,高并发。没在实际项目中使用过,给你提供点参考信息。
------解决方案--------------------
肯定是 Socket 快了!
WebServices 是建立在 HTTP 基础之上的,而 HTTP 是建立在 TCP 基础上的。也就是说 WebServices 在 TCP 基础上包装了两层!
但是,直接使用 TCP Socket 的话速度是快了,但是出错的几率,以及开发难度成数倍地增加了。Socket 通信的话,你还得自己设计通信协议,光这点就很复杂。
------解决方案--------------------
WS封装的层数多点,肯定Socket快。
------解决方案--------------------
问题2和问题3都是和问题1一样,Socket好些。
因为WS需要在HTTP协议上传信息,包的尺寸就会大些。大数据量,这个影响就明显些。
而因为多了些marshal/unmarshal的步骤,所以WS占CPU的资源肯定大些,同硬件配置下自然通量低些。
但使用Socket的确有问题,2楼有说,不重复了。
------解决方案--------------------
学习。
个 人觉得,WS果断比自己写个协议成熟。除非企业要求高。
------解决方案--------------------
超底层越麻烦!
------解决方案--------------------
对于楼主的前两个问题,现在java都有对此非常好的支持与封装,单从这两种技术上来讲速度,以现在的机器硬件可以忽略不计。实际项目中的性能更多的是去关注你的程序的设计架构和稳定性,而不是你的程序在将处理完后的数据交给底层用哪种方式进行网络传输时的性能消耗。
当然如果楼主你们的目标项目是类似于视频系统,会有巨大的网络数据传输,那就另当别论了。但一般的商业项目,只是通信一些商业数据和用户数据的话,很有可能一个网络报文过来你这一个线程需要花费好几秒的时间来做处理,然后不到一秒的时间就从socket或者web service端口将处理后的信息发送出去了(如果网络状况良好的话)。
所以第一个问题,通信速度,底层都是TCP连接,都需要进行三次握手才能建立连接,只要你的网络状况良好,这个性能消耗是不需要上层应用程序去考虑的,否则的话那我们现在用的所有TCP通信的软件岂不是都非常的消耗性能了。
第二个问题,这两种技术都支持多线程并发,这个几乎全部取决于你的多线程架构是否良好,跟底层的关系应该不是很大。顶多在一些比较少见的情况考虑一下直接使用TCP协议和web service在底层上的一些差异。不过对于服务端的ServerSocket,需要考虑是需要进行长连接还是短连接的问题。web service是建立在HTTP基础上的,底层全部都是封装好的,不需要你去考虑底层通信的细节。而且基于HTTP上层,web service本身还有很多种协议可供选择。
第三个问题,大数据包的话,比如说视频网站之类的,具体可以参考下这个领域的一些资料,什么断点续传,P2P协议支持等等,毕竟大多数的J2EE商业领域都还是以传输一些商业数据和用户数据居多。
简单发表了一下个人看法。不过顺带说一句,现在的大趋势已经逐渐走向SOA架构了,所以肯定是web service越来越受欢迎,在网络上跨平台调用你的服务就像你在程序里调用底层封装好的一个API方法一样简单。如果是基于socket,别人想要调用你的服务,还得专门写一个支持你这个socket接口的Adapter。
------解决方案--------------------
探讨
肯定是 Socket 快了!
WebServices 是建立在 HTTP 基础之上的,而 HTTP 是建立在 TCP 基础上的。也就是说 WebServices 在 TCP 基础上包装了两层!
但是,直接使用 TCP Socket 的话速度是快了,但是出错的几率,以及开发难度成数倍地增加了。Socket 通信的话,你还得自己设计通信协议,光这点就很复杂。
------解决方案--------------------
问1:
通讯速度是webservice快还是scoket快
Socket快出很多(不需要解析XML、不需要传递大量重复的XML标记)
问2:
并发数量是webservice大还是scoket大
web service的并发数等于服务器的并发数,可以做服务器集群,Socket集群比较复杂(服务器间通信复杂),
问3:
大数据包是webservice合适还是scoket更合适
大数据包Socket合适些Webservice可以自己制订报文然后压缩传输效率也不错, 或者可以考虑 Tuxedo 、EJB、
通信接口是webservice快还是scoket快解决方案的更多相关文章
- 【转】TCP拥塞控制,慢启动、拥塞避免、快重传以及快恢复
转自:http://blog.csdn.net/yusiguyuan/article/details/22847787 注:本文绝大部分是来自转载的博客,还补充了少量内容. 一.TCP的拥塞控制 拥塞 ...
- TCP超时重传、滑动窗口、拥塞控制、快重传和快恢复
TCP超时重传 原理是在发送某一个数据以后就开启一个计时器,在一定时间内如果没有得到发送的数据报的ACK报文,那么就重新发送数据,直到发送成功为止. 影响超时重传机制协议效率的一个关键参数是重传超时时 ...
- TCP/IP学习笔记18--TCP--拥塞控制 (慢开始, 拥塞避免, 快重传和快恢复)
用最多的梦面对未来 -- 李嘉诚 在某段时间,若对网络资源的需求超过了该资源所能提供 ...
- 计算机网络传输层之TCP拥塞控制(慢开始与拥塞避免、快重传和快恢复)
文章转自:https://blog.csdn.net/weixin_43914604/article/details/105532044 学习课程:<2019王道考研计算机网络> 学习目的 ...
- 先贴上代码:Random快排,快排的非递归实现
设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用数组的第一个数)作为主元,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序.值得注意的是, ...
- 快还要更快,让PHP 7 运行更加神速
导读 PHP 7 比5.x 快上很多,即使只有单纯的版本升级就已经很有感,不过大家还是希望它变得越来越快,这时再做些小调整就会更有fu,Let's try it! 事前准备 说到PHP 7,那一定跑不 ...
- TCP拥塞控制-慢启动、拥塞避免、快重传、快启动
一般原理:发生拥塞控制的原因:资源(带宽.交换节点的缓存.处理机)的需求>可用资源. 作用:拥塞控制就是为了防止过多的数据注入到网络中,这样可以使网络中的路由器或者链路不至于过载.拥塞控制要做的 ...
- 前端通信:ajax设计方案(八)--- 设计请求池,复用请求,让前端通信快、更快、再快一点
直接进入主题,本篇文章有点长,包括从设计阶段,到摸索阶段,再到实现阶段,最后全面覆盖测试阶段(包括数据搜集清洗),还有与主流前端通信框架进行对比PK阶段. 首先介绍一下一些概念: 1. 浏览器的并发能 ...
- c++快读与快输模板
快读 inline int read() { ; ; char ch=getchar(); ; ch=getchar();} )+(X<<)+ch-'; ch=getchar();} if ...
随机推荐
- 阶段3 2.Spring_02.程序间耦合_3 程序的耦合和解耦的思路分析1
编译时没有对应需要的jar包就报错.这特性就理解为程序的耦合 这种方式,它不是个错误而是个异常.编译的时候没有问题.运行时才会报错. 把注释的代码放开 程序可以正常运行 解决类之前依赖的思路 一个依赖 ...
- Linq之旅:Linq入门详解(Linq to Objects)(转)
http://www.cnblogs.com/heyuquan/p/Linq-to-Objects.html 示例代码下载:Linq之旅:Linq入门详解(Linq to Objects) 本博文详细 ...
- getApplication()和getApplicationContext()区别
二者使用结果相同,我们写个代码分别打印二者返回结果,发现两个方法获取的是同一个对象. public class MainActivity extends Activity { @Override pr ...
- js中dom选择器
document,getElementById("demo"); //通过id查询节点 . document.getElementsByTagName("div&q ...
- datav轮播表使用事例
官方事例地址: http://datav.jiaminghi.com/guide/scrollBoard.html 安装: npm install @jiaminghi/data-view 局部引入: ...
- python 并发编程 基于gevent模块 协程池 实现并发的套接字通信
基于协程池 实现并发的套接字通信 客户端: from socket import * client = socket(AF_INET, SOCK_STREAM) client.connect(('12 ...
- XSS跨站简析
XSS跨站脚本原理 当应用程序发送给浏览器的页面中包含用户提交的数据,但没有经过适当验证或转义时,就会导致跨站脚本漏洞 这个“跨”实际上属于浏览器的特性,而不是缺陷 (参考:浏览器同源策略) 不去直接 ...
- Java第四周总结报告
本周做了什么? 学习了Java的面向对象知识,包括对类,对象,抽象的理解 下周准备做什么? 学习Java面向对象的有关知识,包括对象与类,继承关系等内容 代码联系时间五个小时,看书四个小时. 本周遇到 ...
- 【五一qbxt】test1
(不知道为什么居然爆零了qwq) (全员爆零诶,最高分10分???还是rand出来的???) 我freopen写错了????自闭了 不行不行再写一遍freopen加深印象,不能再写错了 freopen ...
- 第一课 初识Linux(一)
Linux起源 创始人:李纳斯.托瓦兹 Linux简介: Linux是一套免费使用和自由传播的类UNIX操作系统:是一个基于POSIX和UNIX的多用户.多任务.支持多线程和多CPU的操作系统.Lin ...