什么是SOA?

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

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

为什么提出SOA

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

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

核心理念

支持异质(异构)

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

支持变化

SOA绝不是一次性的事件,随着企业的发展要在系统环境的变化中产生出具有自己风格的SOA,这次整合了新旧系统兴许不就的将来,一次公司的收购就会迎来新的一轮SOA过程。

几个核心的概念

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

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

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

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

面向服务的体系结构(SOA)——(1)目标与核心概念的更多相关文章

  1. 面向服务的体系结构(SOA)——(2)ESB介绍及职责

    企业服务总线(Enterprise Service Bus)是SOA的基础设施,之所以这么说是因为要达到SOA的目标(增强灵活性)就必须有调用服务的方法,ESB的存在有效的保证了消费者能够调用供应者提 ...

  2. 面向服务的体系结构(SOA)——(5)关于MEP(Message Exchange Patterns)

    SOA中的MEP和JavaEE中的JMS类似,当然了就应该是类似的,因为都是关于消息方面的.一个是对系统架构当中消息的解决思路,一个是针对Java平台中的消息的具体解决办法(严格说不是具体的,只是提供 ...

  3. 面向服务的体系结构(SOA)——(4)对于服务的理解

    在接触SOA之前对"服务"这个词没有太多的感触,无非就是为别人做事情么.当然在SOA中这个词也脱离不了这层基本的涵义,但是具体到实际的架构中对这个词的理解就更加深刻了.本文就以&q ...

  4. 面向服务的体系结构(SOA)——(3)关于BPM

    什么是BPM 很多情况下企业当中所提供的服务不是由一个分布式业务流程就可以完成的,整个服务的提供需要多个分布式流程有机的组合,于是BPM就应运而生了.要将现有的服务通过配置.编排(关于配置与编排的区别 ...

  5. SOA(面向服务的体系结构)

    SOA(面向服务的体系结构) 面向服务的体系结构是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来.接口是采用中立的方式进行定义的,它应该独立于实现服务 ...

  6. SOA 面向服务的体系结构

    SOA:面向服务的体系结构(service-oriented architecture) 是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来. 接口是采 ...

  7. SOA (面向服务的体系结构)

    面向服务的体系结构是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来.接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台.操作系统和编程语言 ...

  8. 面向服务架构(SOA)和企业服务总线(ESB)

    http://www.cnblogs.com/shanyou/archive/2008/04/19/1161452.html 学习和研究在企业中实施面向服务架构(SOA),简单回顾SOA和ESB,重点 ...

  9. 从面向服务架构(SOA)学习:微服务时代应该借鉴的5条经验教训

    [编者按]本文作者为 Matt McLarty,通过介绍 SOA 的兴衰变化,总结了微服务应该借鉴的5条经验教训.文章系国内 ITOM 管理平台 OneAPM 编译呈现. SOA 的兴衰变化让我们更了 ...

随机推荐

  1. JS 事件练习

    QQ拖拽及状态栏选择 HTML <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> &l ...

  2. linux ftp命令(转)

    此命令需要安装ftp, yum install ftp 1. 连接ftp服务器 格式:ftp [hostname| ip-address]a)在linux命令行下输入: ftp 192.168.1.1 ...

  3. jquery 使用方法<转载>

    jquery 使用方法 jQuery是目前使用最广泛的javascript函数库.据统计,全世界排名前100万的网站,有46%使用jQuery,远远超过其他库.微软公司 甚至把jQuery作为他们的官 ...

  4. Sublime Text2 快捷键 (MAC版)

    工具是人的延伸,可以把人变得更聪明更强大,人类正是学会了使用工具,才创造出现在的文明.作为程序员,工具开发.使用是其能力的重要体现,业内的大牛都是造工具的好手.目前身边很多人都在用sublime te ...

  5. codevs1080线段树练习

    题目描述 Description 一行N个方格,开始每个格子里都有一个整数.现在动态地提出一些问题和修改:提问的形式是求某一个特定的子区间[a,b]中所有元素的和:修改的规则是指定某一个格子x,加上或 ...

  6. Java笔记--泛型总结与详解

    泛型简介: 在泛型没有出来之前,编写存储对象的数据结构是很不方便的.如果要针对每类型的对象写一个数据结构,     则当需要将其应用到其他对象上时,还需要重写这个数据结构.如果使用了Object类型, ...

  7. [NOIP2015]推销员

    [NOIP2015]推销员 试题描述 阿明是一名推销员,他奉命到螺丝街推销他们公司的产品.螺丝街是一条死胡同,出口与入口是同一个,街道的一侧是围墙,另一侧是住户.螺丝街一共有 N 家住户,第 i 家住 ...

  8. Coursera台大机器学习课程笔记10 -- Linear Models for Classification

    这一节讲线性模型,先将几种线性模型进行了对比,通过转换误差函数来将linear regression 和logistic regression 用于分类. 比较重要的是这种图,它解释了为何可以用Lin ...

  9. GraphicsMagick为图片添加水印

    GraphicsMagick号称图像处理领域的瑞士军刀.提供了健壮及高效的图像处理工具包和库,支持超过88种主流图片格式包括:BMP,GIF,JPEG,JPEG-2000,PNG,PDF,PNM,TI ...

  10. Backpack | & ||

    Backpack | Given n items with size Ai, an integer m denotes the size of a backpack. How full you can ...