面向服务的体系结构(SOA)——(1)目标与核心概念

什么是SOA

经常听到人们拿OOPSOA一块儿来讲事,诸如SOA是否能够代替面向对象(OOP)或者二者比哪一个更加有优点?直接回答有难度举个例子可能显得答案更容易理解。小孩子问你该认真写做业呢?仍是高考的时候报理科呢?摸不到头脑吧,根本就毫无心义的风牛马不相及的问题。(确切的说OOPSOA仍是有一些关联的,就像好好学习能够在高考的时候报理科是同样的。)java

面向服务的体系结构(Service Oriented Architecture)指的是一个系统的架构,他的研究领域是大型分布式系统的“架构”范式。而OOP指的是程序具体开发过程当中的“编程”范式。再通俗一点说就是在一个具体的软件内咱们谈论OOP,可是在讨论软件与软件,系统与系统的关系的时候咱们会借助SOA的理念帮助咱们处理他们(指各个系统)之间的关系。最后要说的是除非你只负责编码,不然这两个你都须要去好好理解一下。数据库

为何提出SOA

“并不是最强壮或最聪慧的种族,而是最能应变的种族得以生存。”——达尔文《物种起源》编程

想必上面的话可能会让读者为之一震,不由要问软件设计(或者说大型分布式软件设计)和《进化论》有什么关系?其实他们是同样的,每个物种都有本身的生命周期,“物竞天择,适者生存”;软件也是如此,每款软件也都有本身的生命周期,能知足用户的要求,能和周围的环境(其余软件)和平相处那该软件的生命周期天然就会合理的延长。如今的年代已经不是生命伊始,单物种存在,不考虑其余生物存在的时候了。一样的,如今的企业不管从资金仍是时间上考虑开发一套面面俱到的软件也是不可能的,最可能发生的就是旧系统依在新系统层出不穷,新旧交织、互帮互助(偶尔的打架也是正常的)。咱们要作的就是协调新旧系统的关系,这个协调的过程就是利用SOA解决问题的过程。架构

核心理念

支持异质(异构)

不要奢望企业中的每一个系统都是java平台的,不要奢望企业中的每一个系统都运行在Window平台上,不要奢望企业中的数据库都是结构化的……随着时间的流逝老版本的系统依在(里面的数据是无价的,别跟我说能够从新开发一套新系统,而后把旧系统的数据导出来,这就至关于让一个环境的某个物种短期内从新进化,梦同样幼稚的想法!)新系统层出不穷,SOA要作的就是在这些异质(异构)的系统之上保证他们的“和平相处”。分布式

支持变化

SOA毫不是一次性的事件,随着企业的发展要在系统环境的变化中产生出具备本身风格的SOA,此次整合了新旧系统兴许不就的未来,一次公司的收购就会迎来新的一轮SOA过程。学习

几个核心的概念

服务:指每一个模块或者说每一个系统。每一个服务能够尽可能的独立提供某一个功能的实现。编码

高互操做性:和“企业应用集成”(EAI)概念相似,保证异质的系统能够彼此相互提供服务。spa

松耦合:目的是保证整个系统的灵活性和可伸缩性。设计

上面的提出的三个概念对于异质的大型分布式系统(不是一次性开发出来的)来讲简直就像一个梦,怎么样去实现呢?也许SOA为咱们提供了找到解决方法的方向,请注意只是一个方向,不要奢望从SOA哪里得到什么具体可实施的方案。仍是开篇那句话SOA仅仅是一个“架构”范式而已,具体的操做还须要在实践中去摸索总结。orm

相关文章
相关标签/搜索