1、yt 2010-02-24,Web Service 简介,什么是Web Service,1. 从表面上看,Web service 就是一个应用程序,它向外界暴露出一个能够通过Web进行调用的API。这就是说,你能够用编程的方法通过Web来调用这个应用程序。我们把调用这个Web service 的应用程序叫做客户。而把原来的Web service应用程序称之为服务器。,例如,你想创建一个Web service ,它的作用是返回当前的天气情况。那么你可以建立一个JSP页面,它接受邮政编码作为查询字符串,然后返回一个由逗号隔开的字符串,包含了当前的气温和天气。要调用这个JSP页面,客户端需要发送下面
2、的这个HTTP GET请求: http:/ 返回的数据就应该是这样: 21,晴 这个JSP页面就应该可以算作是Web service 了。因为它基于HTTP GET请求,暴露出了一个可以通过Web调用的API。当然,Web service 还有更多的东西。,什么是Web Service,2. Web services是建立可互操作的分布式应用程序的新平台。 Web service平台是一套标准,它定义了应用程序如何在Web上实现互 操作性。你可以用任何你喜欢的语言,在任何你喜欢的平台上写 Web service ,只要我们可以通过Web service标准对这些服务进行 查询和访问。,Web
3、Service原理图,应用案例1-1,服务提供者: eBay服务目的: Checks current bid price of an eBay auction (在eBay拍卖站上查看某产品目前的出价),应用案例1-2,送出soap封包到eBay的WebService,应用案例1-3,eBay的WebService回傳SOAP封包,XML-XSD,可扩展的标记语言(XML)是Web service平台中表示数据的基本格式。除了易于建立和易于分析外,XML主要的优点在于它既是平台无关的,又是厂商无关的。,XML解决了数据表示的问题,但它没有定义一套标准的数据类型,更没有说怎么去扩展这套数据类型。
4、例如,整形数到底代表什么?16位,32位,还是64位?这些细节对实现互操作性都是很重要的。W3C制定的XML Schema(XSD)就是专门解决这个问题的一套标准。它定义了一套标准的数据类型,并给出了一种语言来扩展这套数据类型。Web service平台就是用XSD来作为其数据类型系统的。当你用某种语言(如JAVA或C#)来构造一个Web service时,为了符合Web service标准,所有你使用的数据类型都必须被转换为XSD类型。 。,SOAP,Web service建好以后,你或者其他人就会去调用它。简单对象访问协议(SOAP)提供了标准的RPC方法来调用Web service。实际
5、上,SOAP在这里有点用词不当:它意味着下面的Web service是以对象的方式表示的,但事实并不一定如此:你完全可以把你的Web service写成一系列的C函数,并仍然使用SOAP进行调用。SOAP规范定义了SOAP消息的格式,以及怎样通过HTTP协议来使用SOAP。SOAP也是基于XML和XSD的,XML是SOAP的数据编码方式。第三章我们会讨论SOAP,并结识SOAP消息的各种元素。,WSDL,你会怎样向别人介绍你的Web service有什么功能,以及每个方法调用时的参数呢?你可能会自己写一套文档,你甚至可能会口头上告诉需要使用你的Web service的人。这些非正式的方法至少都
6、有一个严重的问题:当程序员坐到电脑前,想要使用你的Web service的时候,他们的工具(如Visual Studio)无法给他们提供任何帮助,因为这些工具根本就不了解你的Web service。 解决方法是:用机器能阅读的方式提供一个正式的描述文档。Web service描述语言(WSDL)就是这样一个基于XML的语言,用于描述Web service及其方法、参数和返回值。因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的,这将是一个很大的好处。一些最新的开发工具既能根据你的Web service生成WSDL文档,又能导入WSDL文档,生成调用相应Web service的代码
7、。,UUDI,UDDI(统一描述发现和集成) 提供一种发布和查找服务描述的方法。 UDDI 数据实体提供对定义业务和服务信息的支持。WSDL 中定义的服务描述信息是UDDI注册中心信息的补充。,Web Services 的体系架构图,Web Service的Java开源实现,众多的厂商、组织和个人都为WebService提供了开源的实现方式,接下来我们就将对主要的几种加以介绍: (1) Axis (2) Axis2 (3) Xfire (4) CXF,AXIS简介,Axis(Apache eXtensible Interaction System)是一款开源的Webservice运行引擎,它是
8、SOAP协议的一个实现,其本身来源于Apache的另一个项目Apache SOAP。,Axis目前有两个成熟的版本Axis1和Axis2。,其开发教程如下: AXIS2axis2创建web service.doc AXIS2Axis2结合Eclipse开发webservice.doc,Xfire简介,XFire是新一代的Java Web服务引擎,XFire使得在JavaEE应用中发布Web服务变得轻而易举。和其他Web服务引擎相比,XFire的配置非常简单,可以非常容易地和Spring集成,它使得Java开发人员终于可以获得和.Net开发人员一样的开发效率。XFire是codeHaus组织提供
9、的一个开源框架,它构建了POJO和SOA之间的桥梁,主要特性就是支持将POJO通过非常简单的方式发布成Web服务,这种处理方式不仅充分发挥了POJO的作用,简化了Java应用转化为Web服务的步骤和过程,也直接降低了SOA的实现难度,为企业转向SOA架构提供了一种简单可行的方式。官网地址: http:/xfire.codehaus.org/,用MyEclipse开发Xfire程序(1),这个页面是用来设置Xfire Servlet和Service.xml配置文件的详细信息, Xfire的这个Servlet专门用来根据Services.xml中的配置来生成WSDL,并提供Webservices服
10、务的功能。它提供了五种整合方式:,用MyEclipse开发Xfire程序(2),注意: 利用向导创建的WebService会将MyEclipse中的Xfire类库添 加到项目的构建路径中去,但不会复制任何的JAR文件到 项目的目录中,故我们如果想植时需要拷贝到目录中。,创建Web Service的bean,用MyEclipse开发Xfire程序(3),发布运行项目,显示WSDL,用MyEclipse开发Xfire程序(4),用MyEclipse开发Xfire程序(5),创建本工程的java 测试客户端,用MyEclipse开发Xfire程序(6),创建单独的客户端项目,(1) 新建普通web工
11、程MyFirstWebServicesClientDemo。,(2) File-New-Other-web services-web services client工 程名选我们新建的测试客户端, 产生方式用sedl url: 其值为上面服务的wsdl文件路径:,用MyEclipse开发Xfire程序(7),创建C#的客户端使用此服务,新建一个项目(WinForm,ASP.net都可以),我在这里使用的是一个我 winform项目。在起始页面上放置一个文本输入框用来显示调用Web Services的结果,放置一个按钮,用来单击调用Web Services。,(2)添加Web 引用,在WSDL一
12、栏中把刚才得到的WSDL地址复制过来,Web 引 用的名称输入JavaService,单击添加引用按钮就可以了。此时,我们可以在 VS.net 的Solution Explore中看到这个Web 引用。,CXF简介,XFire是新一代的Java Web服务引擎,XFire使得在JavaEE应用中CXF是Apache旗下一个重磅的SOA简易框架,它实现了 ESB(企业服务总线)。CXF来自于XFire项目,经过改造后形成的,就像目前的Struts2来自WebWork一样。可以看出XFire的命运会 和WebWork的命运一样,最终会淡出人们的视线。CXF不但是一个优秀的Web Services / SOAP / WSDL 引擎,也是一个不错的ESB总线,为SOA的实施提供了一种选择方案,当然他不是最好的,它仅仅实现了SOA架构的一部分。,