SOA(Service-Oriented Architecture,面向服务的架构)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和契约联系起来。

  SOA可以满足企业软件架构的需要,大大增加了企业对于IT系统更改的灵活性,它为企业软件架构的搭建定义了一种新方法,使得一些大企业或不在同一地区的开发团队能够进行更有效率的合作,此外,SOA还能帮助企业处理系统升级方面的困难。

  要想实现SOA类型的架构设计,首先得明白SOA的架构模型,各部分的作用是什么,什么样的设计才能对职责进行正确的划分。图1是一套由五个逻辑层组成的简化版SOA模型。

                              图1 基于SOA的管理信息系统体系结构示意图

接下来对各层的功能进行分析:

1、表示层

  为企业内部用户或企业服务客户提供与系统交互的界面,例如web用户界面。用户与系统交互需要通过表示层的应用程序前端,而外界若要调用服务层的服务,也只能通过表示层。表示层中存在多种类型的应用程序前端,例如给用户使用的操作界面。

2、数据库层

  包括企业底层的各种数据实体,例如业务合同、文档备份等。

3、数据控制层

  为表示层提供服务接口,允许表示层的应用程序前端对系统内部的各种服务进行调用。

4、业务逻辑层

  整个系统架构模型中最重要且最复杂的一层,包含了企业所有的业务逻辑和流程。主要有简单业务服务与高级业务服务两种服务。

5、数据访问层

  包含了对数据库层的数据进行持久化操作的业务。

图2 各层在SOA中扮演的角色

  把所有服务实体集成,并在松耦合的约束下组合他们以形成复杂高级的业务逻辑是SOA最根本的目的。ESB(Enterprise Service Bus,企业服务总线)是基于SOA的企业信息系统模型中的一个抽象层,它把SOA的服务交互过程虚拟、统一化,并对该过程进行全程管理和监控。ESB的另一个重要特征是事件驱动,作为SOA的信息传输主干道,它为SOA提供了一种灵活简单的服务整合方法,降低了服务的耦合度和复杂度,是SOA在企业中成功实施的关键。

  SOA被提出得比较早,但因为缺少标准化的技术与方案规划,所以一直没有取代传统的解决方案,近几年web服务技术逐渐成熟,SOA概念才真正被应用于软件开发,以此来为企业信息化服务。

SOA的优势很多,总结如下:

  ①给企业提供一个更敏捷的系统。能从现有的服务中组合新的服务。通过对现有的组件和服务的重用来减少新软件系统的开发周期,使企业可以快速的开发新的业务服务。

  ②更好的重用企业现有的IT资产。SOA提供了一个可以将现有的资产组合包装成能提供企业新功能的服务的抽象层,企业可以通过它来继续在IT方面投资。

  ③减少开发成本、增加重用

  ④给整个系统提供更完善的集成。通过提供针对基于完全不同的系统构建的现有资源和资产的服务规范,使集成更加易于管理。从而实现了真正意义上的集成:跨平台和跨语言。

接下来给出一个以某公司为例的SOA设计

公司原系统概况:本实例的公司是一家保险公司,总部在长春市,在吉林省有多家分支机构,在北京等地设有分公司。公司业务包含营业险等几个主营险种,此外还约有100多个产品险种,200多个附加保险产品,客户分布面广且数量大。公司在成立初购买了国内某著名软件公司量身定做的信息管理系统,然而随着公司的不断发展,国内保险行业和市场需求的不断变化,该系统暴露出越来越多的缺点,更换新的系统迫在眉睫。

该公司信息系统主要存在以下几方面的问题:①系统架构导致集成困难;②系统效率底下;③系统缺乏敏捷性。

公司新系统需求如下:①较高的集成能力;②敏捷的快速部署能力;③具有较高的安全等级。

该公司基于SOA的信息系统架构设计

  为了减少二次开发对原系统产生的冲击,面对SOA的新系统结构上并不与原有的系统冲突,这个项目的解决方案采用了多层结构的架构模型,如下图

图3 系统的N层架构

关键层功能设计

  表示层。该层包含用户界面应用程序,这些程序大多基于web客户端,允许公司员工或者保险客户通过web浏览器或其他终端访问。

  应用程序与业务逻辑层。包含了服务实现的业务流程,组合和重用简单业务服务和数据库操作服务,由表示层访问,通过表示层与域服务层的底层服务交互。

  域服务层。包含了用于域的所有数据服务与基本业务服务,其主要目的是定义与和核心业务实体以及基本数据库操作相关的功能。

参考文献:基于SOA的企业信息系统架构设计__张卓

