本系列文章探索可重用资产、菜谱和软件模式,并说明它们可以如何促进SOA解决方案的开发。本文是其中的第3部分,将对WS响应模板模式实现进行说明。可以将WS响应模板模式应用到服务的UML模型,以创建更为灵活的服务。我们将以SOA Implement and Optimize Services Recipe以及随附的参考示例(本系列前两篇文章对其进行了说明)为背景讨论此模式。以后的文章将说明如何将SOA模式应用于参考示例,以满足非功能需求。
引言
在本系列前面的文章中,我们介绍了SOA Implement and Optimize Services Recipe,并对参考示例进行了讨论,以说明可以如何应用此菜谱。该参考使用模型驱动的开发方法(Model-driven development,MDD),并利用IBM Rational Software Architect建模功能来开发用例模型、分析模型、设计模型和服务模型。本文说明如何修改现有服务;这是SOA Implement and Optimize Services Recipe中的一个重要步骤。
通常已经存在提供核心功能的遗留应用程序。要修改现有服务,必须将此应用程序作为服务提供,而且此服务必须遵循与原始应用程序需求不同的一系列非功能需求。
我们使用SOA Implement and Optimize Services Recipe和参考示例来说明软件模式能够如何满足这些新的非功能需求。通过使用软件模式来满足非功能需求,可帮助开发人员和架构师构建一个体系结构一致的服务,从而严格遵守软件开发最佳实践和原则。
修改现有服务
从我们在本系列第2部分所讨论的库存系统用例分析中了解到,一个现有的遗留Catalog应用程序提供用于访问Catalog信息的Java接口。现在我们必须将此遗留应用程序作为服务公开。在我们的菜谱中,这是一个过程示例,此过程包含重用现有服务或应用程序的四个步骤:
·检查服务模型
·检查服务的非功能需求
·检查遗留应用程序分析/设计模型
·基于非功能需求应用恰当的模式
SOA Implement and Optimize Services Recipe为其中的每个步骤均提供了参考示例。
·以Rational Software Architect资产的形式提供了Catalog服务及相关消息表示形式的服务模型,可导入到Rational Software Architect UML模型项目中。
·对于库存系统用例的非功能需求,Rational RequisitePro需求管理文件是以可重用资产规范(Reusable Asset Specification,RAS)资产的形式提供的。不过,此需求文件应该通过网络上的共享访问形式提供。图3显示了在打开参考示例的这个Rational RequisitePro需求管理文件后,Rational Software Architect内的Rational RequisitePro Requirement Explorer的情况。
·遗留Catalog的设计模型;此设计模型作为RAS资产提供,可导入到Rational Software Architect UML模型项目中。
检查服务模型
Catalog服务模型
图1显示了Catalog服务模型。该模型包含两个操作:
·getCatalog()操作接受一个主键作为参数,并返回Catalog
·getCatalogs()操作接受一个主键数组为参数,并返回Catalog数组
图1. Catalog服务UML模型
Catalog消息模型
图2显示了Catalog消息模型。对于此模型,以下内容非常清楚,无须赘述:
·每个Catalog消息包含多个CatalogItem消息
·每个CatalogItem消息包含多个FeatureValue消息
·每个FeatureValue消息包含一个Feature消息
图2. Catalog消息UML模型
图3. Rational Software Architect中的Rational RequisitePro Requirements Explorer
检查非功能需求
本系列的第2部分对Catalog服务模型文件进行了详细的讨论。
Rational RequisitePro为该Catalog模型跟踪非功能需求。Rational Software Architect提供了Rational RequisitePro Client,可显示用例与功能需求及非功能需求间的映射。以下是Catalog服务的非功能需求:
·互操作性:Catalog服务需要由多个客户机实现进行访问。
·可维护性:现有Catalog服务非常粗粒度,但客户机调用通常将仅需要所提供的信息的一个子集。
·性能:Catalog服务需要在一定时间限制内完成操作。
·可跟踪性:Catalog服务的所有调用都必须能够跟踪。
检查遗留Catalog设计模型
图4显示了遗留Catalog应用程序/服务的UML视图。此应用程序是一个Java组件,公开了一个Java接口。查看此接口时,将看到getCatalog()和getCatalogs()操作是非常粗粒度的操作,会分别返回整个Catalog和Catalog列表。也可以从SOA Implement and Optimize Services Recipe访问遗留Catalog设计模型,但在本文中并不需要它。
图4: 遗留Catalog应用程序设计模型
应用恰当的模式
通过使用分析和设计模型,架构师或开发人员将能够应用恰当的模式来满足相关的非功能需求。
将使用三个模式来构造Catalog服务:
·WS响应模板模式规范详细说明了上下文、问题和可重复的解决方案。它提供了服务接口灵活性和可维护性。有关WS响应模板模式规范的信息,请参见参考资料部分。
·请求端缓存模式(Requestor Side Caching Pattern)规范可改进服务性能。有关WS响应模板模式规范的信息,请参见参考资料部分。
·日志记录(Logging)模式提供了服务调用可跟踪性。
在详细讨论这些模式前,考虑以下所示的n层体系结构将有所帮助。简单的三层体系结构将包括表示层、业务层和持久层。在SOA环境中,我们可以将业务层进一步划分为服务层、控制器层和实体/对象管理层。此分层情况如图5中所示。会话Facade、消息Facade和业务委托等核心JavaBean模式属于控制器层。图5显示了这些模式在n层体系结构中的应用位置。
图5. 模式规范和结构
WS响应模板模式
对Catalog服务模型的分析表明Catalog服务接口将返回整个Catalog。虽然这可能会为有些客户机应用程序带来好处,但对我们的应用程序而言,此接口太粗粒度了。非功能需求之一是使得此Catalog服务正常运行,并能与其他服务和客户机进行互操作。
非功能需求
WS响应模板模式能满足以下非功能需求:
·服务必须能够与其他服务互操作。
·服务在大多数情况下提供对粗粒度接口的细粒度访问。
·接口应该在接口定义中提供一定的灵活性,同时考虑到值对象的改变。
为了满足这些非功能需求,我们将使用WS响应模板模式。有关WS响应模板模式规范的信息,请参见参考资料部分。作为补充,下面给出了类关系图和序列关系图。在模式规范的上下文中,这些关系图更有意义。请参见侧栏中有关模式规范和模式实现的讨论。WS响应模板模式规范详细说明了上下文、问题和模式提供的可重复解决方案。
类关系图
图6显示了WS响应模板模式的类关系图。
图6. WS响应模板类关系图
序列关系图
图7显示了WS响应模板模式的序列关系图。
·客户机将通过使用提供的可识别WS响应模板的WSDL调用服务。请求方将使用密钥和请求模板调用WS响应模板实现。
·密钥唯一地标识所需的值对象。
·请求模板告知服务实现响应中需要哪个已断开连接的信息子集。
·服务实现查询使用密钥查询提供程序,并获得与该密钥关联的对应值对象。
·现在将调用称为导航器的运行时组件——模式中提供了一个不受支持的实现。导航器将获取作为输入的请求模板和值对象,并返回响应模板。
·响应模板中包含值对象信息图的安全子集,这些信息图是用户在请求模板中请求的。响应模板返回给请求方。
图7. WS响应模板序列关系图
应用WS响应模板模式
Web服务响应模板模式实现可以通过使用菜谱导入到Rational Software Architect中。首先,导航到菜谱中的“Apply patterns to a service implementation”部分,展开并选择“Applying the WS response template pattern”部分。在此步骤下找到资产并选择导入。请参见图8。
通过观看下载部分提供的flash文件,可以了解如何应用和使用此模式。
图8. 导入WS响应模板模式实现
此操作会将WS响应模板模式实现安装到Rational Software Architect和UML软件服务配置文件。安装了模式后,会在Pattern Explorer中显示此模式,如图9中所示。
图9. 显示WS响应模板模式的Pattern Explorer
以下将介绍我们如何应用模式:Open up the SOA Inventory Service Model。可以从Rational Software Architect存储库获得此服务模型,且从SOA Implement and Optimize Services Recipe进行了引用。此模型包含Catalog服务和Inventory服务的UML服务模型。请确保已安装了UML Profile for Software Services、Rational Software Architect插件。请参见参考资料部分。如果安装WS响应模板模式,会自动安装UML Profile for Software Services。
图10. 导入SOA Catalog Service_Design Model
图11 和图12显示了我们所感兴趣的透视图:服务视图和消息视图。
图11. SOA Catalog服务设计模型视图
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
相关推荐
-
联合创新,携手共赢 华为与Commvault签署全球合作联盟协议
【中国,上海,2015年9月19日】在2015年华为云计算大会上,全球领先的信息与通信解决方案供应商华为与美国知名的数据管理软件及相关服务主要供应商Commvault签署全球合作联盟协议。基于合作协议,双方将会加大投入数据中心备份解决方案在云化环境下的“可服务化”技术研究 。Commvault公司全球业务发展副总裁Andreas May、华为IT数据中心解决方案总裁马力出席签约仪式。
-
松散耦合的七个级别
在软件领域,“耦合”一般指软件组件之间的依赖程度。那么,什么是依赖?各种依赖对耦合度和松散度有多大影响?软件耦合可以发生在许多级别。必须区分生成时(编译时)依赖和运行时依赖。在分布环境中,为了确定系统的耦合程度,必须分析各个级别。下面我们就来具体看一下。
-
数据虚拟化:数据整合问题的解决方案?
数据整合是一个非常困难的问题,但是据专家称,一种相对新颖的信息管理方法可以帮助人们解决这个问题,即数据虚拟化。让我们来看看具体是如何解决的?
-
四月最受欢迎文章TOP 5
四月份SOA网站最受欢迎的文章有哪些?你了解服务和耦合的真正意义吗?“云”是否将标志着JVM的崛起?CIO选择开源SOA中间件行之有效吗?下面我们为您解密。