加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

WebService介绍

发布时间:2020-12-16 23:41:48 所属栏目:安全 来源:网络整理
导读:webservice并不是一门新技术,它融合了很多技术与标准,它实现了不同语言,不同平台,应用可以相互通信,目前市面上有两种方式的webservice,一种是基于soap的webservice,一种是基于rest的webservice,基于soap的webservice在很早以前出现的,而基于REST的
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的异构性

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读