企业SOA架构案例分析
面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。
传统统的两种企业构架:面向功能的企业构架和面向过程的企业构架,这两种企业架构所采用的技术基本上是紧密耦合的,这种架构方法将应用程序功能的代码通常与功能本身的代码混合在一起,带来的后果就是更改一部分代码的时候将对使用该代码的代码具有重大影响,造成系统的复杂性提高,并增加维护系统的成本,而且还使重新使用应用程序功能变得较困难,这严重影响了企业系统的稳定性。而SOA架构以其高度开放型和可重用性、灵活性完全避免了传统企业架构方法所带来的问题。
SOA的特征是:独立的功能实体。SOA非常强调架构中提供服务的功能实体的完全独立自主的能力,以及实体自我管理和恢复能力。常见的用来进行自我恢复的技术,比如事务处理,消息队列,冗余部署和集群系统在SOA中都起到至关重要的作用。大数据量低频率访问。对于传统的分布式计算模型而言,他们的服务提供都是通过函数调用的方式进行的,一个功能的完成往往需要通过客户端和服务器来回很多次函数调用才能完成,这些调用在Internet环境下往往是决定整个系统是否能正常工作的一个关键决定因素。因此SOA系统推荐采用大数据量的方式一次性进行信息交换。基于文本的消息传递。SOA系统采用基于文本而非二进制的消息传递方式。在Internet环境下,不同语言,不同平台对数据、甚至是一些基本数据类型定义不同,给不同的服务之间传递对象带来的很大困难。由于基于文本的消息本身是不包含任何处理逻辑和数据类型的,因此服务间只传递文本,对数据的处理依赖于接收端。数据处理端可以只选择性的处理自己理解的那部分数据,而忽略其它的数据,从而得到的非常理想的兼容性。
一个使用SOA的企业,可以使用一组现有的应用来创建一个供应链复合应用,这些现有的应用通过标准接口来提供功能。为了实现SOA,企业需要一个服务架构,图2显示了一个例子:

