WebService介绍

webservice并不是一门新技术,它融合了很多技术与标准,它实现了不同语言,不同平台,应用可以相互通信,目前市面上有两种方式的webservice,一种是基于soap的webservice,一种是基于rest的webservice,基于soap的webservice在很早以前出现的,而基于REST的表述性状态转移(英文:Representational State Transfer,简称REST)是RoyFielding博士在2000年他的博士论文中提出来的一种软件架构风格。它是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。以下分别对这两种方式进行介绍(纯属讨论,不涉及代码)。
1.基于soap的webservice,提起这种方式,不得不提出两个词:wsdl(Web Services Description Language)和soap(Simple Object Access Protocol),wsdl是webservice描述语言,本身是XML,它描述了发布的服务的接口,方法,参数等信息,作为调用者与被调用者之间的一种规范媒介,而soap简称简单对象访问协议,它也是XML,它是一种协议,用于传输消息,所以学好基于soap的webservice 一定要学习好XML Schema,一般的开发模式有两种,一种是自底向上的开发模式,即代码优先(code first),另一种是自顶向下的开发模式,即契约优先(contract first),代码优先是先写代码,然后通过代码生成wsdl,这种方式对于wsdl的定制性不高,难以维护wsdl,而契约优先的方式是通过开发者手写wsdl,然后根据wsdl生成服务器端的代码和客户端的桩(stub)代码,这种契约优先的方式的wsdl可读性好,容易维护。但是究竟采用哪种方式,需要根据项目中的情况而定。本身soap是XML,是一种协议,它是建立在HTTP协议之上的协议,它通过HTTP传输,一般我们不希望反复请求服务器,最好一次性完成,因为soap消息到服务器要经过编排(marshall即对象转换为XML)与反编排(unmarshall即xml转换为对象),在客户端一样经过编排与反编排。这样的转换总是要花费时间性能。这种在java中是通过JAXB实现的。其实一再强调的还是XML Schema,把XML Schema学的扎实了,基于soap 的webservice就很容易,而且学习其他的知识也很快,例如apache 的顶级项目中XMLBeans也要求手写xml schema,XMLBeans能处理很复杂的对象树。
2.基于rest的webservice。rest也不是一种新技术,它是一种架构风格,rest强调的是资源,语义。其实web服务器上每一个文件,图片,视频等都可以看做一个资源,其实HTTP提供了很多方法,PUT,GET,DELETE,POST,TRACE,HEAD,MOVE,CONNECT等,但是我们只用到GET,POST,而且浏览器也只支持这两种方式,导致我们误解了HTTP,HTTP(Hypertext transfer protocol)翻译过来一般是超文本传输协议,而REST(Representational State Transfer)是表述性状态转移,HTTP里transfer翻译成传输,重在传输,而REST里是转移,强调的是一种语义。其实HTTP是一种转移协议,只是这么多年业界形成的一种习惯,到现在很难改变这种习惯。我们以前访问一个网址,比如http://www.myapp.com/article?id=1,而rest的架构风格:http:www.myapp.com/article/1.当然区分REST风格和普通的并不是依靠url来判定的。

在java 中已经有了基于这两种方式的标准,规范,JAXWS与JAXRS,而实现了这些标准的框架XFire=>CXF,Jersey,Axis1=>Axis2等,这些框架都对这两种方式提供了很好的支持,最后不得不提出的是开发完webservice,由于编排与反编排等原因,有必要对其进行性能测试与压力测试等,一些工具能很好的进行测试,apache的JMetter,不仅能进行基本的测试,还能进行分布式的测试,还有soapUI,LoadeUI等进行测试,还有一个是firefox上的一个小插件poster可以对rest webservice进行调用,很小巧的一个工具。
如今很多厂商都提供webservice 这种服务,比如Facebook,腾讯,谷歌等都提供这样的公开服务,我们只需要调用他们,而不关他们的服务接口与实现是用什么代码写的,这充分的体现了webservice的异构性
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值