什么是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. mysql 导入大sql文件时 max_allowed_packet 选项的设置

    mysql根据配置文件会限制server接受的数据包大小. 有时候大的插入和更新会受max_allowed_packet 参数限制,导致写入或者更新失败. 查看目前配置 show VARIABLES ...

  2. Dynamic Virtual Channels

    refer http://blogs.msdn.com/b/rds/archive/2007/09/20/dynamic-virtual-channels.aspx An important goal ...

  3. 32和64位的CentOS 6.0下 安装 Mono 2.10.8 和Jexus 5.0

    http://www.cnblogs.com/shanyou/archive/2012/01/07/2315982.html shanyou 博客

  4. 各种工具使用手册:http://www.itshouce.com.cn/linux/linux-tcpdump.html 关于tcpdump!!!!

    各种工具使用手册:http://www.itshouce.com.cn/linux/linux-tcpdump.html 关于tcpdump!!!! 实用tcpdump命令 //查看本机与mysql的 ...

  5. [整理]Web应用安全学习

    最近在复习TCP/IP相关知识,同时也想对网络安全相关的知识进行系统的补漏. 阅读了一些常见的关于XSS.CSRF等的一些网上文章: http://www.cnblogs.com/luminji/ca ...

  6. HNU 12845 Ballot Analyzing Device

    题目链接:http://acm.hnu.cn/online/?action=problem&type=show&id=12845&courseid=270 解题报告:有m个认给 ...

  7. 从零开始写一个武侠冒险游戏-7-用GPU提升性能(2)

    从零开始写一个武侠冒险游戏-7-用GPU提升性能(2) ----把地图处理放在GPU上 作者:FreeBlues 修订记录 2016.06.21 初稿完成. 2016.08.06 增加对 XCode ...

  8. Leetcode 之Validate Binary Search Tree(53)

    判断是否是有效的二叉搜索树,即左子树的值小于根结点,右子树的值大于根结点.可以采用递归的方式来完成,递归时如何 传递有效的参数与根结点进行比较,是此题的难点. bool isValidBST(Tree ...

  9. 第一次学习QT

    跟着大神学:http://www.cnblogs.com/tornadomeet/archive/2012/06/25/2561007.html

  10. 九度 OJ1008 hdu 3790

    #include<stdio.h> #include<string.h> struct node { int d; int p; }g[][]; #define inf 0x3 ...