(1)什么是webservice?
webservice是一种可以跨编程语言和跨平台进行远程调用的一种技术,是同步进行。
webservice主要分为两种,一种是基于浏览器的瘦客户端应用程序,一种是基于浏览器的富客户端应用程序(RIA)。
webservice其实就是一个系统主动暴露到外面的API,通过发布的webservice路径生成客户端,通过客户端访问这个系统所主动暴露的API,进行调用操作。
WebService平台需要一套协议来实现分布式应用程序的创建。任何平台都有它的数据表示方法和类型系统。要实现互操作性,WebService平台 必须提供一套标准的系统,用于沟通不同平台、编程语言和组件模型中的不同类型系统。
webservice平台必须提供一种标准来描述 webservice,让客户可以得到足够的信息来调用这个webservice。我们还必须有一种方法来对这个webservice进行远 程调用,这种方法实际是一种远程过程调用协议(RPC)。为了达到互操作性,这种RPC协议还必须与平台和编程语言无关。
(2)webservice是怎么实现的?
webservice实现主要是通过XML+XSD,SOAP和WSDL这三种技术实现。
1、XML+XSD
WebService使用HTTP协议进行数据传输数,是用XML格式对数据进行封装,在XML报文中说明调用远程服务对象的哪个方法,传递的参数是什么,以及服务对象的 返回结果是什么。 使用XML的格式对数据进行封装解决了数据的显示的问题,但是XML没有标准的的数据类型的定义,没有明确的说明报文中的数据代表什么,更加无法扩展数据类型,而XSD(XML Schema)就是为规定XML中数据类型的标准出现的,当你使用其他的编程语言或者其他的操作平台的时候,所有的数据类型都必须转化为XSD类型,这样就克服了编程语言不同和操作平台不同的问题。
2、SOAP
WebService通过HTTP协议发送请求和接收结果,发送的请求内容和结果内容都采用XML格式封装,并增加了一些特定的HTTP消息头,以说明 HTTP消息的内容格式,这些特定的HTTP消息头和XML内容格式就是SOAP协议。SOAP提供了标准的RPC方法来调用Web Service。
SOAP协议 = HTTP协议 + XML数据格式
SOAP协议定义了SOAP消息的格式,SOAP协议是基于HTTP协议的,SOAP也是基于XML和XSD的,XML是SOAP的数据编码方式。打个比 喻:HTTP就是普通公路,XML就是中间的绿色隔离带和两边的防护栏,SOAP就是普通公路经过加隔离带和防护栏改造过的高速公路。
3、WSDL
WSDL(Web Services Description Language)就是这样一个基于XML的语言,用于描述Web Service及其函数、参数和返回值。它是WebService客户端和服务器端都 能理解的标准格式。因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的,这将是一个很大的好处。一些最新的开发工具既能根据你的 Web service生成WSDL文档,又能导入WSDL文档,生成调用相应WebService的代理类代码。
WSDL 文件保存在Web服务器上,通过一个url地址就可以访问到它。客户端要调用一个WebService服务之前,要知道该服务的WSDL文件的地址。 WebService服务提供商可以通过两种方式来暴露它的WSDL文件地址:1.注册到UDDI服务器,以便被人查找;2.直接告诉给客户端调用者。
(3)webservice怎么使用?
代码中webservice分为服务端和客户端两部分,服务端就是系统主动暴露的API的具体处理代码,客户端就是远程调用时所使用的程序,客户端需要通过发布服务的具体路径来实现。如果服务端的代码有修改,客户端就需要重新生成。
(4)使用webservice应该注意些什么?
1、不要随意改动发布的Webservice的服务名称和Webservice方法名字。
2、服务端的程序完成之后,启动项目,有两种方式可以对服务端进行注册,一种通过@WebService和@WebMethod这两个标签表明这个程序是webservice的服务端代码,然后启动项目,扫描这两个标签,进行注册,另一种是通过XML配置文件,在配置文件中声明服务端程序,然后把配置文件配置到web.XML 中,这样项目启动就会加载到webservice服务端程序。
3、需要保证webservice服务端运行的环境稳定,不要变更太频繁。
4、需要确定webservice服务端的路径。
(5)使用webservice的好处?
1、可以跨操作平台进行通信。
2、可以忽略编程语言得差异。
3、使用HTTP协议和XML进行通信,稳定、普遍,复用性高,安全,快捷,有利于软件和数据重用,实现松耦合。
4、可以实现跨防火墙通信。
(6)webservice的缺点?
1、不适用与单机程序。
2、不适用于局域网内调用。
3、由于soap是基于xml传输,本身使用xml传输会传输一些无关的东西从而效率不高,随着soap协议的完善,soap协议增加了许多内容,这样就导致了使用soap协议去完成简单的数据传输的效率不高。如果直接用http传输自定义数据内容比webservice开发更快捷
(7)webservice实例?
1、定义接口,规定webservice的服务端的方法。
@WebService
public interface TestService{
@WebMethod
public void Test(byte[] message);
}
2、实现webservice接口,编写服务端的方法。
@WebService
public class Testimpl_Test implementsTestService{
@WebMethod
public void Test(byte[] message) {
String string =new String(message);
System.out.println("哈哈,成功了"+string );
}
}
3、进行服务端的注册,发布服务,主动暴露服务端API。
<?xml version="1.0"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://cxf.apache.org/jaxws
http://cxf.apache.org/schemas/jaxws.xsd">
<import resource="classpath:META-INF/cxf/cxf.xml" />
<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
<jaxws:endpoint id="test1"
implementor="com.Testimpl_Test "
address="/TestService" />
</beans>
4、生成客户端,进行远程调用。