高级软件工程

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Web服务1/66高级软件工程第五讲Web服务Web服务2/66高级软件工程内容一、Web服务简介二、SOAP三、WSDL四、支持Web服务的J2EE应用Web服务3/66高级软件工程一、Web服务简介2000年Microsoft等提出“WebServices”Web服务(WebServices)是基于XML和HTTP的一种服务服务访问协议:SOAP服务的描述:WSDL服务查找与发现:UDDIWeb服务4/66高级软件工程SOAP(SimpleObjectAccessProtocol)–XML-based(text)协议–支持远程通信–平台中立WSDL(WebServicesDefinitionLanguage)–接口描述UDDI(UniversalDescription,Discovery,andIntegration)–用于WebServices注册–用于发现WebServicesWeb服务5/66高级软件工程客户/服务请求者服务提供者注册请求/应答查找基本结构:服务信息注册库Web服务6/66高级软件工程提供了软件模块之间一种松耦合的交互方式根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署、组合和使用服务层是SOA的基础,可以直接被应用调用,从而有效控制系统中与软件代理的人为依赖性SOA的几个关键特性:一种粗粒度、松耦合服务架构,服务之间通过简单、精确定义适配器进行通讯,不涉及底层编程适配器和通讯模型Web服务7/66高级软件工程RPCvs.DocumentRPC–耦合密切些相对脆弱–仅仅是调用Document–耦合松散些对应用修改适应性好没有序列化/反序列化问题–需要额外的设计工作需要解释客户消息内容,然后进行相应操作Web服务8/66高级软件工程考虑WebServices的几个理由业务上–需要与外部客户通信技术上–应用需要与其它语言编写的客户程序通信–客户在防火墙之外管理上–管理托管webservice应用Web服务9/66高级软件工程什么时候不要使用WebServices客户程序与应用使用相同语言编写通信开销大–序列化或者远程访问开销大–WebServices/XML处理开销大–“Don’tUseXMLtoCommunicateUnlessYouReally,ReallyHaveTo”–FloydMarinescu,TheMiddlewareCompany永远记住:WebServices/XML是用于集成的Web服务10/66高级软件工程ApacheAxis(ApacheeXtensibleInteractionSystem)是ApacheWebService项目中的子项目最初起源于IBM的SOAP4J“最早的一批用于构造基于SOAP应用的FrameworkJBoss,WAS等重要的应用服务器都集成它典型的Web服务支持平台Web服务11/66高级软件工程服务器端AXIS句柄链处理架构用户配置一系列的handler,构成handlerchainAXIS依次调用handler处理消息(含context)类似于interceptor(截取器)Web服务12/66高级软件工程客户端AXIS句柄链处理架构Web服务13/66高级软件工程AXIS的子系统Web服务14/66高级软件工程二、SOAP1、SOAP概述2、数据表示3、消息格式4、协议映射Web服务15/66高级软件工程1、SOAP概述许多程序通过使用远程过程调用(RPC)在诸如DCOM与CORBA等对象之间进行通信但RPC会产生兼容性以及安全问题;防火墙和代理服务器通常会阻止此类流量通过HTTP在应用程序间通信是更好的方法因为HTTP得到了所有的因特网浏览器及服务器的支持SOAP就是被创造出来完成这个任务的Web服务16/66高级软件工程2000年5月,UserLand、Ariba、CommerceOne、Compaq、Developmentor、HP、IBM、IONA、Lotus、Microsoft以及SAP向W3C提交了SOAP因特网协议期望此协议能够通过使用因特网标准(HTTP以及XML)把图形用户界面桌面应用程序连接到因特网服务器首个关于SOAP的公共工作草案由W3C在2001年12月发布SOAP1.2于2003年6月被发布为W3C推荐标准Web服务17/66高级软件工程简单对象访问协议(SOAP)是网络环境中交换信息的简单协议为网络环境下软件之间结构化、类型化信息的交换提供了一种基于XML的机制它可以广泛地用于基于消息的系统和基于RPC的系统SOAP被设计为可以与各种其它协议结合使用但目前SOAP主要和HTTP及HTTP扩展框架相结合Web服务18/66高级软件工程简单地讲,SOAP=HTTP+RPC+XML即:SOAP以HTTP作为底层通讯协议以RPC作为一致性的调用途径以XML作为数据传送的格式SOAP的设计原则是:简单、易于扩展SOAP的设计忽略了如下几方面的功能:(1)分布式垃圾回收(2)消息的批处理(3)对象引用(4)对象激活Web服务19/66高级软件工程SOAP的数据表示完全不同于以往互操作协议的表示方法以往的互操作协议都将调用语句编排为二进制的字节流的形式SOAP采用XML作为自己的数据表示方法XML是与HTML类似的基于文本的标记语言SOAP将调用语句编排为文本式的字符流的形式2、数据表示Web服务20/66高级软件工程SOAP消息是一个XML文档包括:一个必需的SOAP封装一个可选的SOAP头一个必需的SOAP体3、消息格式Web服务21/66高级软件工程SOAP封装定义了描述信息和如何处理信息的框架用于指定用XMLSchema来描述XML数据的编码规则封装可以包含名域声明和附加属性如果包含附加属性,这些属性必须限定名字域类似的,“Envelope”可以包含附加子元素这些也必须限定名字域且跟在SOAP体元素之后(1)SOAP封装Web服务22/66高级软件工程SOAP消息头是SOAP消息的可选部分用来扩展其它诸如安全、事务等服务的重要机制如果出现的话,必须是SOAP封装元素的第一个直接子元素SOAP头可以包含多个SOAP块每个都是SOAP头元素的直接子元素所有SOAP头的直接子元素都必须限定名字域(2)SOAP消息头Web服务23/66高级软件工程SOAP体在SOAP消息中必须出现且必须是SOAP封装元素的直接子元素SOAP体可以包括多个条目每个条目必须是SOAP体元素的直接子元素SOAP体元素的直接子元素可以限定名字域(3)SOAP体Web服务24/66高级软件工程SOAP自然地遵循HTTP的请求/应答消息模型使得SOAP的请求和应答参数可以包含在HTTP请求和应答中SOAPHTTP遵循HTTP中表示通信状态信息的HTTP状态码的语义例如,2xx状态码表示这个包含了SOAP组件的客户请求已经被成功的收到、理解和接受下页的代码是一个使用POST的SOAPHTTP例子该消息通过HTTP发出一条请求“获取股票代码为ABC的最新交易价格”Web服务25/66高级软件工程POST/StockQuoteHTTP/1.1Host:=utf-8Content-Length:nnnnSOAPAction:Some-URISOAP-ENV:Envelopexmlns:SOAP-ENV=:encodingStyle=:Headert:Transactionxmlns:t=some-URISOAP-ENV:mustUnderstand=15/t:Transaction/SOAP-ENV:HeaderSOAP-ENV:Bodym:GetLastTradePricexmlns:m=Some-URIsymbolABC/symbol/m:GetLastTradePrice/SOAP-ENV:Body/SOAP-ENV:EnvelopeWeb服务26/66高级软件工程1、互操作开销不同IIOP、JRMP使用二进制的字节流形式编排消息(CDR、XDR)SOAP采用字符型的XML编排消息SOAP消息要比IIOP、JRMP消息长得多SOAP的编排开销大、占用内存空间大2、表达能力不同SOAP易于学习、易于开发、易于调试SOAP不支持消息的批处理、对象引用、对象激活等特性降低了SOAP的表达能力并使得基于SOAP的交互受到限制而IIOP、JRMP等则不存在这种限制与其它协议的比较Web服务27/66高级软件工程3、适应能力不同IIOP、JRMP严重制约于防火墙防火墙一般由两个路由器与一个应用程序网关构成路由器负责IP层的分组信息列出可接受、禁止的源端和目标端等信息应用程序网关在应用程序级进行控制根据头信息字段、消息长度、消息内容等决定传送还是丢弃消息这是IIOP、JRMP的应用受到限制的核心因素之一SOAP则基本不受其限制4、适用环境不同JRMP适用于使用JAVA的应用系统IIOP、SOAP支持各种语言,因此适用面更广IIOP适合于同一个防火墙内部之间的交互而SOAP则适合于跨越防火墙的交互Web服务28/66高级软件工程三、WSDL1、概述2、文档结构3、例子4、向SOAP的映射Web服务29/66高级软件工程1、概述WSDL(WebServicesDescriptionLanguage)是一个建议性标准在Microsoft的SDL(ServiceDescriptionLanguage和SCL(SOAPContractLanguage)和IBM的NASSL(NetworkAccessibleServiceSpecificationLanguage)这两项技术的结合,形成了WSDL的基础2000年9月25日IBM、Microsoft和Ariba提出WSDL1.02001年3月15日,他们提交的WSDL1.1成为W3C的Note2002年7月9日提出WSDL1.22003年11月10日提出WSDL2.0Web服务30/66高级软件工程类型消息端口类型绑定服务操作操作端口抽象定义具体说明WSDL文档代表依赖关系代表包含关系2、文档结构Web服务31/66高级软件工程类型:独立于计算机和语言的类型定义使用某一类型系统(例如XSD)进行数据类型定义的容器用于描述被交换的消息消息:对通信数据的一个抽象、类型化定义一个消息包含多个逻辑部分每一个都与某一个类型系统中的定义相关联包含函数参数(输入与输出分开)或文档说明端口类型:由一个或多个端点支持操作的抽象集合每个操作对应于一个输入消息与一个输出消息它引用消息节中的消息定义来说明函数基调操作名称、输入参数和输出参数等(1)抽象定义Web服务32/66高级软件工程绑定:为一个由特定端口类型定义的操作与消息指定具体的协议及数据格式规范服务:指定每个绑定的端口地址(2)具体说明Web服务33/66高级软件工程?xmlversion=1.0encoding=UTF-8?definitionsname=FooSampletypesschematargetNamespace==:SOAP-ENC=:wsdl==qualified/schema/typesmessagename=Si

1 / 66
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功