关于SOA的概念和架构

经过微博的熏陶及新同事的刨根问底,觉得自己有必要深入学习一下SOA。

买了2本书《SOA中国路线图》和《SOA整合之道》,这个寒假啃完了。完全是跳跃着看的,因为都是无法深入读的书,看的云里雾里,不过最后还是弄明白了SOA的那些事。这2本书推荐前一本,那个《SOA整合之道》纯属IBM自娱自乐没有什么价值。

【声明】本文下面的内容及思想主要来自《SOA中国路线图》。

一、基础概念:

归根结底,SOA的指导思想是业务驱动,简单说就是首先梳理业务,把业务整明白了、业务流程规划好了SOA也就成功了一大半,在整理业务的过程中要识别和规划好服务。服务如何实现就是技术层面考虑了的。SOA的技术层面就是三个核心:SDO/SCA/BPM。其中SDO(服务数据对象)和SCA(服务组件架构)是SOA的编程模型规范,它是一套规范,利用这套规范可以比较容易的实现面向服务的编程。目前真正做了实现的是:http://tuscany.apache.org。也许我知道的比较少,目前看到真正拿他来编程的没看到。BPM是流程管理,其规范是BPEL,这个实现目前比较多了,例如IBM的WPS等。

1、SDO

SDO的目标:与XML无缝集成,支持跨语言、中立的数据定义与数据传输,消除XML与各语言实现的差异性;提供比XML更简洁的对树状数据的操作,屏蔽不同的数据源;灵活的数据结构,以便在各层次间、各应用间进行数据传递;支持离线的数据操作。

在SDO的设计中需要具备下列特征:支持元数据定义;静态数据访问接口;动态数据访问接口;灵活的数据传输对象;数据导航;数据变更历史;数据序列化

2、SCA

SCA中的主要几个概念是component(组件)和composit(构件)。前者包括了接口(对外提供的服务)、属性(component的控制面板,通过这些参数的设置可以使组件表现不同的特性)、引用(引用其他的组件或构件的服务)、实现(具体编程实现,不依赖开发环境和语言)。后者是组合了多个组件,其本身没有实现代码,只是对组件中的服务进行选择、装配、暴露,形成构件的特性和服务。

SCA中的组件也可以使用构件来实现,因为构件有包含了不同的组件(繁琐吧)。

构件的2个重要的图:

SCA中的组件构成

SCA中构件的关系

上面2个图来自于:http://wenku.baidu.com/view/683c0c3231126edb6f1a1031.html

3、BPM

就是流程管理,可以简单的理解为工作流。它是对上述产生的服务的管理。

另外

SOA的实施是个长期的工作,而且它以业务为驱动的方式,决定了它也不断的跟踪和管理,也就诞生了“SOA治理”的概念,类似于ITIL。

ESB中的5个主要功能:服务路由、协议转换、数据格式转换、事件管理、服务管理,大部分可以通过SDO/SCA来实现,因此ESB总线是实施SOA的好工具,但不是必须的。而是要看具体的情况来分析和确定。

二、SOA技术架构分层

下面还是借用《SOA中国路线图》中的SOA技术架构分层加上自己的一些理解说一下吧。


1.资源层

基于SOA的应用在资源层很重要的一点是考虑如何整合遗留IT资源,遗留IT资源主要包括遗留数据和遗留系统两种类型。资源层的核心功能是整合这些企业资产作为可复用的资源。对于遗留数据,平台通过SOA中的SDO标准将其封装成数据实体,对于遗留系统的集成,主要是通过系统功能进行服务抽取,生成一系列的服务构件。

资源层的数据标准化提供统一的数据格式和统一的数据模型,有两层含义。

通过主数据管理提供统一的数据接口,以统一的数据视图展示数据;

通过统一数据模型SDO和XML Schema处理数据,包括数据的持久化、查找等功能,并屏蔽不同的数据源。

数据服务对象SDO以动态数据API和静态数据API提供数据访问服务,拥有元数据模型和复杂数据对象,可以记录变更历史。

2.逻辑层

逻辑层负责具体的业务逻辑实现,按照SOA中的SCA标准,允许多种不同的构件实现方式,如Java构件实现、Spring构件实现、逻辑流构件实现等。逻辑流构件以图形化的方式构造服务构件,这样编写的代码严格受控,能够提升项目的可管理性和可维护性,并降低开发人员的成本

由于构件的实现方式不受限制,可以利用丰富的开源构件和积累的构件库。构件库中存储着大量的展现构件、基础业务构件和运算构件,而且构件库中的构件经过严格测试、并在大量项目中获得验证。因此,构件实现不需要从零开始,并且屏蔽了技术复杂度,能够迅速搭建高质量、高性能、稳定可靠的基础业务框架。

3.服务层
服务层以一种中立的、语言无关的方式表达业务逻辑,屏蔽了业务逻辑的不同实现方式,使调用者不需要关心逻辑的具体实现技术和细节。服务层用来将构件层编写的构件按照统一构件模型装配成服务的方式暴露给其他模块或者其他系统。服务层的服务含义不仅仅是指Web Service,在SOA体系中,服务是构件暴露出来的业务操作,在技术上可以体现为Web Service、Java、EJB、JMS、RMI等多种调用方式。

在服务层,构件定义模型描述服务构件;构件装配模型将小粒度构件装配为组合构件;构件部署模型描述如何部署到运行环境。

使用SOA原则和统一构件模型提供了灵活性,通过基于接口编程和灵活的协议绑定机制,将新的或者遗留代码构建成服务构件,将小粒度构件组装为大粒度构件,并在应用间共享服务构件以完成资产复用,提高可重用性;统一构件模型也容易获得主流平台厂商和应用厂商以及社区的广泛支持,达到厂商中立性;支持如Java、C++、Ruby等多种编程语言,达到语言无关性;支持如Web Service、EJB、JMS、RMI等多种调用协议,达到协议无关性。

4.流程层

流程层提供对业务逻辑的编制功能,提供人工活动和自动活动两种活动的处理能力。在业务流程层使用流程对服务进行编制,组合成业务流程,以任务的形式体现工作活动,并允许配置参与者、规则和过程来进行执行和监控,从而提升生产组织水平和工作效率。

5.协同层

协同层负责流程、服务、应用和人员间的协同,提供对HTTP、RCP、AJAX、Web Service、Java Client等多种客户接入方式的支持,并提供丰富的客户端展现方式,处理单点登录,解决多用户之间的协作问题。通过"协同桌面"提供如电子邮件、即时消息、手机短信、智能移动终端、在线会议等各种网络交流手段,让员工之间,或员工与系统之间的交流与协同更加快速便捷



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值