您好,欢迎访问三七文档
当前位置:首页 > 财经/贸易 > 资产评估/会计 > WebService上课-第1天
webservice技术潘志鹏前言在正式讲解Webservices之前,我们纵观一下软件的发展过程,大致分为3个过程:传统应用程序,分布式计算,Web服务。(1)传统应用程序采用独立的进程模式,比如word,excel,这些应用程序之间没法进行真正通信,彼此间不能共享数据。(2)分布式计算分布式计算允许不同的应用程序彼此进行通信,这些应用程序可以位于不同的计算机上。如最早期的COBAR技术、Microsoft公司的COM/DCOM技术、SUN公司的RMI/EJB等技术。缺点1:客户端应用程序必须和服务端应用程序必须使用相同的技术。缺点2:上面几种技术实现的应用程序,不能像HTTP协议一样,能够跨过防火墙的阻碍,访问其他的应用程序。也就是说,只能在一个大的局域网内,仍然没有达到网络上共享数据的目的。以上技术的适用场景:在一个封闭的内部系统内进行通信,把多个业务放在多台不同的计算机上(3)Web服务以上第的分布式技术中的3种技术,都有一定的局限性,比如说不能跨语言,不能跨平台,扩展性不好,支持度不高等。在XML已经成为世界通用数据交换标准的前提下,Webservices诞生便水到渠成了。Webservices是基于XML数据标准的。所以它完全能够跨越任何语言,任何平台,而且任何语言和平台可以通过XML这一中间数据进行服务和功能扩展。图://todo1webservice技术1.1什么是WebServicesWebservices(也称web服务技术)是一种面向服务的架构技术,是一种进行分布式部署和应用的流行方式,通常用来建立可互操作的分布式应用程序。所有基于网络的语言都提供了web服务发布和调用的功能,如java,ASP,PHP,Flex等。W3C的定义:Web服务(Webservices)应当是一个软件系统,用以支持网络之间不同机器的互动操作。简单地说,Webservices就是一个应用程序,它向外界暴露出能够进行远程调用的接口程序。1.2WebServices平台、规范、技术Webservices基本规范:SOAP(包括简单对象访问协议),SimpleObjectAccessProtocolWSDL(Webservices描述语言),WebServicesDescriptionLanguageUDDI(统一描述、发现与集成)。UniversalDescription,DiscoveryandIntegrationWebservices扩展规范:WS安全(WS-Security)WS策略(WS-Policy)WS寻址(WS-Addressing)WS业务流程(WS-BPEL)等。XML/xsd:最基本的技术,XML是可扩展标记语言,XSD用来定义并约束XML的内容。Soap:(SimpleObjectAccessProtocol)简单对象访问协议,是标准的WebService通信规范,主要用于在web服务中描述服务传输的数据。SOAP是一个基于XML的可扩展消息信封格式,需同时绑定一个传输用协议。这个协议通常是HTTP或者HTTPS,但也可能是SMTP或XMPP。SOAP标准是由IBM、Microsoft、Lotus等公司在1998年共同提出的。目前标准版本是SOAP1.1。WSDL:(WebServicesDescriptionLanguage)WSDL是一个描述web服务发布的XML格式文档。WSDL文件中的信息定义webServices的名称,方法的名称,这些方法的参数和其他详细信息。WSDL文件大多数情况下由软件自动生成和使用。另外,我们还可以使用WSDL文件来辅助生成服务端和客户端代码以及配置信息。也就是说,SOAP是用来最终完成web服务调用的,而WSDL是用于描述如何使用SOAP来调用web服务的。UDDI:(universalDescription,DiscoveryandIntergration)统一描述、发现和集成是一个用来发布和搜索web服务的协议,应用程序可通过此协议在运行时找到目标的web服务。总结:SOAP用于表示传输的数据并完成web服务调用,WSDL用于描述服务器端发布的服务并告诉SOAP如何来调用web服务,UDDI用于表示服务器端发布服务和客户端查找服务。web服务发布的数据必须基于XML格式和SOAP协议,所以程序之间的互相调用只需要遵循SOAP协议就可以。1.3架构功能全面的Webservices平台是XML/XSD+HTTP+SOAP+WSDL+UDDI。服务提供者到注册中心(uddi)注册自己的服务。服务请求者(客户端)到注册中心(uddi)找到需要的web服务,并获得服务定义(wsdl),根据wsdl定义就可以调用相应的服务(通过soap协议)。这里要特别提出,UDDI不是必须的,事实上目前在企业项目中很少用到UDDI。1.4Java与其他语言互操作WSDL文件是一个XML文档,它对webServices的接口进行了定义,用于说明一组SOAP消息以及如何交换这些消息。只要获得服务地址和WSDL文件,就可对服务进行调用,无论服务的实现者是java还是.net。操作方式:1、直接解析soap消息。(繁琐、效率低)2、通过工具(apachesoap、visualstudio)事实上支持webservices的各种语言和平台都可以实现互操作,如vb,delphi。只不过目前主流是Java与.net。1.5SOA与WebService最后我想说说SOA与WebService的关系,这是经常被混淆的两个概念。SOA(Service-orientedarchitecture,面向服务架构)。将企业应用系统中细粒度的功能打包成粗粒度的服务,通过中间方式(语言),实现异构系统(操作系统、开发语言)之间的通讯、调用。SOA并不是一种技术,而是一种软件设计理念。Webservice!=SOA,但Webservice是目前实现SOA的最好方式。2.Axis2简介与下载MVC有struts框架,WebService也有框架:如axis2、xfire、cxf。下面将简单介绍axis2以及支持的规范。2.1Axis2简介ApacheAxis2是Axis的后续版本,是新一代的SOAP引擎。Axis2的主要特点有:(1)采用名为AXIOM(AXIsObjectModel)的新核心XML处理模型,利用新的XML解析器提供的灵活性按需构造对象模型。(2)支持不同的消息交换模式。目前Axis2支持三种模式:In-Only、Robust-In和In-Out。In-Only消息交换模式只有SOAP请求,而不需要应答;Robust-In消息交换模式发送SOAP请求,只有在出错的情况下才返回应答;In-Out消息交换模式总是存在SOAP请求和应答。(3)提供阻塞和非阻塞客户端API。(4)支持内置的Web服务寻址(WS-Addressing)。(5)灵活的数据绑定,可以选择直接使用AXIOM,使用与原来的Axis相似的简单数据绑定方法,或使用XMLBeans、JiBX或JAXB2.0等专用数据绑定框架。(6)新的部署模型,支持热部署。(7)支持HTTP,SMTP,JMS,TCP传输协议。(8)支持REST(RepresentationalStateTransfer)。2.2Axis2支持的规范包括SOAP1.1and1.2MessageTransmissionOptimizationMechanism(MTOM),XMLOptimizedPackaging(XOP)andSOAPwithAttachmentsWSDL1.1,includingbothSOAPandHTTPbindingsWS-Addressing(submissionandfinal)WS-PolicySAAJ1.12.3Axis2下载Axis2官方下载地址:下载:axis2-1.4.1-bin.zip和axis2-1.4.1-war.zipAxis还可以与ant结合,使用wsdl去生成客户端和服务端的代码:可以参考服务端有一个最简单的方法就是把axis2.war中的内容作为WebProject的基础,来进行开发。解压axis2.war,然后部署到tomcat/webapps目录下3.1用POJO实现零配置的WebService在本文中主要介绍了如何使用Axis2开发一个不需要任何配置文件的WebService,并在客户端使用Java和调用这个WebService。对于用Java实现的服务程序给人的印象就是需要进行大量的配置,不过这一点在Axis2中将被终结。在Axis2中不需要进行任何的配置,就可以直接将一个简单的POJO发布成WebService。其中POJO中所有的public方法将被发布成WebService方法。3.1.1编写POJO下面我们来实现一个简单的POJO,代码如下:importjava.util.Random;/***简单的webservice*@authorpzp*/publicclassSimpleService{publicStringgetGreeting(Stringname){System.out.println(===============服务器打印:调用getGreeting方法);return你好,+name;}publicintgetPrice(){System.out.println(===============服务器打印:调用getPrice方法);returnnewRandom().nextInt(1000);}publicvoidsetCount(intprice){System.out.println(===============服务器打印:调用setPrice方法:+price);}}在SimpleService类中有两个方法,由于这两个方法都是public方法,因此,它们都将作为WebService方法被发布。3.1.2发布并查看webservices编译SimpleService类后,将SimpleService.class文件放到Tomcat安装目录\webapps\axis2\WEB-INF\pojo目录中(如果没有pojo目录,则建立该目录)。现在我们已经成功将SimpleService类发布成了WebService。在浏览器地址栏中输入如下的URL:这时当前页面将显示所有在Axis2中发布的WebService,如图2所示。图2在浏览器地址栏中输入如下的两个URL来分别测试getGreeting和getPrice方法:=bill图3和图4分别显示了getGreeting和getPrice方法的测试结果。图3getGreeting方法的测试结果图4getPrice方法的测试结果在编写、发布和测试0配置的WebService时应注意如下几点:1.POJO类不能使用package关键字声明包。2.Axis2在默认情况下可以热发布WebService。也就是说,将WebService的.class文件复制到pojo目录中时,Tomcat不需要重新启动就可以自动发布WebService。如果想取消Axis2的热发
本文标题:WebService上课-第1天
链接地址:https://www.777doc.com/doc-2855597 .html