新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     >>计算机科学论坛<<     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> Web服务(Web Services,WS), 语义Web服务(Semantic Web Services, SWS)讨论区: WSDL, SOAP, UDDI, DAML-S, OWL-S, SWSF, SWSL, WSMO, WSML,BPEL, BPEL4WS, WSFL, WS-*,REST, PSL, Pi-calculus(Pi演算), Petri-net,WSRF,
    [返回] 计算机科学论坛W3CHINA.ORG讨论区 - Web新技术讨论『 Web Services & Semantic Web Services 』 → Web 服务响应模板模式:规范 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 3494 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: Web 服务响应模板模式:规范 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     flyfoxs 帅哥哟,离线,有人找我吗?
      
      
      威望:5
      等级:研一(Artificial Intelligence期期不放过)
      文章:550
      积分:3935
      门派:XML.ORG.CN
      注册:2005/1/8

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给flyfoxs发送一个短消息 把flyfoxs加入好友 查看flyfoxs的个人资料 搜索flyfoxs在『 Web Services & Semantic Web Services 』的所有贴子 引用回复这个贴子 回复这个贴子 查看flyfoxs的博客楼主
    发贴心情 Web 服务响应模板模式:规范

    Web 服务响应模板模式:规范  
    http://www-128.ibm.com/developerworks/cn/webservices/ws-restemp/index.html
      

    [URL=http://www-128.ibm.com/developerworks/cn/webservices/ws-restemp/index.html#author]Eoin Lane[/URL] ([URL=mailto:eoinlane@us.ibm.com?subject=Web 服务响应模板模式:规范]eoinlane@us.ibm.com[/URL]), 高级解决方案工程师, IBM


    2006 年 10 月 19 日

    Web 服务响应模板模式为异类环境中的服务提供者和客户端提供了对请求响应调用的更多控制和灵活性。WSRT 允许客户端控制服务结果,并根据规范优化数据流。同时,它还允许服务提供者开发自己提供的接口,而不会中断现有客户端的使用。我们将讨论 WSRT 模式规范以及用来改进服务接口的解决方案。
    环境

    Web 服务已迅速成为异构环境中最常用的请求响应调用方式。不过,这些调用的冗长的 ASCII 特性将影响性能,从而使架构师转而考虑别的备选解决方案。

    我们将深入了解在处理多个客户端时 Web 服务提供者可能面对的问题,以及如何使用 WS 响应模板模式解决这些问题。


    [URL=http://www-128.ibm.com/developerworks/cn/webservices/ws-restemp/index.html#main]回页首[/URL]

    问题

    服务接口通常会带来以下问题:

    服务接口通常是粗粒度的,但客户端通常希望对其访问的粒度进行更多的控制。
    服务提供者需要在不影响现有客户端的情况下对其提供的接口进行改进。
    Web 服务提供者在处理多个客户端时有一个常见的问题:WSDL 非常精确地对数据类型、消息和操作的接口进行了规定,从而隐式地限制客户端使用并不一定恰当的模式。服务提供者必须选择其公开的 WSDL,即使客户端知道其使用模式对应的最有效的接口也如此。

    服务提供者必须选择是否为多个客户端提供多个接口——这非常难于实现和维护——还是提供单个“全能”折衷接口。

    以汽车公司中的车辆数据服务为例。这个车辆服务的创建、读取、更新和删除 (CRUD) 操作需要供多个应用程序访问,因为汽车公司中的大部分应用程序都将需要访问车辆信息。不过,每个应用程序都将对其所需的车辆数据子集具有不同的要求。保修应用程序将需要不同于客户服务应用程序的车辆信息子集。此数据服务的提供者现在就面临着一个进退两难的问题:是提供具有不同车辆数据粒度级的多个接口,还是提供一个并不专门满足某个特定需求的全能接口。

    客户端如何才能不再受到使用服务提供者指定的协定的限制?


    [URL=http://www-128.ibm.com/developerworks/cn/webservices/ws-restemp/index.html#main]回页首[/URL]

    决定因素

    构建 Web 服务时,有多个决定因素。架构师需要能:

    在现有 Web 服务标准上进行构建工作
    提高 Web 服务接口的灵活性、粒度和易维护性
    自定义服务结果并对客户端和服务器之间的数据流进行优化
    允许使用者和提供者以抽象的数据和服务模型(而不是预先确定的接口)为基础进行开发。



    [URL=http://www-128.ibm.com/developerworks/cn/webservices/ws-restemp/index.html#main]回页首[/URL]

    解决方案

    WS 响应模板模式(WS response template pattern,WSRT)允许客户端针对抽象数据和服务模型进行编程(而不直接针对 WSDL 指定的接口),然后指定将该模型中的信息子集作为服务调用结果返回。除了定义响应的结构外,客户端还可以提供其他搜索参数,以确定将要实际返回哪些对象。这样,客户端就能对服务结果进行更大的控制,以便根据自己的规范对数据流进行优化。此外,它还允许服务提供者在不会影响现有客户端的情况下开发其提供的接口。

    WS 响应模板模式使服务接口变得更为灵活了。操作签名更改为接收请求模板(和密钥),然后返回响应模板。请求模板是松散类型的图表,其中所有属性都是可选的;响应模板是强类型的图表,其所有属性也是可选的。

    例如,服务接口可以包含以下操作:


    getValueObject(key:Key):ValueObject


    应用模式后,操作签名将更改为下面的内容:

    getValueObject(key:Key,requestTemplate:RequestTemplate):ResponseTemplate

    RequestTemplate 和 ResponseTemplate 都基于原来的值对象,但进行了以下修改:

    RequestTemplate 是松散类型的,其所有属性都是可选的。RequestTemplate 包含对 ResponseTemplate 中应有内容的描述。
    ResponseTemplate 是强类型的,其所有属性都是可选的。ResponseTemplate 包含来自原始 ValueObject 的信息,但其格式是由 RequestTemplate 中给定的请求者指定的。

    SOA 服务概要
    UML 2.0 Profile for Software Services 提供了一种描述服务的公共语言(覆盖整个开发周期的语言之一),还可为不同的干系人提供不同的视图。
    UML Profile for Software Services 支持对服务、面向服务的体系结构 (SOA) 和面向服务的解决方案进行建模。该概要已在 IBM Rational&reg; Sofware Architect 中实现,并成功地用于对复杂客户场景进行建模,同时可以帮助人们了解开发面向服务的解决方案时的注意事项(请参阅[URL=http://www-128.ibm.com/developerworks/cn/webservices/ws-restemp/index.html#resources]参考资料[/URL])。  

    在此模式的模型驱动开发解决方案中,WS 响应模板模式采用了 UML 服务设计模型,如[URL=http://www-128.ibm.com/developerworks/cn/webservices/ws-restemp/index.html#fig1]图 1[/URL] 中所示。

    这是 UML 类关系图,其中的输入为接口和表示数据模型的类图表。此服务模型可以应用 UML 服务概要(请参见[URL=http://www-128.ibm.com/developerworks/cn/webservices/ws-restemp/index.html#sidebar]侧栏[/URL])。输出是一个可识别 WS 响应模板的服务模型。

    可以随后使用 UML-to-SDL 和 UML-to-XSD 转换来将此可识别 WS 响应模板的服务模型转换为 WSDL 和 XSD。

    最后,可以使用此灵活的 WSDL 来创建实现存根和框架代码(如使用 WSDL-to-Java 生成)。


    图 1. WS 响应模板解决方案概况
    按此在新窗口浏览图片


    [URL=http://www-128.ibm.com/developerworks/cn/webservices/ws-restemp/index.html#main]回页首[/URL]

    类关系图

    [URL=http://www-128.ibm.com/developerworks/cn/webservices/ws-restemp/index.html#fig2]图 2[/URL] 显示了 UML 服务模型,其中的服务接口包括许多 CRUD 之类的操作。这些 CRUD 操作中的数据对象是组合值对象数据对象,特别适合此模式。这意味着,数据值对象可以为叶数据值对象,也可以为包含其他值对象的聚合数据值对象。

    由于数据值对象可以包含其他数据值对象的聚合——如包含多个事务数据对象的银行帐户数据对象——WS 响应模板模式的实现应该支持基于某种筛选标准对子聚合数据值对象进行筛选。例如,如果我们只希望了解过去一周的银行帐户交易,则子聚合数据值对象应该使用日期筛选。

    图 2. WS 响应模板类关系图
    按此在新窗口浏览图片


    序列关系图

    [URL=http://www-128.ibm.com/developerworks/cn/webservices/ws-restemp/index.html#fig3]图 3[/URL] 显示了 WS 响应模板模式的序列关系图。

    图 3. WS 响应模板序列关系图
    按此在新窗口浏览图片


    对于此序列关系图:

    客户端将通过使用提供的可识别 WS 响应模板的 WSDL 来调用服务。然后,请求者将使用密钥和请求模板来调用 WS 响应模板实现。
    密钥唯一地标识所需的值对象。
    请求模板告知服务实现响应中需要哪个(已断开连接的)数据对象图子集。
    服务实现查询使用密钥查询提供者,并获得与该密钥关联的对应数据对象。
    现在将调用一个称为导航器 的运行时组件。导航器将获取作为输入的请求模板和值对象,并返回响应模板。
    响应模板中包含类型安全的值对象信息图子集,这些信息是用户在请求模板中请求的。响应模板返回给请求者。



    [URL=http://www-128.ibm.com/developerworks/cn/webservices/ws-restemp/index.html#main]回页首[/URL]

    参与方

    以下是相关的参与方及其关联的操作:

    信息模型/服务图:定义服务将提供何种信息(以及可以请求这些信息的 CRUD 类的操作)的数据对象模型和服务模型。
    请求模板 XSD:定义请求模板可能的格式。此请求模板定义信息模型的松散类型结构,其中所有的元素都是可选的,用于表示请求者可能向提供者发送的请求。
    请求模板 XML:在网上作为请求的一部分传递的请求 XSD 模板的实例
    响应模板 XSD:定义响应模板可能的格式。此响应模板通常为信息模型的强类型结构,其中所有的元素都是可选的,用于表示提供者可能向请求者发送的响应。
    响应模板 XLM:在网上作为响应一部分传递的响应 XSD 模板的实例
    导航器: WS 响应模板提供者端引擎,用于分析传入请求模板和据此创建响应模板,从 Web 服务结果对象图中提取信息。



    [URL=http://www-128.ibm.com/developerworks/cn/webservices/ws-restemp/index.html#main]回页首[/URL]

    结果

    在此过程中,必须注意可能的结果,如:

    自定义结果:WS 响应模板服务的客户端可以对从服务调用获得的结果进行调整:服务器将不发送不需要的数据,客户端也不应收到任何占位符数据(甚至 Nil 或空值也不行)。
    优化的数据流:服务调用包含两个部分(通常为两台计算机)间的数据交换。Web 服务模板解决方案必须尽可能地减少这两个部分间的数据流。必须注意数据流的表达式,以尽可能缩小其规模。例如,当使用 XML 时,请留意数据流的名称空间声明、元素前缀、层次结构等。
    服务实现的优化:WS 响应模板解决方案将允许服务提供者开发人员采用只调用构造客户端定义的结果所需的方法或仅检索相关的数据方式,从而对流程进行优化。
    基于标准:WS 响应模板的设计遵循各项 Web 服务标准:
    SOAP 通信协议:Web 服务模板必须使用 SOAP 实现。我们将使用符合 JAX-RPC 要求的引擎作为供选择的服务实现平台(服务器端)。虽然此类实现主要是为 HTTP 传输协议而存在,但这并不意味着 Web 服务模板必须只能绑定到特定的协议(可以与 JMS 等其他机制一起使用)。
    服务将使用 WSDL 定义,而 XML 模式则用于定义交换对象的格式。
    操作采用文档样式和文本用法 (Doc/literal) 以符合 WS-I 的要求。
    参数化导航路径:信息模型层次结构的导航路径可以定义其他的参数来筛选特定的关系。另外,此参数化的路径也可以在相同的服务调用中重复,以扩展服务的潜能(对于参数化更是如此)。
    注意:这并不意味着可以在同一个调用中多次调用 Web 服务操作。只能对返回的对象图进行比普通 Web 服务设计模式更大程度的控制。
    服务的粒度级别:WS 响应模板模式将降低 Web 服务的粒度级别。现在,服务提供者不会为不同的客户端用例定义不同的服务,而将定义更为抽象的单一服务,客户端可以根据各自的需要对其进行调整。
    UML 作为描述服务的一种可能方式:UML 概念(在本文档中使用)可以用于表示信息模型。尽管建模服务和数据对象时并不要求使用 UML(用户可以根据 WS 响应模板规范直接编码自己的 WSDL 和 XSD),但是有大量的工具可用于将 UML 转换为相应的 WSDL、XSD 和 WS 响应模板实现,以自动创建更为灵活的可识别 WS 响应模板的 WSDL。
    更易于维护,兼容性更好:服务提供者可以扩展其现有的 WS 响应模板服务,而不会对现有客户端造成影响。我们所说的扩展是指在数据结构中添加新属性:这样,现有客户端在请求中不会请求此属性,因此不会从新实现的响应中获得此属性;只有要求此新属性的客户端(特别是新客户端)才会在结果中获得此属性。
    额外系统开销:WS 响应模板解决方案不会带来额外的系统开销。请求可比普通 Web 服务解决方案传输更多的数据,因为响应中所需的每个项必须在请求中指定,故而其他信息需要对结果对象图进行裁剪和筛选。此外,将在服务器上执行额外的代码,以处理 WS 响应模板请求。此系统开销并不太大,但 WS 响应模板显然并不是在所有情况下都有效。



    [URL=http://www-128.ibm.com/developerworks/cn/webservices/ws-restemp/index.html#main]回页首[/URL]

    相关模式

    以下是与 WS 响应模板模式相关的模式。

    请求者端缓存模式(requester sde caching pattern,RSPC):对于在指定服务时不知道客户端数据要求的多个客户端,WS 响应模板是最理想的。存在类似使用场景,即在请求者进行了初始调用后,一再重复进行相同的请求。此 WS 响应模板模式并不支持这种情况,因为这将涉及到保持请求者和提供者间的状态,不过,可以将其与请求者端缓存模式(请参阅参考资料部分)结合使用,以满足服务约束的性能质量要求。



    [URL=http://www-128.ibm.com/developerworks/cn/webservices/ws-restemp/index.html#main]回页首[/URL]


    结束语

    我们在本文中对 WS 响应模板模式规范进行了详细的分析。此模式规范遵从了 Gamma 等人在其著作《设计模式》中指定的模式结构。在以后的文章中,我们将再次讨论此模式规范,并使用 IBM 旗舰型开发产品 Rational Software Architect 的模式驱动开发环境提供此模式规范的一个实现。

    参考资料

    学习

    您可以参阅本文在 developerWorks 全球站点上的 [URL=http://www.ibm.com/developerworks/webservices/library/ws-restemp/?S_TACT=105AGX52&S_CMP=cn-a-ws]英文原文[/URL] 。


    访问 IBM 的 [URL=http://www.ibm.com/developerworks/rational/products/patternsolutions/?S_TACT=105AGX52&S_CMP=cn-a-ws]Pattern solutions[/URL] 专区,了解 IBM 在模式和可重用资产方面正在进行的工作。


    从 alphaWorks 了解关于 [URL=http://www.alphaworks.ibm.com/tech/wsrt/]WS 响应模板模式实现[/URL]的更多信息。


    了解在 Rational Software Architect 中使用 [URL=http://www.ibm.com/developerworks/cn/rational/419_soa/]用于软件服务的 UML 2.0 Profile[/URL] 建模软件服务的详细信息。


    访问 [URL=http://www.ibm.com/developerworks/cn/webservices/]developerWorks SOA and Web services 专区[/URL],拓展您的技能。


    访问 [URL=http://www.ibm.com/software/solutions/webservices/eis/]Enterprise integration solutions (EIS) 网站[/URL],以了解关于 IBM 正在进行的 SOA 工作的详细信息。IBM Software Group 的 Enterprise Integration Solutions (EIS) 是 IBM 的企业 Software Strategy and Technology 组织的一部分。该团队控制和开发 IBM 所有的 SOA 相关软件产品。


    了解 [URL=http://www.ibm.com/developerworks/offers/techbriefings/?S_TACT=105AGX52&S_CMP=cn-a-ws]developerWorks 技术活动和网络广播[/URL]的最新消息。


    请访问 [URL=http://www.ibm.com/developerworks/cn/webservices]SOA and Web services[/URL] 专区,以获得数百篇关于如何开发 Web 服务应用程序的文章以及入门级、中级和高级教程,您将大开眼界。

    获得产品和技术

    下载 Rational RequisitePro [URL=http://www.ibm.com/developerworks/downloads/r/rrp?S_TACT=105AGX52&S_CMP=cn-a-ws]Rational RequisitePro V2003.06.15[/URL] 的免费试用版。


    下载 Rational Software Architect [URL=http://www.ibm.com/developerworks/downloads/r/rswa?S_TACT=105AGX52&S_CMP=cn-a-ws]Rational Software Architect V6.0[/URL] 的免费试用版。


    使用 [URL=http://www.ibm.com/developerworks/cn/downloads/]IBM 试用软件[/URL]开发您的下一个项目,可直接从 developerWorks 下载这些试用软件。


    IBM Alphawork 提供了 RAS 的参考实现,称为 [URL=http://www.alphaworks.ibm.com/tech/rasr4w]Reusable Asset Specification Repository for Workgroups[/URL],可直接从 alphaWorks 下载此参考实现。


    [URL=http://www.ibm.com/developerworks/offers/sek/?S_TACT=105AGX52&S_CMP=cn-a-ws]定购免费的 SEK for Linux[/URL],包括两张 DVD,提供了最新的 IBM 的 DB2&reg;、Lotus&reg;、Rational&reg;、Tivoli&reg; 和 WebSphere&reg; 的 Linux 试用软件。

    讨论

    [URL=http://www.ibm.com/developerworks/forums/dw_forum.jsp?S_TACT=105AGX52&cat=5&S_CMP=cn-a-ws&forum=375]参与论坛讨论[/URL]。


    参与 [URL=http://www.ibm.com/developerworks/blogs/?S_TACT=105AGX52&S_CMP=cn-a-ws]developerWorks 博客[/URL],从而参加到 developerWorks 社区中来。


    [URL=http://www.ibm.com/developerworks/blogs/?S_TACT=105AGX52&S_CMP=cn-a-ws]developerWorks 博客[/URL]——加入 developerWorks 社区。

    关于作者


    按此在新窗口浏览图片
      Eoin Lane 博士是一位高级解决方案工程师,负责对主要 IBM SOA 工作的应用程序开发模式进行收集和开发,并通过 IBM 模式控制流程对这些模式进行处理,以促进其推广应用。Eoin 也是用于帮助 SOA 开发的模型驱动的开发(Model Driven Development,MDD)、基于资产的开发和可重用资产规范(Reusable Asset Specification,RAS)方面的专家。


       收藏   分享  
    顶(0)
      




    ----------------------------------------------
    存在即是被搜索!

    BLOG =>  http://www.OpenJ.cn

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/11/20 17:17:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 Web Services & Semantic Web Services 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2025/6/21 15:04:55

    本主题贴数1,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    62.500ms