和Google互补的搜索引擎Wolfram|Alpha
Wolfram|Alpha与Google究竟是什么关系,Wolfram|Alpha自己是如何定位的?Wolfram|Alaph在多大程度上是语义网搜索呢?InfoQ中文站就等等这些问题采访了Wolfram研究公司中国区商务经理王翔。

作者 Boris Lublinsky 译者 王志雄 发布于 2008年2月4日 下午10时28分
今天,大多数SOA设计技术1,2,3 都是以定义服务为中心的。它们使用面向服务的分解原则,以业务流程为基础、企业业务/功能模型,要求的长期架构性目标和现有企业功能的重用。这种方法通常将现代企业最重要的资产之一——企业数据事后整合。本文中我们将重顾一个典型的SOA架构,概述处理企业数据的复杂性,并讨论几种将数据整合进入SOA实现的设计模式。
一个典型的SOA设计方法导致以一种专用层的形式实现企业服务,这个层次基于“理想的”企业业务模型3对现有企业功能(应用)进行了合理化处理。

图1 典型SOA实现
这样的架构(图1)定义了SOA架构中的多个层次4:
为了加强服务的跨平台的互操作性,这样的架构通常定义语义消息模型——企业范畴的业务对象,它们被服务接口定义使用。这些语义消息模型一般从相同的企业业务模型(被业务定义使用)中派生出来,因而确保所有的服务调用使用一个“通用语言”。结果是,典型的SOA实现有效地引入了两种不同的数据模型5 ——被服务接口暴露的“外部数据”和被服务实现使用的企业数据——“内部数据”。
尽管典型的SOA实现在服务接口后面隐藏了企业数据,它仍然需要解决下面的数据存取问题:
有好几种设计模式旨在使SOA实现支持企业数据,其中一些是已经广为认知,另一些则是刚刚兴起。下面我会描述三种最重要的。
这是今天SOA实现的主流模式,与所有的SOA实现都合作得很好,如前面所示(图1)。在这个模式里,企业数据存取已经合并到业务服务实现中。数据通过集成层存取,服务实现自身负责定义和支持对特殊数据集的验证、存储、检索规则。这个设计模式的优点是能与所有的服务实现方法合作得很好。这个模式的缺点是:
事实上许多SOA实现都混合使用了上述两种方法。尽管这种模式一般适合小规模初级的SOA实现,但是对于企业级别的实现,它的扩展性不是很好。
克服上一个模式缺点的一种方法就是将企业数据存取当作第一级的业务服务。在这种方式下,业务服务的一种特殊类型——数据服务——封装了所有企业数据存取、同步、验证、转换需要的逻辑。这个模式的优点是:
这个模式的缺点是:
今天SOA实现最流行的方法之一是使用企业服务总线模式7,它允许“虚拟化”企业服务存取b。 同样,企业数据总线允许虚拟化企业数据存取。从大多数方面来说,这个模式类似上面描述的企业数据存取服务。与将数据存取提升为第一级的业务服务不同的是,在这个方法中,这个模式作用在集成层上,它提供了任意服务直接访问企业数据任意部分的功能,如图2。

图2 企业数据总线
企业数据总线的起源可以追溯到数据库联邦技术——虚拟化存取企业中的异种数据库。不幸的是,这个技术对于SOA实现几乎不具有可应用性。这儿的问题是现有应用通过实现数据存取和验证逻辑有效控制了企业数据的访问。绕过这些应用系统直接访问数据库,需要重新实现这些逻辑,一般说来这很不划算。结果是,数据总线一般由集成层(图1)实现。市场上的新产品,例如IBM Information Server8就支持直接数据库存取和集成两种方法。这种产品通过“搭配”集成解决方案和直接数据库存取c,扩展了企业数据总线实现的灵活性。有效地实现这种模式,需要将提供企业数据存取的集成和提供企业功能能力的集成进行分离。考虑到数据和功能集成两者都获取/返回企业数据d,最直接的方法是考虑所有的集成都作为数据存取集成e。这导致SOA实现的全面修改。(图3)

