正确实施SOA
对精心设计的一种面向服务的架构而言,功能齐全的SOA存储库是核心部分。一个良好的SOA存储库能够以原生方式嵌入数据管理和治理服务。它为一部全面的词典提供了语义调和功能。它可以把数据和服务组织成有意义的术语,并且提供生命周期管理和版本控制服务。它还提供了一整套数据服务,可以执行质量管理、验证、转换、联合、治理和缓存等操作。
如果把这些服务部署到SOA存储库上,与业务流程和工作流相关的工件、定制的组合式数据服务以及第三方服务也可以自动使用它们。
在附图中处于显要位置的另一个部分是BPM/工作流平台。应用层能够发现及使用直接来自服务注册中心/存储库层面的服务;也能通过工作流业务流程管理平台,获得更大的灵活性。尽管BPM/工作流平台为诸多应用提供了一套服务,但外部的服务层可以同时对服务进行注册,以便客户发现及使用。
我们已提到,存储库要处理海量的数据,因此,它在设计时应当注重性能和灵活性。如今实施的大多数存储库存在这个问题:它们基于传统的关系数据库,而这种关系数据库根本不够灵活,连中等规模的SOA实施系统带来的查询任务都无法处理。所有SOA数据——工件和消息——都采用XML格式,并且使用层次表示法,这不是非常适合于结构僵硬的关系数据库管理系统。随着SOA实施系统不断扩展,纳入更多的端点/使用者、编制和用户,这个问题尤为严重。缺少功能强大的存储库还会导致治理和管理工作的复杂化。譬如说,如果想改变注册中心里面的一系列WSDL,使用XQuery的强大查询功能来实现就显得比较简单。因为XQuery可根据查询标准来选择合理的工件,并进行更新。因为SOA中的大多数工件是XML格式,所以需要以原生方式处理所有SOA XML数据的功能。因而,真正响应及时的SOA存储库必须实施在原生XML数据库(XDMS)上,而XQuery用于数据管理。
XQuery是一种非常灵活、功能强大的语言,用于XML数据检索及管理。如果结合原生XDMS(XML数据库管理系统),那么除了传统方法外,又多了一种处理巧妙、高性能的选择。传统方法针对RDBMS SOA工件存储区,使用传统的解析方法,对XML进行中间层转换,这种转换既复杂,又缓慢。
XDMS可以加快SOA的实施,因为它使数据能够作为原生XML加以存储及处理。当然,不是所有的原生XML数据库其构建方式都是一样的,它们提供的功能也不是都一样的。良好的XDMS应当能够处理各种XML数据,不必事先知道XML模式(XML Schema)的结构。事实证明,如果处理的XML文档来自数据结构不一的联合系统,那么这种功能就有很大优势。然后就可以在这样一个平台上构建功能强大的组合式数据服务。
用正确的方法使用SOA能够通过按需获得的信息、服务重复使用、流程优化、集成创新的第三方Web服务,获得业务效率、灵敏性及创新。让SOA注册中心和存储库成为SOA的基石,这可以确保企业的SOA基础设施能够得到非常好的的管理和治理。
SOA能够实现一系列广泛的用例(use case),可以跨不同的地理位置和交易合作伙伴涵盖各种系统。回到我们之前探讨的其中一个例子,许多制药公司使用全国药品代码(NDC)作为供应链和监管流程的一部分。如果新药添加、召回或者处方药的专利保护到期,这个NDC数据库就会不断更新。实施了SOA的企业可以订购应用广泛的NDC数据库Web服务,这样就可以实时更新这些数据,因而新产品推出或者被召回产品从制药供应链撤下时,就可以有效地使用数据,实现灵活应对。
同样,由于监管部门的各种报告需求在不断变化,必须从不同的IT系统搜集数据。基于SOA的方法可以轻松解决这个问题:几个版本的类似Web服务可以在SOA存储库里面得到维护,并且可根据数据参数进行动态选择。