2014第13周四Webservice概念问题记
晚上回来看网页学习了这两天一直疑惑的两个问题:
1.REST和SOAP架构下的Webservice的区别?
2.axis2和CXF的区别。
大部分是理论,暂时摘录一下,以后有更多实践后再回顾。
一、REST和SOAP对比:
一般客户端访问服务器端web服务通常可以由HTTPService、WebService、RemoteObject等方式来实现。通常实现web服务我们最容易想到的是SOAP协议的WebService,这在目前web服务中占有很重要的地位。随着REST思想的出现,目前很多公司开始使用REST风格的WebService。
SOAP: 简单对象访问协议,简单对象访问协议(SOAP)是一种轻量的、简单的、基于 XML 的协议,它被设计成在 WEB 上交换结构化的和固化的信息。 SOAP 可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议( HTTP),简单邮件传输协议(SMTP),多用途网际邮件扩充协议(MIME)。它还支持从消息系统到远程过程调用(RPC)等大量的应用程序。
REST: 即REST(Representational State Transfer表述性状态转移)是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。
REST 与SOAP的比较:
- 成熟度
SOAP目前成熟,不同平台,开发语言之间通过SOAP来交互的web service都能够较好的互通。REST相对不太成熟,由于没有类似于SOAP的权威性协议作为规范,REST实现的各种服务风格不一,通用性不强。
- 效率和易用性
SOAP使用门槛高(学习成本高,开发难度大),由于SOAP由于各种需求不断扩充其本身协议的内容,在大并发下性能有所下降。REST 目前大量的Web 2.0网站使用,高效以及简洁易用。这种高效一方面源于其面向资源接口设计以及操作抽象简化了开发者的不良设计,同时也最大限度的利用了Http最初的应用协议设计理念。REST 是一种轻量级的Web Service架构风格,其实现和操作明显比SOAP和XML-RPC更为简洁,可以完全通过HTTP协议实现,还可以利用缓存Cache来提高响应速度,性能、效率和易用性上都优于SOAP协议。
- 安全性
SOAP在安全方面是通过使用XML-Security和XML-Signature两个规范组成了WS-Security来实现安全控制的,当前已经得到了各个厂商的支持,.net ,php ,java 都已经对其有了很好的支持。REST没有任何规范对于安全方面作说明。因此在考虑安全性上,SOAP要高于REST。
总的来说,我认为REST对于资源型服务接口来说很合适,同时特别适合对于效率要求很高,但是对于安全要求不高的场景。而SOAP的成熟性可以给需要提供给多开发语言的,对于安全性要求较高的接口设计带来便利。
转自:http://quanzhong.iteye.com/blog/1028114
二、CXF与axis2区别
1.在特性方面:
C X F 支持W S - A d d r e s s i n g 、W S -Policy、WS-RM、WS-Security和WS-I BasicProfile。Axis2支持除了WSPolicy之外的所有这些标准,WS-Policy预计会在未来版本中得到支持;
CXF可以方便地和Spring集成在一起,Axis2不行;
Axis2支持范围更广的数据绑定,包括XMLBeans、JiBX、JaxMe、JaxBRI,以及它自己的数据绑定ADB。在Axis21.2 版中,JaxME和JaxBRI尚处于试验阶段。目前,C X F只支持J A X B和Aegis,对XMLBeans、JiBX和Castor的支持将在CXF 2.1版中实现;
Axis2支持多语言,除了Java版本,尚有C/C++版本。
2.在开发方面:
Axis2更像一个微型服务器。Axis2被打包成一个WAR,可部署到任何Servlet容器中,为了更方便地在运行中管理和部署服务进行专门的设计。
CXF更专注于对开发人员友好及可嵌入性。大部分配置只需使用API即可完成,与Spring紧密集成。CXF强调代码优先的服务开发方式。
3.建议:如果需要多语言支持,那么就采用Axis2;如果考虑到使用Java、与Spring集成,或将服务嵌入到其他程序中,那么CXF更好。
当然,并不是所有人都说好。例如,在国内的一些论坛上,就有开发者抱怨CXF 的入门比起XFire 来要复杂得多。这是可以理解的,毕竟CXF本身也比XFire 要复杂得多。为了帮助Celtix 和XFire 的开发者向新工具的迁移,其官方网站也提供了相应的迁移指南。另外一个常见的问题是和Spring AOP 相关的(如事务、安全),这在官方网站的FAQ 中也有说明。
2014第13周四Webservice概念问题记的更多相关文章
- 2014第11周四Eclipse开发问题记
今天开发中eclipse工具使用上又学到几点: 1.去除代码空行:在Find输入框中输入:^\s*\n然后替换为空即可: 2.eclipse插件的加载:对于单一个jar文件的插件,直接放在plugin ...
- 2014第2周四部署环境&买火车票
2014第2周四部署环境&买火车票 今天遇到mysql一个问题:要把两个包含不同数据库的绿色mysql安装包中的数据库文件合并到一个数据库中,之前在sqlserver下操作很简单,只需要分离. ...
- maya 2014帮助手册中 三维概念讲解
maya 2014 帮助手册中 三维概念讲解 多边形简介 三个或更多的边, 顶点 边 面 组成 经常使用三边形或四边形来建模 n边形不常用 单个多边形称为面 多个面连接到 ...
- [2014.5.13][Ubuntu] Ubuntu 14.04STL 出现NTFS分区无法訪问的问题
5.12 为了给学生改论文,在UPC上登录了Windows 8.1,晚上正常关机.今日切换登陆Ubuntu 14.04分区,发现原来能够正常訪问的windows下的NTFS分区都被锁死.提演示样例如以 ...
- WebService 概念和工作原理(一)
今天我们一起来学习WebService.它到底是干啥用的? Web service是一个平台独立的,低耦合的,自包含的.基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集) ...
- 【转载】Android Studio jar、so、library项目依赖,原文链接http://zhengxiaopeng.com/2014/12/13/Android-Studio-jar、so、library项目依赖/
前言 Android Studio(以下简称AS)在13年I/O大会后放出预览版到现在放出的正式版1.0(PS.今天又更新到1.0.1了)历时一年多了,虽然Google官方推出的Android开发者的 ...
- C# WebService 概念,创建及引用调用
1.1.Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求, ...
- WebService概念和使用
1.WebService到底是什么 一言以蔽之:WebService是一种跨编程语言和跨操作系统平台的远程调用技术. 所谓跨编程语言和跨操作平台,就是说服务端程序采用java编写,客户端程序则可以采用 ...
- webservice 概念+测试案例
webservice的概念?(一句话概括什么是WebService) WebService是一种跨编程语言.跨操作系统平台的远程调用技术.远程调用技术: 远程调用是指一台设备上的程序A可以调用另一台设 ...
随机推荐
- php 邮件类
编写一个用php socket 发送邮件的类,简单好用,当用到php程序发送邮件时, 而在163服务器中,可以在RCPT命令中还可以验证163邮箱是否存在,还有很多用处, 我现在暂时还没想到. 记录下 ...
- android重要的对象
Context----------------访问全局信息的api Activity Window Intent/Bundle ImageView----------onclick View----- ...
- Storm Esper
https://github.com/hellojinjie https://github.com/tomdz/storm-esper https://github.com/jayway/awaiti ...
- QProgressBar和QProgressDialog的简单实用
在QT中可以用QProgressBar或着QProgressDialog来实现进度条. QProgressBar的使用 首先在designer中拖一个按钮和进度条部件,按下面初始化 ui->pr ...
- Linux进程间通信——信号集函数
一.什么是信号 用过Windows的我们都知道,当我们无法正常结束一个程序时,可以用任务管理器强制结束这个进程,但这其实是怎么实现的呢?同样的功能在Linux上是通过生成信号和捕获信号来实现的,运行中 ...
- Longtail Hedgehog(DP)
Longtail Hedgehog time limit per test 3 seconds memory limit per test 256 megabytes input standard i ...
- php排序算法之选择排序
/** * 选择排序 * 不稳定排序 *工作原理: 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾.以此类推 ...
- Object-c 单例模式中的 allocWithZone作用
最 近因为在ios应用开发中,考虑到一些公共方法的封装使用,就决定使用单例模式的写法了..不知道,Object-c中的单例模式的写法是否和java中的写法是否有所区别? 于是阿堂从网上一搜,发现“ O ...
- linux 内核源代码分析 - 获取数组的大小
#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) 測试程序: #include<stdio.h> #include<stdlib. ...
- 启动监听报错:TNS-12537: TNS:connection closed TNS-12560: TNS:protocol adapter error TNS-00507: Connection closed Linux Error: 29: Illegal seek
启动监听程序报错: 说明:在rhel5.8上安装完成oracle11g数据库后,使用netca创建完监听,启动监听时报错.还未使用dbca创建实例. [oracle@rusky-oracle11g ~ ...