Web Service的优势
(1) 可让异构的程序相互访问(跨平台)
(2) 松耦合
(3) 基于标准协议(通用语言,容许其余程序访问)
html
什么是webservice(用你的话描述webservice)?在何时用webservice(webservice能给咱们解决什么样的问题)?程序员
一句话归纳:WebService是一种跨编程语言和跨操做系统平台的远程调用技术。web
所谓跨编程语言和跨操做平台,就是说服务端程序采用Java编写87 ,客户端程序则能够采用其余编程语言编写,反之亦然!跨操做系统平台则是指服务端程序和客户端程序能够在不一样的操做系统上运行。算法
所谓远程调用,就是一台计算机a上的一个程序能够调用到另一台计算机b上的一个对象的方法。譬如从天气预报系统中获取某个城市的天气数据在本身系统中进行展现;从证券交易系统中获取某只股票的交易信息在本身的系统中进行展现;又譬如一个商城系统中可以展现快递的跟踪信息,而这些信息就是经过webservice从具体的快递公司的系统中获取的数据。spring
其实能够从多个角度来理解WebService,从表面上看,WebService就是一个应用程序向外界暴露出一个能经过Web进行调用的API,也就是说能用编程的方法经过Web来调用这个应用程序。咱们把调用这个WebService的应用程序叫作客户端,而把提供这个WebService的应用程序叫作服务端。从深层次看,WebService是创建可互操做的分布式应用程序的新平台,是一个平台,是一套标准。它定义了应用程序如何在Web上实现互操做性,你能够用任何你喜欢的语言,在任何你喜欢的平台上写Web service ,只要咱们能够经过Web service标准对这些服务进行查询和访问。数据库
二.WSDL是什么,有什么做用?编程
WSDL是web service definition language的缩写,即web service的定义(描述)语言。设计模式
怎样向别人介绍你的 web service 有什么功能,以及每一个函数调用时的参数呢?你可能会本身写一套文档,你甚至可能会口头上告诉须要使用你的web service的人。这些非正式的方法至少都有一个严重的问题:当程序员坐到电脑前,想要使用你的web service的时候,他们的工具(如Visual Studio)没法给他们提供任何帮助,由于这些工具根本就不了解你的web service。解决方法是:用机器能阅读的方式提供一个正式的描述文档。web service描述语言(WSDL)就是这样一个基于XML的语言,用于描述web service及其函数、参数和返回值。由于是基于XML的,因此WSDL既是机器可阅读的,又是人可阅读的,这将是一个很大的好处。一些最新的开发工具既能根据你的web service生成WSDL文档,又能导入WSDL文档,生成调用相应web service的代码。浏览器
Webservice服务发布以后,经过浏览器访问发布的+?wsdl便可得到wsdl文档。缓存
三.WSDL文档主要有那几部分组成,分别有什么做用?
一个WSDL文档的根元素是definitions元素,WSDL文档包含7个重要的元素:types, import, message, portType, operations, binding和service元素。
一、 definitions元素中通常包括若干个XML命名空间;
二、 Types元素用做一个容器,定义了自定义的特殊数据类型,在声明消息部分(有效负载)的时候,messages定义使用了types元素中定义的数据类型与元素;
三、 Import元素可让当前的文档使用其余WSDL文档中指定命名空间中的定义;
四、 Message元素描述了Web服务的有效负载。至关于函数调用中的参数和返回值;
五、 PortType元素定义了Web服务的抽象接口,它能够由一个或者多个operation元素,每一个operation元素定义了一个RPC样式或者文档样式的Web服务方法;
六、 Operation元素要用一个或者多个messages消息来定义它的输入、输出以及错误;
七、 Binding元素将一个抽象的portType映射到一组具体的协议(SOAP或者HTTP)、消息传递样式(RPC或者document)以及编码样式(literal或者SOAP encoding);
八、 Service元素包含一个或者多个Port元素
每个Port元素对应一个不一样的Web服务,port将一个URL赋予一个特定的binding,经过location实现。
可使两个或者多个port元素将不一样的URL赋给相同的binding。
四.SOAP是什么?
SOAP是simple object access protocal的缩写,即简单对象访问协议。 是基于XML和HTTP的一种通讯协议。是webservice所使用的一种传输协议,webservice之因此可以作到跨语言和跨平台,主要是由于XML和HTTP都是独立于语言和平台的。Soap的消息分为请求消息和响应消息,一条SOAP消息就是一个普通的XML文档,包含下列元素:
一、 必需的 Envelope 元素,可把此XML文档标识为一条SOAP消息
二、 可选的 Header 元素,包含头部信息
三、 必需的 Body 元素,包含全部的调用和响应信息
四、 可选的 Fault 元素,提供有关在处理此消息所发生错误的信息
Soap请求消息
Soap响应消息
五.怎么理解UDDI?
UDDI是Universal Description Discovery and Integration的缩写,即统一描述、发现和整合规范。用来注册和查找服务,把web services收集和存储起来,这样当别人访问这些信息的时候就从UDDI中查找,看有没有这个信息存在。
五.Webservice的SEI指什么?
WebService EndPoint Interface(webservice终端[Server端]接口)
就是 WebService服务器端用来处理请求的接口
六.说说你知道的webservice框架,他们都有什么特色?
Webservice经常使用框架有JWS、Axis二、XFire以及CXF。
下面分别介绍一个这几种Web Service框架的基本概念
一、JWS是Java语言对WebService服务的一种实现,用来开发和发布服务。而从服务自己的角度来看JWS服务是没有语言界限的。可是Java语言为Java开发者提供便捷发布和调用WebService服务的一种途径。
二、Axis2是Apache下的一个重量级WebService框架,准确说它是一个Web Services / SOAP / WSDL 的引擎,是WebService框架的集大成者,它能不但能制做和发布WebService,并且能够生成Java和其余语言版WebService客户端和服务端代码。这是它的优点所在。可是,这也不可避免的致使了Axis2的复杂性,使用过的开发者都知道,它所依赖的包数量和大小都是很惊人的,打包部署发布都比较麻烦,不能很好的与现有应用整合为一体。可是若是你要开发Java以外别的语言客户端,Axis2提供的丰富工具将是你不二的选择。
三、XFire是一个高性能的WebService框架,在Java6以前,它的知名度甚至超过了Apache的Axis2,XFire的优势是开发方便,与现有的Web整合很好,能够融为一体,而且开发也很方便。可是对Java以外的语言,没有提供相关的代码工具。XFire后来被Apache收购了,缘由是它太优秀了,收购后,随着Java6 JWS的兴起,开源的WebService引擎已经再也不被看好,渐渐的都败落了。
四、CXF是Apache旗下一个重磅的SOA简易框架,它实现了ESB(企业服务总线)。CXF来自于XFire项目,通过改造后造成的,就像目前的Struts2来自WebWork同样。能够看出XFire的命运会和WebWork的命运同样,最终会淡出人们的视线。CXF不可是一个优秀的Web Services / SOAP / WSDL 引擎,也是一个不错的ESB总线,为SOA的实施提供了一种选择方案,固然他不是最好的,它仅仅实现了SOA架构的一部分。
注:对于Axis2与CXF之间的关系,一个是Axis2出现的时间较早,而CXF的追赶速度快。
如何抉择:
一、若是应用程序须要多语言的支持,Axis2应当是首选了;
二、若是应用程序是遵循 spring哲学路线的话,Apache CXF是一种更好的选择,特别对嵌入式的Web Services来讲;
三、若是应用程序没有新的特性须要的话,就还是用原来项目所用的框架,好比 Axis1,XFire,Celtrix或BEA等等厂家本身的Web Services实现,就别劳民伤财了。
七.你的系统中是否有使用到webservice开发,具体是怎么实现的?
若是你以为本身掌握的不够好,对本身不够自信的能够回答为“个人系统中没有使用到webservice的开发,可是我掌握webservice开发的概念和流程”,而后能够给他讲讲相关的概念,也就是上面的这些问题的回答,这样能够绕过这个问题,由于并非全部的系统都会涉及到webservice的开发。
另外一种回答便是先给他介绍一种webservice开发框架,好比CXF,而后告诉他你作的是服务端开发仍是客户端开发,若是你说你作的事服务端开发,那么你就告诉他怎么定义的webservice,使用了哪些注解,怎么跟spring进行的整合,怎么发布的服务等等;若是你告诉他你作的事客户端的开发,那么你能够告诉他你怎么生成的本地代码,而后又怎么经过本地代码去调用的webservice服务。
wsdl(WebService Definition Language)是什么? 1.webservice定义语言,对应.wsdl文档 2.定义了webservice服务器端和客户端应用交互传递请求数据的格式和过程 3.一个webservice对应一个惟一的wsdl文档
SOAP(Simple Object Access Protocal)简单对象访问协议 1.是一种简单的,基于HTTP和XML的协议,用于在WEB交换结构化(XML)的数据 2.SOAP消息:请求消息和响应消息 3.HTTP+XML片段
Q. 应用集成方式有哪些?
A. 应用能够采用如下方式集成:
1. 共享数据库
2. 批量文件传输
3. 远程过程调用(RPC)
4. 经过消息中间件来交换异步信息(MOM)
Q. 应用集成能够采用的Web服务方式有什么?
A. SOAP WS(Simple Object Access Protocal) 和RESTful Web Service(REpresentational State Transfer)
Q. SOAP WS 和RESTful Web Service之间有什么不一样呢?
A.
GET – represent()
POST – acceptRepresention()
PUT – storeRepresention()
DELETE – removeRepresention()
Q. SOA和Web service的区别是什么?
A. SOA是一种软件设计准则,一种实现松耦合,高可复用性和粗粒度的web服务的设计模式。开发者能够选择任意协议实现SOA,例如,HTTP、HTTPS、JMS、SMTP、RMI、IIOP(例如,采用IIOP的EJB)、RPC等。消息能够采用XML或者数据传输对象(Data Transfer Objects,DTOs)。
Web Service是实现SOA的技术之一。也能够不用Web service来实现SOA应用:例如,用一些传统的技术,像Java RMI,EJB,JMS消息等。可是Web service提供的是标准的平台无关的服务,这些服务采用HTTP、XML、SOAP、WSDL和UDDI技术,所以能够带来J2EE和.NET这些异构技术(heterogeneous technologies)之间的互操做性。