SOA究竟是个啥
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究竟是个啥的更多相关文章
- java学习笔记-基础篇
Java基础篇 1—12 常识 13 this关键字 14参数传递 16 继承 17 访问权限 28—31异常 1—12 常识 1.文件夹以列表展示,显示扩展名,在地址栏显示全路径 2.javac编译 ...
- 由面试引发的思考:B/S与C/S究竟是何物
一.现状说明: 就在这金三银四的求职黄金时期,我有幸作为公司的独立技术面试官,拥有最终决定录用权,在倍受上级领导的充分信任下,我也向上级保证,一定要为公司找到合适的人才,就在我满怀信心的情况下面试了一 ...
- SOA 面向服务的体系结构
SOA:面向服务的体系结构(service-oriented architecture) 是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来. 接口是采 ...
- WebService究竟是什么?
一.序言 大家或多或少都听过WebService(Web服务),有一段时间非常多计算机期刊.书籍和站点都大肆的提及和宣传WebService技术,当中不乏非常多吹嘘和做广告的成分.可是不得不承认的是W ...
- SOA是什么
一.SOA是什么 SOA的全称是Service-Oriented Architecture,面向服务架构.是一种架构,不是一种具体的开发技术. 要真正理解什么是SOA需要从软件开发的技术发展史 ...
- 了解SOA是什么!
面向服务架构 面向服务的体系结构(service-oriented architecture,SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来 ...
- 深入解读ESB与SOA的关系
时至今日,SOA的概念渐渐清晰了. 有关ESB的概念,已经吵了好多年了,还是没有定论. 我个人认为,ESB本来就是抽象的概念,而且内涵丰富,在不同的场合含义不同.因此应该从不同的角度来认识. ...
- ESB与SOA的关系
ESB与SOA的关系 一.SOA和ESB一直是没有明确概念的两个缩略词 SOA----面向服务架构,实际上强调的是软件的一种架构,一种支撑软件运行的相对稳定的结构,表面含义如此,其实SOA是一种通过服 ...
- 透析SOA、RPC、SOAP、REST、ICE、ESB模型发展史
最初的程序全是单机程序,没有网络,没有RPC,更没有RESTful.程序猿写的东西孤独运行在单机上. 那时的程序猿们语言相通,参与开发同一套系统的团队可以面对面沟通. 网络出现了.网络,也带来变乱.网 ...
随机推荐
- 【译】x86程序员手册30-8.2 I/O指令
8.2 I/O Instructions I/O指令 The I/O instructions of the 80386 provide access to the processor's I/O p ...
- dubbo之服务容器
服务容器是一个standalone的启动程序,因为后台服务不需要Tomcat或JBoss等Web容器的功能,如果硬要用Web容器去加载服务提供方,增加复杂性,也浪费资源. 服务容器只是一个简单的Mai ...
- 扩增子分析解读5物种注释 OTU表操作
本节课程,需要先完成<扩增子分析解读>系列之前的操作 1质控 实验设计 双端序列合并 2提取barcode 质控及样品拆分 切除扩增引物 3格式转换 去冗余 聚类 4去嵌合体 非细菌序列 ...
- token机制完成登录状态保持/身份认证
一般APP都是刚安装后,第一次启动时需要登录(提示你需要登录或者直接启动在登录界面).而只要登录成功后,以后每次启动时都是登录状态,不需要每次启动时再次登录.不过,也有些APP若你长期未启动,再次启动 ...
- JAVA学习笔记16——线程的创建和启动
Java使用Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例.每个线程的作用是完成一定的任务,实际上就是执行一段程序流(一段顺序执行的代码).Java使用线程执行体来代表这段 ...
- 代码分析工具splint安装介绍
官网 http://www.splint.org/ splint能干什么? splint是一个静态检查C语言代码安全弱点和编写错误的开源程序.(不支持C++) splint会进行多种常规检查,包括 空 ...
- 转载:tomcat实现热部署的配置
tomcat实现热部署的配置 我们实现热部署后,自然就可以通过maven操作tomcat了,所以就需要maven取得操作tomcat的权限,现在这一步就是配置tomcat的可操作权限. 进入tom ...
- BZOJ 1782 洛谷 2982 [Usaco2010 Feb]slowdown 慢慢游
[题解] 一头牛走到i,相当于把i点的子树的点权都加1,查询减慢的次数就是查询目的地的点权. 预处理dfs序,某个点的子树的dfs序是连续的一段.差分后用树状数组维护,变成点修区查.或者直接线段树区修 ...
- String replaceAll 正则注意事项及特殊用法(xjl456852原创)
我们知道String replaceAll(参数a, 参数b) 参数a是需要些正则表达式的. 但是今天试了试,发现参数b也有一些其它特性. 查看源码后,发现有些特性是平时不怎么用的.下面我来介绍一下这 ...
- 【03】json使用
[03]json使用 把 JSON 文本转换为 JavaScript 对象 JSON 最常见的用法之一,是从 web 服务器上读取 JSON 数据(作为文件或作为 HttpRequest),将 J ...