本周SOA模式:策略集中化

日期: 2009-07-05 作者:Thomas Erl翻译:李忠利 来源:TechTarget中国 英文

所谓策略就是服务客户通常必须要遵守的一套要求或规则,目的是请求服务并与服务互动。我们这里用“通常”这个词是因为可以有可选择策略、可忽略策略、甚至策略替代,这样作为一个策略者,在策略如何能够扩展发布服务合同方面,就被赋予了很大的灵活性。   策略能应用于不止一个服务,这是一个普遍现象。在这种情况下,通常不愿意额外的将这些策略与多重服务合同相应用,这是因为如果IT企业有任何形式的冗余(数据、逻辑等等),为了将这些策略的内容在以后的时间内保持同步,会给我们带来治理负担。

例如,当策略变化时,我们需要升级所有包含策略的服务合同,以便能确保此变化能完全被应用。即使这样,拥有冗余策略还会有风险,因为你可能有……

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

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

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

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

所谓策略就是服务客户通常必须要遵守的一套要求或规则,目的是请求服务并与服务互动。我们这里用“通常”这个词是因为可以有可选择策略、可忽略策略、甚至策略替代,这样作为一个策略者,在策略如何能够扩展发布服务合同方面,就被赋予了很大的灵活性。

  策略能应用于不止一个服务,这是一个普遍现象。在这种情况下,通常不愿意额外的将这些策略与多重服务合同相应用,这是因为如果IT企业有任何形式的冗余(数据、逻辑等等),为了将这些策略的内容在以后的时间内保持同步,会给我们带来治理负担。例如,当策略变化时,我们需要升级所有包含策略的服务合同,以便能确保此变化能完全被应用。即使这样,拥有冗余策略还会有风险,因为你可能有不同的人来完成升级,而这就造成了不同的结果。

  因此,基于相同的推理,都遵循Schema Centralization模式(我们被鼓励共享模式,描述共同的数据模型跨接多重合同),Policy Centralization(策略集中模式)提倡我们以单一定义形式保留可再利用的策略,并将策略应用的服务合同与此定义相连并共享。

  结果,我们可以建立应用成套服务的域策略,甚至是应用所有服务的共用策略。因为一个模式主要的与服务清单架构联系,有一点需要指出,当我们应用此模式的时候,我们要在一个已知的服务清单边界范围内这样做。因此,共用策略只有与它适应的服务清单的范围相联系的时候,才能称之为共用的(特别是当适应Domain Inventory pattern(域清单模式)时候)。

  虽然策略集中和模式集中之间有架构方面的类似性,但是也有一些显著的区别,首先就是关于策略在内容和功能方面如何能够区别于模式。例如,一个集中的模式经常提供一个标准的数据模型(根据Canonical Schema),当分享普通业务文件时,通过允许服务,避免使用转换技术,帮助确保基线兼容性。另一方面,我们倾向于更少的集中策略以便能避免在他们之间转换,但要更多的支持集中监管模型,使我们能够从一个位置做大规模的改变。

  因为业务文档的数据模型,比如发票,在某一时刻,很有可能需要及时的改变,我们通常期望(或者希望)这种类型的改变不是经常性的,因为大多数业务文档在结构上是相对稳定的。但是策略经常关系到一个组织怎样选择或被授权执行此业务。通常策略是外部定义的,比如当一个策略关系到客户的政府法规或者法律条款。任何这些资源都可能在没有被关注的情况下造成改变,这就要求我们的服务能够为组织对这种早晚都会出现的变化做出反应,整体上保持策略的一致性。使用更多的易失策略,将策略定义集中可以非常有效的减少监管力度,但仍能维持一个全面敏捷的IT企业。

  与模式集中有些类似,集中的策略也是集中验证。例如,一个共享的XMLSchema,使用运行时分析程序,就可以被验证,分析程序也只需遵循XML模式定义规范法则,以确保已知的XML文件与数据模型相符(由Schema来定义)。策略依赖于由中间件提供的策略执行点,根本上,在符合策略定义的基础上,也采用验证程序用以接受或拒绝一个已知的信息。对于WS-Policy的定义,这种验证通常通过一个分析程序来运行,这个分析程序执行WS-Policy和WS-Policy的附件规范规定的法则。

  但是,当你拥有多层域和共用策略时,要比你用多重集中的模式验证数据时,这类验证和执行变的更复杂。WS-Policy 规范没有表达的一方面是策略冲突解析。这意味着如果你的域策略与共用策略有冲突,你要负责建立所需要的逻辑,用来解析这些差异,以避免所有这些运行时异常状况。

  在一个多层策略层环境里面,要建立并保持集中的策略会带来各种监管问题。当我们要改变现有的有效策略或者引入新方案时,我们需要确保这些对现存策略架构的改变不会带来负面或不可遇见的影响,最坏的结果可能是连带效应,导致多层策略(与多重服务)每个层面都会出现异常。

  另一个值得注意的是,虽然XML模式验证只是与工业标准的XML模式分析程序一起被执行,WS-Policy支持仍然非常不普及。一些ESB产品和消息传递中间件仍然建立在自定义策略概念和强制逻辑的基础上,提供专有的策略架构。虽然策略集中模式仍能在这些环境中应用,但它还是能够在未来的某个时刻导致传统开发商锁定方案。

  最后,有一方面在这篇短文里面没有讨论,但又确实值得注意,那就是这种模式对于可再利用的安全策略的定义和部署很重要。当建立现代服务安全架构时,通过这些策略,能够分享、集中地监管和执行安全控制已经成为一种流行的做法。

相关推荐

  • SAP收购CallidusCloud 与Salesforce竞争

    一直被称为后台办公巨头的SAP现在似乎也想在前台办公大展拳脚。 最新的迹象是SAP收购CallidusClou […]

  • 事件驱动框架和SOA在空军的应用

    空军正在利用SOA来改善数据共享,并实时跟踪战机,美国空军机动司令部的Michael Marek解释了企业可从中学习的经验。

  • 揭秘New Relic APM技术细节

    New Relic应性能管理(APM)套件主要用于Web软件开发。它允许用户在面向服务的架构(SOA)上跟踪关键事务性能,并且支持代码级别的可见性来评估特定代码段和SQL语句对性能的影响

  • 仅凭SOA和云无法解决业务数据管理风险问题

    SOA和云可以是某些恼人问题高效的解决方案;这一点我们已经知道了。但是也要记住它们并不是所有事情的直接答案,特别是当你的问题是业务数据管理风险,而不是技术问题时。