图3 有数据总线的典型SOA实现
这种实现(图3)增加了额外的一层——企业数据总线,它提供对包含于企业应用或是应用下属数据库中的企业数据的存取。这也修改了企业组件层的实现;在这种实现中它不再包含“包装器”组件。这种情况下,业务组件将仅仅由基于现有功能实现的服务功能组件和使用企业数据总线的数据存取组件组成。这种模式的优点是:
这种模式的缺点是:
随着SOA实现的范围从局部部门级实现扩展到企业范围,企业数据存取迅速成为最重要的实现问题之一。 如果每次一开始都不能正确的架构,企业数据存取将成为一个主要拦路虎。本文中展示的设计模式定义了在SOA环境中处理企业数据的不同方法,以及每个方法优缺点。
Boris Lublinsky在软件工程和技术架构上有超过25年经验。近些年来,他关注于企业架构、SOA和流程管理。在他的整个职业生涯中,Lublinsky博士都是一个积极的技术演说者和作者。他在不同的期刊上发表了超过40篇技术文章,包括Avtomatika i telemechanica, IEEE Transactions on Automatic Control, Distributed Computing, Nuclear Instruments and Methods, Java Developer’s Journal, XML Journal, Web Services Journal, JavaPro Journal, Enterprise Architect Journal and EAI Journal。现在Lublinsky博士为大型保险公司工作,他负责开发和维护SOA策略和框架。可以通过blublinsky@hotmail.com联系他。
1 Steve Jones, Mike Morris, "服务架构的一种方法论"
2 Ali Arsanjani, "面向服务的建模和架构", Nov. 2004
3 Boris Lublinsky, Dimitry Tyomkin, "解析SOA", Business Integration Journal, Oct. 2003,
4 Michael Rosen, Boris Lublinsky, "面向服务集成:结合SOA和企业集成", Cutter Executive Report, Jan 2005
5 Pat Helland, 外部数据 VS .内部数据,SOA对数据的影响调查
6 John Evdemon, "服务设计原理:服务模式和反模式". MSDN, August 2005.
7 James R. Borck,"理解服务总线". InfoWorld, July 2005,
8 IBM Information Server
a 尽管通常情况下这句话是对的,但是也有大量的例外。有某些场景,CRUD类型的服务可以和业务功能合作得很好。比如,GetPoliciesForACustomer(customer),就是有业务含义的CRUD服务例子。
b 我想强调我正在讨论的不是什么特定的产品,而是企业服务总线模式。
c 不要去管新产品的出现,在我提到数据服务总线时,我讨论的纯粹是这种模式。
d 比如,遗留的费率策略实现的集成提供了功能集成的一个典型例子。另一方面,它可以被视为策略信息的消费者和费率信息的生产者。
e 另一个使用这个方法的理由是不论集成类型(数据集成或功能集成)是什么,输入和输出数据都需要在语义数据模型和遗留表示间进行转换。将任何集成当作一个数据存取对待可以允许这种转换的合并。
查看英文原文:Incorporating Enterprise Data into SOA
译者简介:王志雄,长期从事软件开发工作,项目集中在EAM和设备点检管理领域。2004年转入JAVA领域,曾经在项目中使用过Hibernate、Struts、Spring 等。关心软件技术和相关工具的动态,将其中成熟的技术和工具应用到实际的项目之中。关心开源软件的发展动态以及软件过程和敏捷开发的实践探索。
Wolfram|Alpha与Google究竟是什么关系,Wolfram|Alpha自己是如何定位的?Wolfram|Alaph在多大程度上是语义网搜索呢?InfoQ中文站就等等这些问题采访了Wolfram研究公司中国区商务经理王翔。
Vijay Narayanan在这篇文章中对数据服务的几个方面进行了介绍,它们都是SOA实践者和数据架构师感兴趣的内容。本文对数据服务的几个方面进行了介绍,包括需求定义,基本原理和好处、范围、开发以及消费模式。
罗马不是一天建成的,豆瓣的技术架构也是随着用户规模的增长一直在持续变化中。在本次演讲中,豆瓣的首席架构师洪强宁将与大家一起分享从上线时的单台服务器架构开始一直到现在的豆瓣架构变迁历程。
Billy McCafferty展示了S#arp架构,它在ASP.NET MVC框架的基础上,荟萃了当今的最佳实践,应用在ASP.NET Web应用程序的架构设计中。
中国作为新兴市场中的新兴市场,是Sun在美国之外实施SSE(SUN Startup Essentials)项目重点关注的地区。在QCon Beijing 2009期间,InfoQ中文站有幸对此项目的负责人王雷先生进行了采访,探讨了关于开源、新兴市场、SSE等话题。
HTML5 是由 WHATWG发起的,最开始的名称叫做Web Application 1.0,而后这个标准吸纳了Web Forms 2.0的标准,并一同被W3C组织所采用,合并成为下一代的HTML5标准。
2 条回复
关注此讨论 回复