《高级软件工程.ppt》由会员分享,可在线阅读,更多相关《高级软件工程.ppt(65页珍藏版)》请在优知文库上搜索。
1、2023-3-10高级软件工程高级软件工程高级软件工程高级软件工程内内 容容 一、一、Web 服务简介服务简介二、二、SOAP三、三、WSDL四、支持四、支持Web 服务的服务的J2EE应用应用高级软件工程2000年年 Microsoft 等提出等提出“Web Services”Web服务(服务(Web Services) 是基于是基于 XML 和和 HTTP 的一种服务的一种服务服务访问协议:服务访问协议: SOAP服务的描述:服务的描述: WSDL服务查找与发现:服务查找与发现: UDDI高级软件工程lSOAP (Simple Object Access Protocol)XML-base
2、d (text) 协议支持远程通信平台中立lWSDL (Web Services Definition Language)接口描述lUDDI (Universal Description, Discovery, and Integration)用于Web Services注册用于发现Web Services高级软件工程客户客户/ /服务请求者服务请求者服务提供者服务提供者 注册请求/应答查找基本结构:基本结构:服务信息注册库服务信息注册库高级软件工程l 提供了软件模块之间一种松耦合的交互方式提供了软件模块之间一种松耦合的交互方式l根据需求通过网络对松散耦合的粗粒度应用组件根据需求通过网络对松散
3、耦合的粗粒度应用组件进行分布式部署、组合和使用进行分布式部署、组合和使用l服务层是服务层是SOA的基础,可以直接被应用调用,从的基础,可以直接被应用调用,从而而 有效控制系统中与软件代理的人为依赖性有效控制系统中与软件代理的人为依赖性lSOA的几个关键特性:一种粗粒度、松耦合服务的几个关键特性:一种粗粒度、松耦合服务架构,服务之间通过简单、精确定义适配器进行架构,服务之间通过简单、精确定义适配器进行通讯,不涉及通讯,不涉及 底层编程适配器和通讯模型底层编程适配器和通讯模型 高级软件工程lRPC耦合密切些耦合密切些l相对脆弱相对脆弱仅仅是调用仅仅是调用lDocument耦合松散些耦合松散些l对应
4、用修改适应性好对应用修改适应性好l没有序列化没有序列化/反序列化问题反序列化问题需要额外的设计工作需要额外的设计工作l需要解释客户消息内容,然后进行相应操作需要解释客户消息内容,然后进行相应操作高级软件工程l业务上需要与外部客户通信l技术上应用需要与 其它语言编写的 客户程序通信客户在防火墙之外l管理上管理托管 web service 应用高级软件工程l客户程序与应用使用相同语言编写客户程序与应用使用相同语言编写l通信开销大通信开销大序列化或者远程访问开销大序列化或者远程访问开销大Web Services/XML 处理开销大处理开销大“Dont Use XML to Communicate U
5、nless You Really, Really Have To” Floyd Marinescu, The Middleware Company l永远记住:永远记住:Web Services/XML 是用于集成的是用于集成的高级软件工程lApache Axis (Apache eXtensible Interaction System) 是Apache WebService项目中的子项目 最初起源于IBM的SOAP4J“ 最早的一批用于构造基于SOAP应用的FrameworklJBoss, WAS等重要的应用服务器都集成它典型的典型的 Web 服务支持平台服务支持平台高级软件工程服务器端A
6、XIS 句柄链处理架构用户配置一系列的用户配置一系列的 handler,构成,构成 handler chainAXIS 依次调用依次调用 handler 处理消息(含处理消息(含 context)类似于类似于 interceptor(截取器)(截取器)高级软件工程高级软件工程高级软件工程二、二、SOAP1、SOAP概述概述2、数据表示数据表示 3、消息格式消息格式 4、协议映射协议映射 高级软件工程1、SOAP概述概述许多程序通过使用远程过程调用(许多程序通过使用远程过程调用(RPC) 在诸如在诸如 DCOM 与与 CORBA 等对象之间进行通信等对象之间进行通信但但RPC 会产生兼容性以及安
7、全问题;会产生兼容性以及安全问题;防火墙和代理服务器通常会阻止此类流量防火墙和代理服务器通常会阻止此类流量通过通过 HTTP 在应用程序间通信是更好的方法在应用程序间通信是更好的方法因为因为 HTTP 得到了所有的因特网浏览器及服务器的支得到了所有的因特网浏览器及服务器的支持持SOAP 就是被创造出来完成这个任务的就是被创造出来完成这个任务的高级软件工程l2000年年5月,月,UserLand、Ariba、Commerce One、Compaq、Developmentor、HP、IBM、IONA、Lotus、Microsoft 以及以及 SAP 向向 W3C 提交了提交了 SOAP 因特网协议
8、因特网协议l期望此协议能够通过使用因特网标准(期望此协议能够通过使用因特网标准(HTTP 以及以及 XML)把图形用户界面桌面应用程序连接到因特网)把图形用户界面桌面应用程序连接到因特网服务器服务器l首个关于首个关于 SOAP 的公共工作草案由的公共工作草案由 W3C 在在 2001 年年 12 月发布月发布lSOAP 1.2 于于 2003 年年 6 月月 被发布为被发布为 W3C 推荐标准推荐标准高级软件工程简单对象访问协议(简单对象访问协议(SOAP)是网络环境中交换信息的简单协议是网络环境中交换信息的简单协议为网络环境下软件之间结构化、类型化信息的交换为网络环境下软件之间结构化、类型化
9、信息的交换提供了一种基于提供了一种基于XML的机制的机制它可以广泛地用于基于消息的系统和基于它可以广泛地用于基于消息的系统和基于RPC的系统的系统SOAP被设计为可以与各种其它协议结合使用被设计为可以与各种其它协议结合使用但目前但目前SOAP主要和主要和HTTP及及HTTP扩展框架相结合扩展框架相结合高级软件工程简单地讲,简单地讲,SOAP= HTTP+RPC+ XML即即: SOAP 以以HTTP作为底层通讯协议作为底层通讯协议以以RPC作为一致性的调用途径作为一致性的调用途径以以XML作为数据传送的格式作为数据传送的格式SOAP的设计原则是的设计原则是: 简单、易于扩展简单、易于扩展SOA
10、P的设计忽略了如下几方面的功能:的设计忽略了如下几方面的功能:(1)分布式垃圾回收)分布式垃圾回收(2)消息的批处理)消息的批处理(3)对象引用)对象引用(4)对象激活)对象激活高级软件工程SOAP的数据表示完全不同于以往互操作协议的表示方法的数据表示完全不同于以往互操作协议的表示方法以往的互操作协议都将调用语句编排为以往的互操作协议都将调用语句编排为二进制的字节流的形式二进制的字节流的形式SOAP采用采用XML作为自己的数据表示方法作为自己的数据表示方法XML是与是与HTML类似的基于文本的标记语言类似的基于文本的标记语言SOAP将调用语句编排为文本式的字符流的形式将调用语句编排为文本式的字
11、符流的形式 2、数据表示数据表示高级软件工程SOAP消息是一个消息是一个XML文档文档包括:包括:一个必需的一个必需的SOAP封装封装一个可选的一个可选的SOAP头头一个必需的一个必需的SOAP体体3 3、消息格式、消息格式高级软件工程SOAP封装定义了描述信息和如何处理信息的框架封装定义了描述信息和如何处理信息的框架用于指定用用于指定用XMLSchema来描述来描述XML数据的编码规则数据的编码规则封装可以包含名域声明和附加属性封装可以包含名域声明和附加属性如果包含附加属性,这些属性必须限定名字域如果包含附加属性,这些属性必须限定名字域类似的,类似的,“Envelope”可以包含附加子元素可
12、以包含附加子元素这些也必须限定名字域且跟在这些也必须限定名字域且跟在SOAP体元素之后体元素之后(1)SOAP封装封装高级软件工程SOAP消息头是消息头是SOAP消息的可选部分消息的可选部分用来扩展其它诸如安全、事务等服务的重要机制用来扩展其它诸如安全、事务等服务的重要机制如果出现的话,必须是如果出现的话,必须是SOAP 封装元素的第一个直接子元素封装元素的第一个直接子元素SOAP头可以包含多个头可以包含多个SOAP块块每个都是每个都是SOAP头元素的直接子元素头元素的直接子元素所有所有SOAP头的直接子元素都必须限定名字域头的直接子元素都必须限定名字域(2)SOAP消息头消息头高级软件工程S
13、OAP体在体在SOAP消息中必须出现消息中必须出现且必须是且必须是SOAP封装元素的直接子元素封装元素的直接子元素SOAP体可以包括多个条目体可以包括多个条目每个条目必须是每个条目必须是SOAP体元素的直接子元素体元素的直接子元素SOAP体元素的直接子元素可以限定名字域体元素的直接子元素可以限定名字域(3)SOAP体体高级软件工程SOAP自然地遵循自然地遵循HTTP的请求的请求/应答消息模型应答消息模型使得使得SOAP的请求和应答参数可以包含在的请求和应答参数可以包含在HTTP请求和应答中请求和应答中 SOAP HTTP遵循遵循HTTP 中中表示通信状态信息的表示通信状态信息的HTTP状态码的
14、语义状态码的语义例如,例如,2xx状态码表示状态码表示这个包含了这个包含了SOAP组件的客户请求组件的客户请求已经被成功的收到、理解和接受已经被成功的收到、理解和接受下页的代码是一个使用下页的代码是一个使用POST的的SOAP HTTP例子例子该消息通过该消息通过HTTP发出一条请求发出一条请求“获取股票代码为获取股票代码为ABC的最新交易价格的最新交易价格” 高级软件工程POST /StockQuote HTTP/1.1POST /StockQuote HTTP/1.1Host: Host: Content-Type: text/xml; charset=utf-8Content-Type:
15、 text/xml; charset=utf-8Content-Length: nnnnContent-Length: nnnnSOAPAction: Some-URISOAPAction: Some-URISOAP-ENV:Envelope SOAP-ENV:encodingStyle=http:/schemas.xmlsoap.org/soap/encoding/ 5 5 ABC ABC 高级软件工程1、互操作开销不同、互操作开销不同IIOP、JRMP使用二进制的字节流形式编排消息使用二进制的字节流形式编排消息 (CDR、XDR)SOAP采用字符型的采用字符型的XML编排消息编排消息 SO
16、AP消息要比消息要比IIOP、JRMP消息长得多消息长得多SOAP的编排开销大、占用内存空间大的编排开销大、占用内存空间大2、表达能力不同、表达能力不同SOAP易于学习、易于开发、易于调试易于学习、易于开发、易于调试SOAP不支持消息的批处理、对象引用、对象激活等特性不支持消息的批处理、对象引用、对象激活等特性降低了降低了SOAP的表达能力的表达能力并使得基于并使得基于SOAP的交互受到限制的交互受到限制而而IIOP、JRMP等则不存在这种限制等则不存在这种限制与其它协议的比较与其它协议的比较高级软件工程3、适应能力不同、适应能力不同IIOP、JRMP严重制约于防火墙严重制约于防火墙防火墙一般由两个路由器与一个应用程序网关构成防火墙一般由两个路由器与一个应用程序网关构成 路由器负责路由器负责IP层的分组信息层的分组信息列出可接受、禁止的源端和目标端等信息列出可接受、禁止的源端和目标端等信息 应用程序网关在应用程序级进行控制应用程序网关在应用程序级进行控制 根据头信息字段、消息长度、消息内容等根据头信息字段、消息长度、消息内容等 决定传送还是丢弃消息决定传送还是丢弃消息这是这是IIOP、