webservice开发1.ppt_第1页
webservice开发1.ppt_第2页
webservice开发1.ppt_第3页
webservice开发1.ppt_第4页
webservice开发1.ppt_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、沟通,从心开始,Web Service开发,路线图,Wikipedia,W3C: Web service is a software system designed to support interoperable machine-to-machine interaction over a network. It has an interface that is described in a machine-processable format such asWSDL. Other systems interact with the Web service in a manner prescr

2、ibed by its interface using messages, which may be enclosed in aSOAPenvelope, or follow aRESTapproach. These messages are typically conveyed usingHTTP, and normally compriseXMLin conjunction with other Web-related standards.,绿化版,Web services = XML + transport protocol (如HTTP),特点,自包含、自描述从而实现 松耦合 客户或服

3、务任何一方执行机制的改变都不会影响应用程序的正常运行 互操作性 任何 WebService 都可以与其它 Web 服务进行交互 集成性 可以使用任何语言(如Java、C/C+,甚至COBOL)来编写 WebService,开发者无需更改他们的开发环境就可生产和使用 WebService 简单性 已有的组件(如JavaBean、COM)很容易被包装成WebService 普遍性 WebService 使用 HTTP 和 XML 进行通信。因此,任何支持这些技术的设备都可以拥有和访问 Web 服务 行业支持 主要的供应商都支持 SOAP 及周边 WebService 技术,服务模型,服务消费者,服

4、务提供者,服务,服务注册 (可选),服务描述,绑定 (SOAP),服务描述,查找 (UDDI),部署 (WSDL),调用流程,服务提供者将Web Services发布到UDDI进行注册 服务消费者请求UDDI查找服务 UDDI向服务消费者提供服务地址 服务消费者绑定服务 Web Service服务执行,并返回结果集到服务消费者,SOAP,Simple Object Access Protocol 一种规范,用来定义消息的 XML 格式,首先,SOAP是Web Service的通信协议,SOAP消息最常见的是采用HTTP传输 HTTP 的普及和 SOAP 的简单性使您几乎可以从任何环境调用它们,

5、其次,SOAP用来介绍如何将程序数据表示为 XML,以及如何使用 SOAP进行远程过程调用 (RPC),WSDL,概念:Web Service描述语言 以XML为基础 描述SOAP消息以及如何交换这些消息 描述服务的位置 描述Web Service使用何种通信协议与服务进行通信,UDDI,概念:Web Service黄页,白页描述提供服务的公司:名称、地址、联系方式等等,黄页定义基于标准分类法(例如 North American Industry Classification System 和 Standard Industrial Classification)的行业类别,绿页详细描述了访问

6、服务的接口,作为客户端调用的依据,适用场景,深入浅出,Web Service,SOAP,XML Schema,XML,XML/XML Schema,XML 一种表示数据的方式 XML DTD 定义和描述XML文档的结构和内容模式 XML Schema 定义和描述XML文档的结构和内容模式 定义XML文档中存在哪些元素和元素之间的关系 定义元素和属性的数据类型 XML Schema本身是一个XML文档,它符合XML语法结构。可以用通用的XML解析器解析它,示例: XML DTD,DTD: ,示例:XML Schema,XML Schema: ,数据类型,XML DTD CDATA 、Enumer

7、ated、NMTOKEN 、NMTOKENS等十种 XML Schema 内置三十七种数据类型,如long,int,short,double等 用户自定义类型 简单类型定义(simpleType) 复合类型定义(complexType),元素顺序的支持,DTD: XML Schema: ,命名空间,目的是为了能够在一个XML文档中使用其它XML文档中的一些具有通用性的定义(通常是一些元素或数据类型等的定义),并保证不产生语义上的冲突 XML DTD并不能支持这一特性,示例, ,小结,XML DTD是作为XML 标准的一部分发布的,W3C似乎并没有准备将其从XML标准中废除掉,对于XML DTD