SOA架构设计分析的更多相关文章

  1. 企业SOA架构设计理论

    SOA简介 SOA(Service-Oriented Architecture,面向服务架构)是一种将信息系统模块化为服务的架构风格.拥有了服务之后,我们就可以迅速地将这些服务按不同方式重新组合,从而 ...

  2. SOA架构设计经验分享—架构、职责、数据一致性

    阅读目录: 1.背景介绍 2.SOA的架构层次 2.1.应用服务(原子服务) 2.2.组合服务 2.3.业务服务(编排服务) 3.SOA化的重构 3.1.保留服务空间,为了将来服务的组合 4.运用DD ...

  3. 论SOA架构的几种主要开发方式

    转: http://blog.csdn.net/chenleixing/article/details/44926955  面向服务架构soa以其独特的优势越来越受到企业的重视,它可以根据需求通过网络 ...

  4. SOA架构设计(转发)

    阅读目录: 1.背景介绍 2.SOA的架构层次 2.1.应用服务(原子服务) 2.2.组合服务 2.3.业务服务(编排服务) 3.SOA化的重构 3.1.保留服务空间,为了将来服务的组合 4.运用DD ...

  5. SOA架构介绍和理解

    SOA架构介绍和理解 SOA的正确方法论及目标模型,其实SOA在实现架构落地上,需要考虑到对服务的组合,不断的重用现有的服务,让企业应用可以逐步集成,快速实现业务的迭代. 通过SOA架构分层将服务按照 ...

  6. Web API应用架构设计分析(2)

    在上篇随笔<Web API应用架构设计分析(1)>,我对Web API的各种应用架构进行了概括性的分析和设计,Web API 是一种应用接口框架,它能够构建HTTP服务以支撑更广泛的客户端 ...

  7. SOA 架构中的ESB是更好的应用于异构系统集成整合还是用于统一服务调用/基础服务实施

    一.讨论主题与观点 写一篇文章.发现一次自觉得有意思的SOA架构方面的讨论,源于昨天AgileEAS.NET SOA 平台群(113723486)里几个群友的一次关于ESB的一次讨论. 大家的讨论观点 ...

  8. 基于AgileEAS.NET企业应用平台实现基于SOA架构的应用整合方案-开篇

    开篇 系统架构的文章,准备在这段时间好好的梳理和整理一下,然后发布基于AgileEAS.NET平台之上的企业级应用架构实践,结合具体的案例来说明AgileEAS.NET平 台之上如何进行系统的逻辑架构 ...

  9. 论SOA架构的几种主要开发方式【转】

           面向服务架构soa以其独特的优势越来越受到企业的重视,它可以根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署.组合和使用.服务层是SOA的基础,可以直接被应用调用,从而有效控制系 ...

随机推荐

  1. DataTable数据类型的一些操作 增加行、插入行、修改数据、修改列名、修改列顺序、计算、选取或删除行(列)、排序、某列distinct值 等

    Datatable 这个数据类型在C#中涉及到对数据库读取时的用处还是挺大的,最近在处理一个报表开发时,一开始把所有的操作都放在sql 上面来做,就是我需要什么样的数据我就query出什么,但是这样其 ...

  2. Power BI 安装注册教程

    把下载好的MSI包PBIDesktop_x64.msi 双击安装 点击下一步 选择文件路径 点击安装 点击完成 初始化中 安装完成界面 账号注册 https://powerbi.microsoft.c ...

  3. 九、React中的组件、父子组件、React props父组件给子组件传值、子组件给父组件传值、父组件中通过refs获取子组件属性和方法

    一.概述 React中的组件: 解决html 标签构建应用的不足. 使用组件的好处:把公共的功能单独抽离成一个文件作为一个组件,哪里里使用哪里引入. [父子组件]:组件的相互调用中,我们把调用者称为父 ...

  4. Python MySQL Select

    章节 Python MySQL 入门 Python MySQL 创建数据库 Python MySQL 创建表 Python MySQL 插入表 Python MySQL Select Python M ...

  5. Java8 新特性_Lambda 表达式

    1. Java8新特性_简介 Lambda 表达式 函数式接口 方法引用与构造器引用 Stream API 接口中的默认方法与静态方法 新时间日期 API 减少空指针异常的容器 Optional 2. ...

  6. 黑马oracle_day01:02.oracle的基本操作

    01.oracle体系结构 02.oracle的基本操作 03.oracle的查询 04.oracle对象 05.oracle编程 02.oracle的基本操作 PLSQL中文乱码问题解决1.查看服务 ...

  7. Python LMDB的使用

    在python中使用lmdb linux中,可以使用指令 pip install lmdb 安装lmdb包. ---- lmdb 数据库文件生成 增 改 删 查 1.生成一个空的lmdb数据库文件 # ...

  8. Abstract抽象类 && Interface接口

    # 抽象类 ## 将相同的但是不确定的动作提取出来,抽象化,抽象类的意义在于,在子类中进行实现. ## 抽象类可以被继承,子类继承抽象类时,需要对抽象方法进行完全实现. ## 抽象方法不能有方法体. ...

  9. 在div中注入html代码

    直接开始: <div id="content"class="modal-body"> </div> 在angularjs中使用如下代码, ...

  10. hibernate 插入date值到postgresql,丢失时分秒

    用hibernate插入java.util.Date数据时发现 时分秒 会丢失.如 2014-05-30 15:59:16.921 在postgresql数据库中显示2014-05-30 00:00: ...