0%

SOA:理解什么是服务

任何事物都有内在属性和外在形式的两面。不管外在形式如何让人眼花缭乱,其内在属性都保持不变。把握了内在本质属性,才不会被各种“换汤不换药”的小把戏所迷惑。
企业服务也是一样。企业服务是web service吗?那是表面形式;企业服务是RESTful吗?那也是表面形式;企业服务是消息处理吗?那还是表面形式!

企业服务的内涵

“服务”本身就是一个抽象的、含糊不清的概念。因为“服务”的概念应用范围很广,含义不断变化,难以概括说明。
就IT领域中的服务来说,数据库可以是一个服务(基础设施服务),某个函数/方法也可以是个服务(应用服务),某一个业务过程也可以是一个服务(业务服务),甚至“云”中规划了IaaS,PaaS, SaaS,希望把所有的东西都叫做服务。

尽管我们难以描述清楚”服务“这一概念的全部内涵,但至少可以找到服务的一些本质属性:

  • 服务是利他的:提供服务意味着满足别人的需要
  • 服务是无形的:服务是某种活动,需要相互作用
  • 服务是不可分割的:服务是一系列活动的整体,分割开的一部分活动不能称为完整的服务
  • 服务不可存储:服务使用者在需要服务时必须有服务提供者提供服务
  • 服务有差异性:不同的服务提供者,提供的相同类型的服务是不同质的
  • 服务不可转让:服务使用者无法将服务转让给另一个服务提供者

企业服务的外延

从企业架构(Enterprise Architecture,EA)的角度,企业中的服务包括以下几类:

  • 业务服务
  • 基础设施服务
  • 应用服务
  • 技术服务

从SOA的角度,对服务也可以进行类似的划分。比如在IBM的SOA Foundation 参考模型中,

将SOA中的服务分组为:

  • 交互类(Interaction Services)
    在人员、流程、信息之间提供协作支持,如单点登录(SSO),协同支持,多渠道,组合应用框架,角色和工作,业务可视化等

  • 流程类(Process Services)
    提供业务过程的编排及自动化,包括业务流程接口和业务流程引擎(BPEL,XPDL,PageFlow)

  • 信息类(Information Services)
    为各种不同形式和内容的数据提供一致的风格,如信息挖掘,内容管理,数据管理,信息模型管理等

  • 合作类(Partner Services)
    合作伙伴提供的服务,通过B2B网关、B2B防火墙进行隔离和访问
    现状:中债登直联接口(webservice),目前无防火墙

  • 应用类(Business App Services):各个业务应用系统提供的服务
    为业务应用系统提供支持,如标准业务服务,标准业务流程,组织架构管理,主数据管理,统一用户,统一权限管理,企业通讯录等

  • 接入类 (Access Serices)
    为已有的信息或应用提供交互支持,主要是对各种协议、应用、数据等的适配器

服务的落地

仰望星空,我们可以看到企业中的服务千千万;脚踏实地,我们要把各种“服务”对应到某种软件实现。

从软件实现的角度来说,服务是:

  • 系统、子系统或模块的映射
  • 资源的访问接口
  • 基于组件实现,其接口描述可以发布和发现
  • 服务的接口要有适应性和可管理性

企业服务的形式

如同本节一开始所描述的那样,web service, RESTful,消息处理都可以是企业服务的外在形式。区别无非是SOAP(XML)on HTTP, JSON on HTTP, 或者BINARY on Socket。

小结

SOA中的服务,暂且称为“企业服务”,是将各种具有业务价值的软件功能通过一致的接口定义,变成可管理的一组通用接口。从形式上可以有多种多样的实现。