什么是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. 不要在初始化方法和dealloc方法中使用Accessor Methods

    苹果在<Advanced Memory Management Programming Guide>指出: Don’t Use Accessor Methods in Initializer ...

  2. tomcat架构

    很多开源应用服务器都是集成tomcat作为web container的,而且对于tomcat的servlet container这部分代码很少改动.这样,这些应用服务器的性能基本上就取决于Tomcat ...

  3. linux的vnc- rdesktop远程登录windows桌面

    使用vnc来实现任何平台之间(windows, linux, mac等)的远程桌面互访 vnc:virtual network computing 分 vnc server和 vnc client 在 ...

  4. 把一个一维数组转换为in ()

    把一个一维数组转换为in()形式. function dbCreateIn($itemList) { if(empty($itemList )){ return " IN ('') &quo ...

  5. POJ 3020 Antenna Placement

    Antenna Placement Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5645 Accepted: 2825 Des ...

  6. pdo调用

    php单次调用,例题 <body> <?php //造DSN:驱动名:dbname=数据库名;host=服务器地址 $dsn = "mysql:dbname=mydb;ho ...

  7. MyISAM 和 InnoDB 讲解

    MyISAM 和 InnoDB 讲解 InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定.基本的差别为:MyISAM类型不支持事务处理等高级处 ...

  8. ios反射

    http://www.cr173.com/html/18677_1.html 1.反射获取类属性名和属性类型 unsigned ; objc_property_t *properties = clas ...

  9. why we use Symbols in Hash

    Rather than using Strings as the keys in a Hash, it’s better practice to use Symbols. Symbols are ju ...

  10. WinAPI: ExtCreateRegion - 区域变换

    转载:http://www.cnblogs.com/del/archive/2008/06/03/1212534.html 相似函数: SetWorldTransform 本例效果图: 代码文件: u ...