webService

1.什么是webService?

webService使用Http发送使用SOAP协议(也有一些非SOAP协议,例如http rest)的数据的一种远程调用技术,它是跨编程语言和跨操作系统平台。

2.webService三要素

     (1) SOAP即简单对象访问协议(Simple Object Access Protocal) 是一种简单的基于 XML 的协议,它使应用程序通过 HTTP 来交换信息,简单理解为soap=http+xml,前面部分与http类似,后面数据使用xml封装。

Soap协议版本主要使用soap1.1、soap1.2。

       SOAP不是webservice的专有协议,其他应用协议也使用soap传输数据。例如,SMTP、tr069等。

    

    (2) WSDL (Web Server Description Language)是基于 XML 的用于描述Web Service及其函数、参数和返回值。通俗理解Wsdl是webservice的使用说明书。wsdl在xml文件中,使用各种标签以及属性来描述webservice服务。下面为一个wsdl文件。

    (3)UDDI 是一种目录服务,通过它,企业可注册并搜索 Web services。企业将自己提供的Web Service注册在UDDI,也可以使用别的企业在UDDI注册的web service服务,从而达到资源共享。 UDDI旨在将全球的webservcie资源进行共享,促进全球经济合作。

     目前大部分企业使用webservice并不是必须使用UDDI,因为用户通过WSDL知道了web service的地址,可以直接通过WSDL调用webservice。

3.三种WebService 规范。

JAVA 中共有三种WebService 规范,分别是JAX-WS(JAX-RPC)、JAXM&SAAJ、JAX-RS。

(1)JAX-WS  的全称为 Java API forXML-Based Webservices ,早期的基于SOAP 的JAVA 的Web 服务规范JAX-RPC(Java API For XML-RemoteProcedure Call)目前已经被JAX-WS 规范取代。从java5开始支持JAX-WS2.0版本,Jdk1.6.0_13以后的版本支持2.1版本,jdk1.7支持2.2版本。

(2)JAXM(JAVA API For XML Message)主要定义了包含了发送和接收消息所需的API,SAAJ(SOAP With Attachment APIFor Java,JSR 67)是与JAXM 搭配使用的API,为构建SOAP 包和解析SOAP 包提供了重要的支持,支持附件传输等,JAXM&SAAJ 与JAX-WS 都是基于SOAP 的Web 服务,相比之下JAXM&SAAJ 暴漏了SOAP更多的底层细节,编码比较麻烦,而JAX-WS 更加抽象,隐藏了更多的细节,更加面向对象,实现起来你基本上不需要关心SOAP 的任何细节.

(3)JAX-RS 是JAVA 针对REST(Representation State Transfer)风格制定的一套Web 服务规范,由于推出的较晚,该规范(JSR 311,目前JAX-RS 的版本为1.0)并未随JDK1.6 一起发行。

4. webservice优点

1、采用xml支持跨平台远程调用。

2、基于http的soap协议(http协议的默认端口是80,防火墙不拦截80端口),可跨越防火墙。

3、支持面向对象开发。

4、有利于软件和数据重用,实现松耦合。

5. webservice缺点

由于soap是基于xml传输,本身使用xml传输会传输一些无关的东西从而效率不高,随着soap协议的完善,soap协议增加了许多内容,这样就导致了使用soap协议进行数据传输的效率不高。

6.webservice的应用场景

适用:

(1) 用于接口服务,不考虑客户端类型,不考虑性能,建议使用

 用于公开接口服务面向互联网公开的接口,例如:某公司产品促销介绍、股票信息查询等,因为webservice使用的soap协议是一个标准协议,其它公司使用标准协议通信,方便系统开发和维护。比如:便民网站的天气查询接口、火车时刻查询接口等。

 用于内部接口服务: 一个大的系统平台是由若干个系统组成,系统与系统之间存在数据访问需求,为了减少系统与系统之间的耦合性可以将接口抽取出来提供单独的接口服务供它系统调用。

  (2) 服务端已经确定使用webservice,客户端无法选择,只能使用webservice

不适用:

(1)对性能要求很高的应用,不建议使用webservice

比如银行交易系统、股票交易系统等,任何延迟都可能造成无法估量的损失。

(2)同构程序之间通信不建议使用webservice(异构程序,例如用不同语言完成的程序,需要webservice中间处理)

对于同构的JAVA程序,比如Java的RMI同样可以实现远程调用,而且性能比webservice好很多。

7.webservice发布服务之后,如何访问该服务?

(1)使用jdk bin目录下提供的wsimport命令来自动生成客户端代码,仅支持soap协议1.0,该种方式不灵活,关键代码都写死在代码中,仅用于测试。

(2)使用service编程调用

 public static void main(String[] args) throws MalformedURLException {
        //创建wsdl的地址
        URL url =  new URL("http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?WSDL");
        //创建服务名称
        //1.命名空间地址namespaceURI
        //2.服务视图名serviceName
        QName  qName = new QName("http://WebXml.com.cn/","MobileCodeWS");
        //创建服务视图
        //参数解释
        // 1. wsdlDocumentLocation - wsdl地址
        // 2. serviceName -服务名称。
        javax.xml.ws.Service  service = javax.xml.ws.Service.create(url,qName);
        //获取服务实现类
        MobileCodeWSSoap  mobileCodeWSSoap =  service.getPort(MobileCodeWSSoap.class);
        //调用实现方法
        String result = mobileCodeWSSoap.getMobileCodeInfo("13798127983",null);
        System.out.println(result);
    }

(3)使用HttpURLConnection来访问,该方式比较麻烦,需要程序员自己写发送http请求的代码,以及封装和解析soap协议的数据。

(4)使用ajax访问。


8.其他

jdk提供的jaxwx发布webservice服务,只支持soap1.1;

apache提供的cxf webservice框架可以支持soap1.2;














  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值