8、的支持还将持续 对数据交换或者描述能力要求较高、XML DTD已不能满足功能需求的应用来说,以XML Schema来代替XML DTD已经成为一种必然趋势 在一些相对要求简单的处理环境中,XML DTD仍然会占有它的一席之地,深入浅出,Web Service,SOAP,WSDL,XML Schema,XML,深入WSDL,描述 Web 服务做什么? 它在哪里? 如何调用它? WSDL XML 中相当于简历的等同物,元素结构图, 包含以下属性 name targetNamespace xmlns:tns xmlns:soap 和 xmlns:xsd xmlns,元素说明,Types Messag

9、e PortType Operation Service Port Binding,一个数据类型定义的容器 包含了所有在消息定义中需要的XML元素的类型定义,定义在通信中使用的消息的数据结构 一 对应在调用者和服务之间传递的一条信息 二 两条消息,一条负责请求,一条负责响应 可以没有任何部分,或者有多个部分,每个部分都有一个名字和可选的类型 当 WSDL 描述一个对象时,每一个部分映射到一个方法调用的参数上 如果一个方法返回为 void ,那么响应就是一条空信息,Message元素包含了一组Part元素 每个Part元素都是最终消息的一个组成部分 每个Part都会引用一个DataType来表示

10、它的结构 Part元素不支持嵌套,都是并列出现 可以使用DataType来实现嵌套,定义服务访问入口的类型 每一个输入输出的消息属性必须对应前面定义过的 的名称 何谓访问入口的类型? 传入/传出消息的模式及其格式 一个PortType可以包含若干个Operation,而一个Operation则是指访问入口支持的一种类型的调用 在WSDL里面支持四种访问入口调用的模式: 单请求 单响应 请求/响应 响应/请求,请求指的是从客户端到Web服务端 响应指的是从Web服务端到客户端 PortType的定义中会引用消息定义部分的一个到两个消息,作为请求或响应消息的格式 比如,一个股票查询的访问入口可能就

11、会支持两种请求消息,一种请求消息中指明股票代码,而另一种请求消息中则会指明股票的名称,响应消息可能都是股票的价格等等。,如果一个操作只指定了输入,则只是单向操作 输出后面紧跟着输入则是 请求-响应 (solicit-response) 操作,单一的输入是一个通告 当 WSDL 描述一个对象时,每一个 映射一个方法并且每一个 映射一个 Java 接口或类,小小结,Types、Message、PortType 三种结构描述了调用Web服务的抽象定义,这三部分与具体Web服务部署细节无关,是可复用的描述(每个层次都可以复用) 可以这么认为: 前三种结构是类比与对象语言的IDL描述的对象 描述了对象的

12、接口标准 到底对象是用哪种语言实现,遵从哪种平台的细节规范,被部署在哪台机器上则是后面的元素所描述的,描述的是一个具体的被部署的Web服务所提供的所有访问入口的部署细节 一个Service往往会包含多个服务访问入口,而每个访问入口都会使用一个Port元素来描述,描述的是一个服务访问入口的部署细节 包括通过哪个Web地址(URL)来访问,应当使用怎样的消息调用模式来访问等 其中消息调用模式则是使用Binding结构来表示,Binding结构定义了某个PortType与某一种具体的网络传输协议或消息传输协议相绑定 绑定的类型属性必须对应定义过的 的名称 如果一个服务支持不止一个协议,WSDL 应该

13、对每一个它支持的协议都包含一个 从这一层次开始,描述的内容就与具体服务的部署相关了 比如可以将PortType与SOAP/HTTP绑定,也可以将PortType与MIME/SMTP相绑定等,其它, 描述Web Service的主要目的 元素的描述信息,小结,开放 允许通过扩展使用其他的类型定义语言(不光是XML Schema) 允许使用多种网络传输协议和消息格式(SOAP/HTTP,HTTP-GET/POST以及MIME等,甚至更多) 复用 分离了抽象定义层和具体部署层,使得抽象定义层的复用性大大增加,深入浅出,Web Service,SOAP,WSDL,XML Schema,XML,深入SO

