Tuscany和SCA中的策略(上)

日期: 2010-03-29 翻译:杨晓明 来源:TechTarget中国 英文

这篇文章选自《Tuscany in Action》这本书。在SCA域内概念内提供了一个策略综合概述,并着眼于Tuscany是如何让策略代码以策略拦截器的形式加入到运行时中的。   在Tuscany和SCA中,策略是用来控制你的应用与你的组件实现正交的那些方面,举个例子,就是像日志和监控或像身份验证、完整性和机密性这样的安全考虑。如果你试图在业务逻辑内部实现,那么这些功能的类型通常被认为是服务质量,并能使应用明显地变得复杂起来。

  在企业中最好一次性定义策略,然后在所有需要它们的组件上始终保持一致性。这就是为什么SCA描述的策略框架允许意图和策略集被定义并和组件实现及连接它们的绑定关联起来。使……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

这篇文章选自《Tuscany in Action》这本书。在SCA域内概念内提供了一个策略综合概述,并着眼于Tuscany是如何让策略代码以策略拦截器的形式加入到运行时中的。

  在Tuscany和SCA中,策略是用来控制你的应用与你的组件实现正交的那些方面,举个例子,就是像日志和监控或像身份验证、完整性和机密性这样的安全考虑。如果你试图在业务逻辑内部实现,那么这些功能的类型通常被认为是服务质量,并能使应用明显地变得复杂起来。

  在企业中最好一次性定义策略,然后在所有需要它们的组件上始终保持一致性。这就是为什么SCA描述的策略框架允许意图和策略集被定义并和组件实现及连接它们的绑定关联起来。使用这些策略集和意图你不必非要使用API来实现服务行为的质量,你只需对这些复合应用加以标识。

  Tuscany和SCA允许你定义和配置策略,这些策略独立于它们所依附的实现和绑定。

  那么我们就从策略如何适应SCA域的概念入手,然后看一下Tuscany运行时是如何将策略配置应用到运行的应用中的,这可以说是用的恰到好处。

  1 SCA域内的策略概览

  SCA策略框架在SCA策略框架规范中定义(http://www.osoa.org/download/attachments/35/SCA_Policy_Framework_V100.pdf)。
策略框架的基础是它所定义的策略意图和策略集。

  通过名字你也可能猜到,策略意图,是一个意图的声明。举个例子,如果为了达到调试目的,你想让到达一个组件的所有消息记录日志。你可以将这“日志”和你的组件实现联系起来。这并不是说日志想如何执行。它只说你希望日志执行。

  为了实现日志特性,你不得不定义一个满足记录目标的策略集。 一个记录集描述了日志消息的技术性细节,比如说,记录哪些细节,日志消息应该被写到哪里。

  当构造和部署SCA应用时,让策略意图和策略集分开的方式大大地提高了灵活性。在不考虑服务特性质量的情况下,组件的开发人员能够构建组件的实现。在不需要理解所提供服务特性的质量机制的情况下,组件装配器能够使用这些意图来抽象地描述服务需求质量。最终,在部署的阶段,企业策略集保证在SCA应用中指定的这些意图满足和本地策略一致,举个例子,不管使用什么技术的基础设施在本地企业环境中都是最合适的。

  在一个SCA应用中,所有意图和策略集都由一个名叫defintions.xml的配置文件来提供。

图1. 一个附带意图和/或策略集的SCA组件用来加强服务质量

图1. 一个附带意图和/或策略集的SCA组件用来加强服务质量

  如图1所示,SCA为SCA域提供了描述意图和策略集的能力。它展示了意图和策略集能和实现联系起来,SCA不出意外地调用实现策略。在整个实现的层面上或者在单独操作的层面上,允许你控制靠组件实现提供的服务质量。在我们的记录例子中,每个消息进入或离开实现或操作,都能被一直按照所记录的关于消息的信息来对待。

  图1 也展示了能和组件引用和服务联系起来的意图和策略集,也就是SCA所说的交互策略。这允许你更精确地把策略和独立的、为组件服务和引用配置的绑定联系起来。你能够配置一个绑定类型的协议栈,来确保实现服务行为合适的质量。

  正如你从图1中所看到的,策略意图和策略集是在一个名叫definitions.xml的XML文件中描述的。definitions.xml文件既可以出现在一个分配中,也可以用像实现或绑定类型的Tuscany扩展来打包。后面的方法在意图或策略集作为考虑中的扩展特性提供的地方时使用。举个例子,Tuscany的 bingding.ws 扩展和definitions.xml文件一起提供,这个文件为选择名叫SOAP.1_1和SOAP.1_1的SOAP版本定义了意图。

  所有definitions.xml文件的内容在域中出现,不管它们是从扩展中来还是从contribution中来,都被跨域地聚合和使用。那么当配置你的应用时,不需要担心definitions.xml文件的精确位置,只是在域中能用。

  通过简短的概览,我们能看出如何使用意图和策略集来使服务特性的质量能够被使用。在看如何使用意图和策略本身之前,我们马上从本节末尾开始,通过描述策略在Tuscany运行时有哪些影响。

相关推荐