问题?WebService机制和使用
一.WebService是什么?
定义:Web服务(Web Services)是一段位于Internet上的业务逻辑,它是基于TCP/IP的创建出来的服务,基于标准的Internet协议(如HTTP或SMTP)访问的。webservice最基本的一个目的就是在网络上提供资源给各个不同平台的不同应用系统的协同工作能力,WebService并不是什么神秘的东西,它就是一个可以远程调用的类,或者说是组件,又或者说是接口,我们说接口比较正式点儿吧。
把你本地的功能开放出去供别人调用,你的信息给别人共享。网络上这样的例子很多,比如说webService天气预报(点击打开链接),以Microsoft,IBM,Oracle,HP,BEA,SAP等为首的计算机业巨头们无一例外地将自己的软件产品/解决方案全面支持WebServices,致力于推广Web services的全面应用。
Web Service(WEB服务)能够快捷和方便地综合结合各种系统、商务和任何应用平台。利用最新的Web Service 标准能够使任何软件系统和系统之间的应用互通互联,方便,而且更加廉价。这样就会节约成本而加大了平台之间的联系性。当然这样的webService服务有收费的,也有免费的。天下毕竟没有免费的午餐,别人为啥要开着服务器,拿着成本给你提供免费服务呢?是吧
二.WebService有什么作用?
1.
跨越防火墙的通信
客户端和服务器端之间通信都会有防火墙或者代理服务器。传统的实现互相通信的方法是在分布式对象,如DCOM、CORBA之间进行相互的远程过程调用(TCP/IP),这样的访问在internet上访问并没有得到很好的体现,而且有些访问还会受到防火墙的拦截。而Web服务使用基于XML消息处理作为基本的数据通信方式,应用程序可以使用HTTP和XML消息等标准在基于Web的应用程序之间交换信息,从而跨越防火墙。
2. 应用程序集成
企业里经常要把不同语言写成的在不同平台上运行的各种程序集成起来。大型公司常常有很多部门,每个部门都使用最适合自己特定需要的应用程序和平台,所以可以利用webservice将各种平台联系在一起。
3.B2B的集成
跨公司的商务交易集成通常叫做B2B集成。各企业可以采用Web服务与其他企业进行通信。通过Web服务能够将数据及应用程序的集成扩展到公司的防火墙之外。使公司能够与其伙伴、供应商、发行商和客户共享数据和商业过程,从而加强企业之间的合作关系。
4. 软件复用
软件复用是在软件开发中避免重复劳动的解决方案。Web服务实现了业务级别的软件复用,例如在B2B的集成中,各企业之间通过互相调用Web服务,就可以实现信息的共享和复用。
三.WebService运行机制?
1.WebService三要素:
(1)UDDI:(Universal Description Discovery and Integration)
UDDI始于2000年,由IBM,Microsoft和其他33家公司创立。用来管理,分发,查询webService 。用户可以自 己注册发布WebService调用。
程序开发人员通过UDDI机制查找分布在互联网上的Web Service,在获取其WSDL文件后,就可以在自己的程序中以SOAP调用的格式请求相应的服务了。
(2)WSDL:(WebServices Description Language)用来描述如何访问具体的WebService服务(在这里的wsdl文件就是基于xml文档数据交互的),说明如何与Web服务通信的XML语言。
注意这一步骤在后面会广泛使用:一些最新的开发工具既能根据你的Web services生成WSDL文档,又能导入WSDL文档,生成调用相应Webservices的代码。
Service:用于聚合一组服务访问点构成一个Web Services的定义。(设置service服务)
Port:为Binding(绑定)制定一个地址,从而定义一个服务访问点。(调用接口的设置)
Binding:为特定PortType(端口类型)定义的操作和消息指派具体的传输协议和数据格式规范。(绑定)
PortType:一个或多个端点支持的操作的抽象集合。每个操作一般会引用一条输入消息和一条输出消息。
Message:代表所传输数据的抽象定义。消息由一些逻辑片断构成,每个逻辑片断分别与某个类型系统中的定义相关联。
Type:提供用于描述所交换消息的数据类型定义(string、int);
(3)SOAP:(Simple Object Access Protocol)基于HTTP协议,采用XML格式,用来传递信息的格式,WebService的请求与响应。
SOAP它包括四个部分:
SOAP封装(envelop):封装定义了一个描述消息中的内容是什么,是谁发送的,谁应当接受并处理它,以及如何处理它们的框架;
SOAP编码规则:用于表示应用程序需要使用的数据类型的实例;
SOAP RPC表示(RPC representation):表示远程过程调用和应答的协定;
SOAP绑定(binding):使用底层协议交换信息。
SAOP的主要目标是:可扩展性和简单性
SOAP定义了一种在HTTP客户端和服务器端传输命令和参数的机制。SOAP不关心什么操作系统、编程语言或在服务器端或客户端使用的对象模型:除了需要使用HTTP传输外,与其他无关。SAOP只做客户端发送一个请求给服务器,调用相应的对象,然后服务器返回结果。
注意:SOAP1.0和1.2的区别:SOAP 1.2 带来的变化进一步把 Web 服务编织到 Internet 的大网中。变化之一是
GET 方法的引入。GET 之所以重要是因为它支持各种优化。这一点已经过 Web 自身的验证,它广泛地使用 GET 方法。通过本技巧可以进一步了解这一点。
四.WebService的如何使用
Eg1:
做一个简单的WebService例子:调用第三方的webservice服务(http://www.webxml.com.cn/zh_cn/index.aspx)
IE浏览器可以将这个WSDL服务描述文档下下来(http://fy.webxml.com.cn/webservices/EnglishChinese.asmx?wsdl)可以通过它生成本地客户端调用代码,从而调用它的服务。
几个命令:
-s解析xml说明书wsdl;自动生成客户端调用代码。. 当前路径
-p 修改生成的路径,默认路径是命名空间倒序
-d 只生成class
wsimport,这个是jdk为我们提供的:
我们先执行以下网上的wsdl命令:
这样它会报错,因为有几个它识别不了,把wsdl文档下载下来,把里面识别不了的删除,然后再执行以下命令。
它就会在本地生成java客户端的代码(因为是JDK提供的,肯定生成的是java代码)
新建一个java项目,把这个cn文件夹(里面有class文件可以全部删除。那是编译出现的)考到src下。
写一个Test1测试类调用服务:
package cn.com.webxml; import java.util.List; import org.junit.Test; public class Test1 { /** * 1.提供服务 * 2.提供方法的集合:端口 * 3.某个具体的方法,给方法设置参数,并且得到返回值 */ @Test public void Translate(){ EnglishChinese englishChinese = new EnglishChinese();//调用服务 EnglishChineseSoap soap = englishChinese.getEnglishChineseSoap();//调用接口 List<String> list1 = soap.translatorString("米饭").getString();//调用接口中的方法,并传<span style="white-space:pre"> </span>//<span style="white-space:pre"> </span>递参数过去 for(String s:list1){ System.out.println(s); } } }
结果:
成功调用,相反传递英文过去,返回中文喔,因为这个服务是双向翻译。可以试一试官网的其他service服务,方法一样得。
五.WebService总结
还没到总结的时候,还有下一节总结。点击打开链接