服务消费者可以通过发送消息来调用服务。这些消息由一个服务总线转换后发送给适当的服务实现。这种服务架构可以提供一个业务规则引擎,该引擎容许业务规则被合并在一个服务里或多个服务里。这种架构也提供了一个服务管理基础,用来管理服务,类似审核,列表,日志等功能。此外,该架构给企业提供了灵活的业务流程,更好地处理控制请求,例如SOX,并且可以在不影响其他服务的情况下更改某项服务。
SOA目标是整合业务过程,必须具备下面要求:异构性,横跨现有应用系统;可伸缩性,根据环境变化非常容易地能够提升系统性能;适用性,将应用错误和通讯错误隔离开来,不至于因为一点失败导致全局混乱;分布式,跨部门跨地域交互操作;机动性,允许各个部门以最小的代价很容易更改与应用相关的设计和实现,也就是各个部门系统相互独立,没有耦合性;可见性,可以对各种处理和服务运行情况进行管理监视。SOA是一种松散耦合的软件体系结构,在这种体系结构中,由各自独立可复用的服务去构成系统功能。这些服务向外公布有意义明确的接口,软件的开发是通过对这些实现透明的接口的调用来完成。SOA可以降低开发成本,提高系统集成度和响应速度等,还能帮助解决因为系统升级带来的烦恼。未来SOA构架下的企业软件就像是一个不断进化的生态过程,某些“服务(业务组件)”不断地局部升级,新的“服务”不断地加入,只有这样的系统才能真正做到实时企业,快速适应业务变化。
服务导向架构并不是一种全新的解决方案;相反,SOA是技术与架构的自然进化。系统架构一直在不断进步,与商业保持高度一致。系统设计师与商家很早就认识到将技术与商业流程相协调的重要性,包括充分应用并合理化技术资源,以及为商业提供更好的支持。SOA也在一定程度上源于早已有之的企业架构理论。企业架构对技术进行评估,但是更重要的是,它关注整个企业和全部的商业流程并提供了做出技术决策的背景信息。SOA工具则融合了互联网技术,如HTTP和XML,以及综合技术,如消息总线、转译技术和连接技术。
企业SOA架构案例分析的更多相关文章
- 企业SOA架构设计理论
SOA简介 SOA(Service-Oriented Architecture,面向服务架构)是一种将信息系统模块化为服务的架构风格.拥有了服务之后,我们就可以迅速地将这些服务按不同方式重新组合,从而 ...
- SOA架构设计和相关案例分析
一.SOA概念 1.定义: SOA,是一个组件模型,面向服务的体系架构,它将应用程序的不同服务通过这些服务之间定义良好的接口和契约联系起来,不涉及底层编程接口和通讯模型.服务层是SOA的基础,可以直接 ...
- SOA架构设计的案例分析
面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和契约联系起来.接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台. ...
- 关于SOA架构设计的案例分析
关于SOA架构设计的案例分析 面向服务的体系结构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来.它可以根据需求通过网络对松散耦合的粗粒度应 ...
- 关于SOA的架构设计案例分析
SOA体系架构及相关技术,主要应用在企业应用集成领域,它能够以服务的方式共享和复用企业现有应用资产,保护用户IT投资,并能够以服务的方式构建新的业务流程,对企业流程进行灵活重构和优化,增强业务的敏捷性 ...
- 基于AgileEAS.NET企业应用平台实现基于SOA架构的应用整合方案-开篇
开篇 系统架构的文章,准备在这段时间好好的梳理和整理一下,然后发布基于AgileEAS.NET平台之上的企业级应用架构实践,结合具体的案例来说明AgileEAS.NET平 台之上如何进行系统的逻辑架构 ...
- ENode框架Conference案例分析系列之 - 架构设计
Conference架构概述 先贴一下Conference案例的在线地址,UI因为完全拿了微软的实现,所以都是英文的,以后我有空再改为中文的. Conference后台会议管理:http://www. ...
- 面向服务体系架构(SOA)和数据仓库(DW)的思考基于 IBM 产品体系搭建基于 SOA 和 DW 的企业基础架构平台
面向服务体系架构(SOA)和数据仓库(DW)的思考 基于 IBM 产品体系搭建基于 SOA 和 DW 的企业基础架构平台 当前业界对面向服务体系架构(SOA)和数据仓库(Data Warehouse, ...
- 《大型网站技术架构:核心原理与案例分析》【PDF】下载
<大型网站技术架构:核心原理与案例分析>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230062557 内容简介 本书通过梳理大型网站 ...
随机推荐
- 7.JSP技术
JSP和Servlet一样,都是用于开发动态web资源的技术 JSP的两个特性:1.写JSP代码就像是在写HTML代码,但JSP技术允许在页面中编写java代码(理解为一种特殊的HTML) 2.JSP ...
- vim学习(一)
vim是linux和mac中常用到的编辑器. 其分为4种模式: normal模式:普通模式,浏览作用 insert模式: i(insert) 在当前光标处进行插入 a(append) 在当前光 ...
- Django—model系统:ORM对数据库操作
基本操作 <1> all(): 查询所有结果 <2> filter(**kwargs): 它包含了与所给筛选条件相匹配的对象 <3> get(**kwargs): ...
- Linux上jdk,mysql,tomcat安装
一:RPM(红帽软件包管理器):相当于windows的添加/卸载程序(控制面板),进行程序的安装.更新.卸载.查看: 本地程序安装:rpm -ivh 程序名 本地程序查看:rpm -qa 本地程序卸载 ...
- git log master..origin/master --oneline | wc -l 怎么知道本地仓库是不是最新的
git log master..origin/master --oneline | wc -l 怎么知道本地仓库是不是最新的 git fetch # 一定要先 fetch git log mast ...
- JavaScript 基础知识梳理——数据类型
JavaScript的数据类型公有六种,ES6又新增了第七种Symbol类型的值. 数值(number) 字符串(string) 布尔值(boolean) undefined null 对象(obje ...
- Maven 配置问题 - could not find resource mybatis-config.xml
需要在pom中加入以下代码 <build> <resources> <resource> <directory>src/main/resources&l ...
- [Functional Programming] Reader with Async ADT
ReaderT is a Monad Transformer that wraps a given Monad with a Reader. This allows the interface of ...
- 题解 [51nod1385] 凑数字
题面 解析 首先设\(n\)有\(l\)位, 那么对于前\(l-1\)位,\(0\)~\(9\)都是要选上的, 而对于最高位上的数\(x\),\(1\)~\(x-1\)也是要选上的. 到这里就有了\( ...
- (十七)线程,connect的第五个参数
采用多线程,将需要处理的后台数据放入子线程,为了能够跨线程调用,一种方法是使用类似线程锁对线程进行保护,另外一种方法使用Qt的信号槽机制.Qt的信号槽机制采用connect函数进行连接,connect ...