SOA(Service-Oriented Architecture),中文全称:面向服务的架构。

SOA让把系统分离成不同的服务,使用接口来进行数据交互,终于达到整合系统的目的。

专业的词总是让人懵懵懂懂,看起来高大上。但就是不知道在BB什么.... 我们换种讲法。

非常多开发者,做系统的时候是这样合作的:

小明负责【考勤】,小王负责【薪资】。

小王说: 小明,我要用【考勤】数据,你做好了没?

小明说: 早做好了,表名叫Attenance, 字段A代表员工ID。字段B代表....自己去数据库查。

相信非常多人看到这样的情景非常熟悉。 数据交互全然通过数据库,模块件没有全然分离,错综复杂!

用不了多久,你的系统就成了一碗美味的“意大利面”

要说明一下。这样的开发方式不符合SOA的理念,那么SOA是怎样处理的呢?

1.考勤作为单独模块,成为一个考勤服务。公布了一个考勤数据接口(WebServices)

2.小王须要使用考勤数据,调用考勤服务的接口就可以

SOA是模块分离,模块间要进行数据交互。通过接口来完毕。

非常多程序猿看了预计会不屑一顾,我们从不SOA,也过了这么多年,并没有什么问题!看起来SOA并没有什么卵用!

假设你这样想。我们来看看接下来这些需求,要怎样应付。

1. 平台越来越庞大,有10几个开发者都要用你负责模块的数据。

假设没有统一接口,你要同全部人讲你的数据库结构。一旦变更。你还要通知全部人

2. 系统执行越来越慢,老板说分离【考勤】和【薪资】使用不同的数据库和server

因为功能间没有严格分离。数据交互也是直接通过数据库。分拆系统基本不可能,所以也就无从谈论分开部署

wx_fmt=jpeg" alt="" style="max-width:100%; height:auto!important">

3. 客户的其它系统须要调用平台的数据进行计算。你还要开放数据库结构吗?

功能没有严格分离,当系统发展到一定层次。开发就会感觉越来越吃力。往往牵一发而动全身。也不符合软件设计原则!

可是假设你的系统本身就非常小,一周就搞定了!要实行SOA,搭建个架构花费了一个月。这就得不偿失了!

是否实行SOA,是要依据平台的定位去调整的!假设你的平台定位不高,强制实行SOA,就好比高射炮打蚊子,不仅浪费炮,还TMD打不到蚊子!所以不要“过度设计”,“恰如其分”非常重要。

wx_fmt=jpeg" alt="" style="max-width:100%; height:auto!important">

到这里,大家都已经懂得SOA的主要思想:严格分离模块。通过接口来链接。那么,怎样链接呢?

上面我讲的WebServices是一种经常使用的链接方式。

除了WebServices还有。ESB,JMS,以及近期几年大热的REST方式。

详细的链接方式,我们就不多讲了。有兴趣能够去查百度百科。

wxfmt=jpeg" alt="" style="max-width:100%; height:auto!important">

SOA究竟是个啥的更多相关文章

  1. java学习笔记-基础篇

    Java基础篇 1—12 常识 13 this关键字 14参数传递 16 继承 17 访问权限 28—31异常 1—12 常识 1.文件夹以列表展示,显示扩展名,在地址栏显示全路径 2.javac编译 ...

  2. 由面试引发的思考:B/S与C/S究竟是何物

    一.现状说明: 就在这金三银四的求职黄金时期,我有幸作为公司的独立技术面试官,拥有最终决定录用权,在倍受上级领导的充分信任下,我也向上级保证,一定要为公司找到合适的人才,就在我满怀信心的情况下面试了一 ...

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

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

  4. WebService究竟是什么?

    一.序言 大家或多或少都听过WebService(Web服务),有一段时间非常多计算机期刊.书籍和站点都大肆的提及和宣传WebService技术,当中不乏非常多吹嘘和做广告的成分.可是不得不承认的是W ...

  5. SOA是什么

    一.SOA是什么   SOA的全称是Service-Oriented Architecture,面向服务架构.是一种架构,不是一种具体的开发技术.   要真正理解什么是SOA需要从软件开发的技术发展史 ...

  6. 了解SOA是什么!

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

  7. 深入解读ESB与SOA的关系

    时至今日,SOA的概念渐渐清晰了.   有关ESB的概念,已经吵了好多年了,还是没有定论. 我个人认为,ESB本来就是抽象的概念,而且内涵丰富,在不同的场合含义不同.因此应该从不同的角度来认识.   ...

  8. ESB与SOA的关系

    ESB与SOA的关系 一.SOA和ESB一直是没有明确概念的两个缩略词 SOA----面向服务架构,实际上强调的是软件的一种架构,一种支撑软件运行的相对稳定的结构,表面含义如此,其实SOA是一种通过服 ...

  9. 透析SOA、RPC、SOAP、REST、ICE、ESB模型发展史

    最初的程序全是单机程序,没有网络,没有RPC,更没有RESTful.程序猿写的东西孤独运行在单机上. 那时的程序猿们语言相通,参与开发同一套系统的团队可以面对面沟通. 网络出现了.网络,也带来变乱.网 ...

随机推荐

  1. 诊断Java中的内存泄露

    每次我怀疑有内存泄漏时,我都要翻箱倒柜找这些命令.所以,这里总结一下以备后用: 首先,我用下面的命令监视进程: 1 while ( sleep 1 ) ; do ps -p $PID -o %cpu, ...

  2. CSS 如何让li横向居中显示

    先给一个简单的示例HTML代码 <body> <form id="form1" runat="server"> <div id=& ...

  3. MFC_2.3 定时器、滑块、进度条控件

    定时器.滑块.进度条控件 1.拖控件 2.绑定变量.默认,然后取名字 3.初始化设置定时器 // 设置滑块和进度条的范围 m_TrackBar.SetRange(0, 1000); m_StaticP ...

  4. 12Microsoft SQL Server 索引

    Microsoft SQL Server 索引 8.1创建索引 CREATE INDEX idx_name ON table_name(列名) --创建非聚集索引 use student go cre ...

  5. UVA - 12589 Learning Vector(dp-01背包)

    题目: 思路: dp[j][h]表示选取了j个向量,且高度为h,利用01背包来解决问题. 没选当前的向量:dp[j][h] = dp[j][h]; 选了当前的向量:dp[j][h] = dp[j-1] ...

  6. <MyBatis>入门八 工作原理

    1.获取sqlSessionFactory对象 首先拿到全局配置文件的流对象 创建SqlSessionFactoryBuilder对象,并调用build方法,把流传进去 build方法 创建一个XML ...

  7. springcloud中feign接值问题

    很多时候使用feign都接收不到传过来的数据,一般情况如下! 如果是基本数据类型的话,使用@RequestParam @RequestMapping(value = "/selectDeta ...

  8. LINUX-初始化一个文件系统

    mkfs /dev/hda1 在hda1分区创建一个文件系统 mke2fs /dev/hda1 在hda1分区创建一个linux ext2的文件系统 mke2fs -j /dev/hda1 在hda1 ...

  9. Python条件控制语句

    条件控制语句 if语句 if条件加表达式 if-else语句 if-elif-else语句 if 表达式1: 语句1 elif 表达式2: 语句2 elif 表达式3: 语句3 else: 语句e 逻 ...

  10. python 基础知识及运算符

    可变类型:列表.字典 不可变类型:整形.字符串.元组 标示符: 1.字母数字和下划线组成 2.不能以数字开头 3.区分大小写 4.不能以保留字命名 变量: 1.用描述性的单词命名变量,不要用保留字.汉 ...