- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
SOA中的服务接口设计最佳实践
SOA 中的服务接口设计最佳实践,第 2 部分: 使用服务向服务使用者应用程序报告错误
/developerworks/cn/architecture/ar-servdsgn2/
级别: 中级
Mikhail Genkin (genkin@), 认证 IT 架构师, IBM
2007 年 12 月 20 日
在 本文中,我们将了解如何在 SOA 环境中使用服务接口来报告服务错误。面向服务的体系结构(Service-Oriented Architecture,SOA)强调企业内不同系统间的松散耦合。应用程序彼此间的通信只能通过设计良好的服务接口进行,并不会考虑彼此的实现。服务 接口结构在 SOA 中是最重要的。设计糟糕的服务接口可能会对需要使用其的所有应用程序造成负面影响。通过本文可了解设计良好的服务接口如何帮助加速项目计划的执行,从而提 高您的 SOA 解决方案对业务需求的响应能力。
引言
本系列的第 1 部分重点讨论了服务接口设计的最佳实践,包括设计与开发方法、服务粒度、同步设计与异步设计的比较以及操作签名。
在本文中,将重点介绍相关最佳实践,以说明服务应该如何向服务使用者应用程序报告错误。除了成功响应外,生产质量级的系统还必须能够处理各种错误情况。服务向服务使用者应用程序报告错误的方式会影响服务接口的结构,从而也会影响服务使用者应用程序的构造方式。
用于报告错误的 WSDL 构造
第 1 部分讨论了描述服务接口的最佳方式就是使用 Web 服务描述语言(Web Services Description Language,WSDL)。 WSDL 规范包括如下规定:
服务接口(端口类型)包含一系列操作。
每个操作可以为请求-响应型,也可以为单向操作。
每个请求-响应操作可以定义单个输入消息、单个响应消息和任意数量的错误消息。
单向操作不能定义响应消息或错误消息。
WSDL 规范还进一步定义消息可以包括一个或多个部分。每个部分的值可以为简单 XSD 类型,也可以为用户定义的复杂类型。请参见参考资料,其中提供了指向 WSDL 规范的链接。
错误类型
服务需要报告的错误实际上可归入两类:
系统级别
表示属于服务实现的一部分的运行时软件组件、硬件和网络通信协议的错误。这些错误代表不与所执行的业务逻辑或数据相关的错误。
例如,如果服务实现需要访问的 RDBMS 服务器崩溃,由于应用程序服务器无法找到该服务器的 Java? Database Connectivity (JDBC) 连接,因此您的服务器无法处理请求消息,则将出现典型的系统级错误。
业务级别
由于服务违反业务逻辑或数据相关规则而引发的错误。例如,如果请求消息表示请求预订旅程,而回程日期字段的日期早于出发日期,则服务实现将可能引发业务级别的错误。
最佳实践:对于具有请求-响应操作的同步体系结构,请在操作签名中定义系统和业务错误。应该使用不同的 XSD 类型描述系统错误和业务错误。 服务使用者应用程序通常需要以不同的方式响应系统级别和业务级别的错误。对于系统级别的错误,服务使用者应用程序可能希望等待并使用原始数据再次尝试请求。对于业务级别的错误,应用程序可能希望将消息发送回最终用户,要求对输入数据进行更正。
在请求-响应操作中使用 WSDL 错误
错误仅能与请求-响应操作一起使用。图 1 显示了可以如何设计 WSDL 端口类型的结构,以向客户机应用程序返回业务级别和系统级别的错误。此操作基于经常使用的 StockQuote 示例。StockQuote 服务包含单个 StockQuote 端口类型(接口)。此端口类型包含名为 getQuote() 的操作。此操作接收作为 getQuoteRequest 消息的一部分的输入消息。结果作为 getQuoteResponse 消息的一部分返回。
图 1. 示例端口类型
getQuote() 操作还定义了另外两个消息,用于向服务使用者应用程序返回错误。
getQuoteBusinessFault 返回与不正确使用服务相关的错误,如服务使用者应用程序提供了未知或空的股票代码。
getQuoteSystemFault 返回系统导致的错误,如数据连接问题等。
按照第 1 部分中所述的最佳实践,在独立的 XSD 文件中定义错误类型。此 XSD 包含复杂类型,用于表示 SystemError 和 BusinessError。
最佳实践:错误消息应该包含单个 WSDL 部分。此部分的值是复杂 XSD 类型,其中包含错误的完整描述。 上面 图 1 中的示例端口类型显示了使用错误返回错误的请求-响应操作。此操作的结构按照 IBM? WebSphere? Integration Developer 6.0 或 IBM Rational?
文档评论(0)