14、AP,类型 XML 文档 组成 由一个强制性的 SOAP Envelope 组成 SOAP Header(可选) SOAP Body(必须),元素说明,Envelope Header Body Fault,Envelope,SOAP 消息的顶层元素 命名空间(http://soap/envelope/) 例: ,Header,可选 提供了一个扩展 SOAP 消息功能的机制 如WS-Security 例: ,Body,职责 包含实际要发送的消息 约定 强制性的元素且其子元素通常属于一个用户定义的名称空间 必须是 SOAP Envelope 元素的一个直接子元

15、素 必须直接跟在 SOAP Header 元素的后面 若没有 Header 元素,那么它应直接跟在 Envelope 元素的后面,Body, m1 ,Fault,错误消息 约定 作为一个主体条目出现并且只允许出现一次 子元素 faultcode (错误的标识) faultstring (错误的描述) faultactor (标识由谁导致的错误) detail (错误细节),Fault, SOAP-ENV:Server Not necessary information application is not responding properly. 12 ,带有 HTTP 报头的 SOAP请求,

16、POST /test/simple.jsp HTTP/1.1 Host: 6 Content-Type: text/xml; charset=utf-8 Content-Length: length SOAPAction: /echoString Brave ,带有 HTTP 报头的 SOAP 响应,HTTP/1.1 200 OK Content-Type: text/xml; charset=utf-8 Content-Length: length Hello, Brave! ,开发实战,XFire http:/xfire.codehau

17、 Axis2 /axis2,XFire,支持一系列Web Service的新标准-JSR181、WSDL2.0、JAXB2、WS-Security等 使用Stax解析XML,性能有了质的提高。XFire采用Woodstox作为Stax实现 支持从POJOs创建服务 Spring的结合 灵活的Binding机制,包括默认的Aegis,xmlbeans,jaxb2,castor,Axis2,采用名为 AXIOM(AXIs Object Model,Axis 对象模型)的新核心 XML 处理模型(基于StAX,JSR173) 支持 In-Only 和

18、In-Out 消息交换模式(MEP) 阻塞和非阻塞客户端 API(应用程序编程接口) 支持内置的 Web 服务寻址(WS-Addressing) 支持 XMLBeans 数据绑定 新部署模型 支持超文本传输协议(HTTP)、简单邮件传输协议(SMTP)和传输控制协议(TCP)等传输协议,开发步骤,接口 IHelloService,IHelloService package com.tutorial.xfire; public interface IHelloService public String sayHello(String msg); ,实现 HelloServiceImpl,Hell

19、oServiceImpl package com.tutorial.xfire; public class HelloServiceImpl implements IHelloService public String sayHello(String msg) return Hello, + msg + !; ,编写 services.xml,services.xml HelloService com.tutorial.xfire.IHelloService com.tutorial.xfire.HelloServiceImpl wrapped literal application ,编写

20、web.xml,web.xml XFireServlet org.codehaus.xfire.transport.http.XFireConfigurableServlet 0 XFireServlet /services/* ,部署,services.xml 复制services.xml到 */WEB-INF/classes/META-INF/xfire/ 运行tomcat 输入http:/localhost:8080/ws/services/HelloService?WSDL,性能比较,AXIS vs AXIS2 Axis2性能明显优于Axis1(平均4-5倍) Axis2:ADB略优于XMLBeans 在大数据集处理上,Axis2明显超过Axis1 AXIS2 vs XFire StAX(Streaming API for XML) XFire采用Woodstox Axis2采用AXIOM,性能损耗,Tips,性能是一项功能 机器吞吐率(requests/sec) 响应时间(time to first/last bytes) 避免调用本地Web Service 系统边界适用,Tips,服务定义 定义粗粒度服务,避免细粒度服务 do a lot of work, and return a lot

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论