文档介绍:SOA业务服务环境中的若干模式
读:本文介绍了ESB产品常常提供的丰富的适配层,使得业务服务和服务消费者之间的技术整合成为可能。只要ESB产品不根据某些业务面不可控的规则和策略完成一些所谓“智能”路由时,它就是SOA环境中最有价值的ESB特性。
关键词:企业服务总线 ESB SOA设计模式松耦合服务契约 SOA参考架构基础
伴随世纪变迁,我们愈发感觉到需要一些稳定的,恒定的甚至“不可触及”的东西,由他们去支配其他不断变化的事物。诸如宗教仪式、数学公理和地球形状等,都属这类恒定的事物之列。然而有时候,人们在不断进化的过程中所积累的知识又迫使人们去修正对那些恒定事物的认识,这类事情时有发生, 譬如,数学公理就是这样不断变化的事物之一,特别是欧几里德的几何理论和人们对地球形状的认识。赫拉克利特曾说过:“唯一不变的是变化本身”,我决定追随他的智慧。
有些人的态度是简单地相信那些恒定事物,这样做非常简单;而另一些人则常常勇于挑战那些不变的事物——寄以弄清它们是否真正地永恒……本文的形成受益于这里提及的两类人的长期争论,探讨的话题与一组设计模式有关,即当它们的应用环境改变时,其利与弊?
这里就有一个这样的热点话题,大家都知道两个经常被提到的模式——门面模式(Fa??ade Pattern)和仲裁者模式(Mediator Pattern);当其应用环境从最初假定的应用编程的范畴发展到企业技术层编程的范畴,并最终发展到贯穿于业务时,其作用会有如何变化呢?这个论题之所以如此有趣,我想是因为:
技术产品物化了这些模式
这些产品被厂商推向企业的IT部门,极大地影响了人们的日常工作。
在这类产品之中,企业服务总线(ESB)突然间变成了实施面向服务的架构(SOA)的“必备”要素,然而对于其中的缘由却缺乏说得过去的解释。现有的大部分“解释”谈论的是采用ESB产品我们能够做什么,但是这种解释的结果仍然没能解开谜团。
根据日常生活中得到的经验,在开始本文之前,必须要明确一些术语的定义,确定“相通”的语言。比如,当中文提到SOA时,它指的是OASIS的SOA标准,如参考模型(Reference Model)和SOA参考架构基础标准草案;而“业务服务(Business Service )”则指的是在OASIS SOA的语境下,人工服务和自动服务的综合体。它们实现特定的业务功能或特性,提供访问业务能力的途径。业务服务的实现方式多种多样,比方说,业务流程就是一种实现方式。人们通常将业务流程理解成一组按特定顺序编排的人工活动或自动化活动的集合。
谈及模式时,我采用的是GoF著作中给出的定义。有时,模式与实现该模式的产品的名字相同,所以我们必须要交代清楚。
一千人眼中有一千个门面
让我们先从门面模式开始热身一下吧。自1681年开始,门面这个词语就指建筑物的正面。在技术领域中,我们从GoF著作中对门面的定义开始——门面是在面向对象(OO)的设计中屏蔽其他接口的前端接口。一般来说,门面模式的实现能够将发送方(根据粗粒度的前端接口)发送过来的消息拆分成细粒度的目标接口所能识别的一组消息。这一能力解放了发送者,它不再需要理解目标接口的详细信息。与此同时,位于门面接口之后的接收者扮演的是仲裁者的角色,因为它知道如何拆分请求消息,并将拆分后的消息分往目标接口。