松耦合(Loose coupling)笔记
很多年前看过的一本书,有过这么一句话(大意):很多复杂问题的解决都是通过增加中间层来实现的。
比如:应用系统最早是两层架构,数据库的负载往往会很大,通过增加应用服务器来分摊数据库层的压力;
系统集成,点对点的对接,系统间相互的依赖性太大,增加一个中间层(ESB,企业服务总线)实现松耦合性。
开发语言上,想让对象与对象间松耦合,通过增加抽象类(Abstract Class)或者接口来做到。
------------------------------------------------------------------------------------------------------------------------------------------------------------------
松耦合的目标是最小化依赖。松耦合这个概念主要用来处理可伸缩性、灵活性和容错这些需求。
SOA应用于大型分布式系统。对于这样的系统来说,可伸缩性和容错性是可维护性的关键。另一个重要的目标是:最小化修改、故障对系统在整体上的影响。所以,松耦合就成了SOA的关键概念。
松耦合要付出使系统更加复杂的代价。松耦合意味着更多的开发以及维护工作量。
紧耦合 vs 松耦合
一个例子:A系统作为服务提供方,与B1,B2,B3....Bx等服务消费方系统对接,使用紧耦合点对点的方式来系统集成,那么假如A系统如果更改了地址,那么B1,B2,B3...Bx系统都需要求相应的请求地址。说明系统和系统间严重依赖。
要实现松耦合,通常的做法就是引入Mediator(中间层,也有翻译成中介者),在SOA中,这个中间层通常指的就是ESB(企业服务总线)。
Web Service在技术上是点对点的连接,在此你通常使用中间人来找到请求的物理端点,在运行时把请求路由到服务供应方。
松耦合(Loose coupling)笔记相关推荐
- java中强耦合是什么意思_什么是oop中的松耦合和紧耦合(java)
我对java中的松散耦合和紧密耦合有一些困惑.因为我知道松散耦合意味着彼此之间的信息最少,而紧密耦合意味着依赖关系.因为我们知道松散耦合可以通过接口实现和继承实现紧密耦合. 例如: 1)A(接口) 2 ...
- 与应用程序松耦合的报表开发组织
在软件项目中,报表模块经历了一个和其他模块从紧耦合到松耦合的发展过程. 早期的报表,和软件项目的其他功能模块一样,都是由同样的开发工具和语言编写的.从PB.Delphi到asp.php,再到目前的C# ...
- 松耦合和紧耦合的架构设计、性能对比
在最近的一次大数据技术讨论会上,有一家公司的技术高管谈到松耦合和紧耦合的性能表现的话题.正好Laxcus大数据管理系统的设计,从0.x.1.x到2.x版本,也经历了从紧耦合到松耦合的发展过程.做为亲历 ...
- Spring松耦合的个人理解和代码实例
Spring松耦合的个人理解和代码实例 理解Spring的松耦合概念,那么我们先来看看一个不使用Sring的实例代码 先看一下整个测试项目案例的结构 正常方式 创建一个接口,这个接口指定车辆的行驶速度 ...
- Spring松耦合的实现
HelloShiyanlou 与松耦合的实现 一.实验介绍 1.1 实验内容 本节实验将带你入门简单的 Maven 项目创建和如何实现松耦合. 1.2 实验知识点 Maven 介绍 Spring 松耦 ...
- 使用RabbitMQ实现松耦合设计
我们把三种交换器讲解完毕了,我们再来看一下,如果使用RabbitMQ,实现松耦合设计,要讲松耦合,我们得先回到就是为什么要使用RabbitMQ,解决什么问题,在这章节当中呢,分别给大家介绍了一下,我们 ...
- 微服务 松耦合_超值干货:微服务架构下如何解耦,对于已经紧耦合下如何重构?...
今天准备谈下微服务架构下各个微服务间如何解耦,以及对于已经紧耦合的微服务如何进行重构.要明白实际上微服务后续出现的诸多问题往往都是一开始微服务模块划分就不合理导致,对于具体的模块划分方法和原则,我总结 ...
- MEF实现设计上的“松耦合”(一)
1.什么是MEF 先来看msdn上面的解释:MEF(Managed Extensibility Framework)是一个用于创建可扩展的轻型应用程序的库. 应用程序开发人员可利用该库发现并使用扩展, ...
- python-day19-面向对象进阶-加载顺序,命名空间,组合(实现松耦合)
今日大纲 1.类的加载顺序 2.类和对象的命名空间 3.组合 1.类的加载顺序 加载顺序: 类中从上至下写入内存,遇到方法只加载进内存中,方法不会执行,最后类名指向这个类的内存空间地址. 2.类和对象 ...
最新文章
- ECNUOJ 2144 抗震机械制造
- spark性能优化 -- spark工作原理
- 接口入参形式_花椒测试平台 接口篇
- 前端学习(2421):项目反馈
- Android标签库,JSP Struts之HTML标签库详解 _Android/移动互联网/物联网/_夜鹰教程网...
- 全局变量局部变量ScriptCase中的全局变量、局部变量
- 手把手教你编写接口需求文档
- 最长公共子序列算法 java_转【算法之动态规划(三)】动态规划算法之:最长公共子序列 最长公共子串(LCS)字符串相似度算法...
- php对象在内存中的分配
- MovieLens推荐系统数据集官方文档+解释
- 证件照换底(红→蓝)
- 实现jquery双击图片放大
- 物联网让生活更加轻松的五种方式
- Vue3定义全局变量/方法
- Spring中的IOC介绍
- C/C++ 学习笔记:结构体中最后一个成员为[0]或[1]长度数组(柔性数组成员)的用法
- Hexo中添加音乐(列表)、视频的代码
- oracle动态菜单,本地动态SQL(Open for等)如何获取SQL的定义属性,包括栏位名称和数据类型...
- 训练Cityscapes
- 加入2b2t服务器显示过期,我的世界:2B2T服务器罪魁祸首是他,为一己之私毁掉了整个服务器...
热门文章
- Qt使用QCustomPlot画坐标图教程
- 德累斯顿工业大学计算机学院,德累斯顿工业大学
- 【网盘项目日志】Seafile 源码部署和安装命令
- excel表格末尾添加一行_Excel表格制作在添加数据之后可以自动更新的汇总表
- java 统计文本中出现概率最高的10个字符串!!
- 阿里云oss搭建图床以及使用PicGO上传图片到图床
- 同时使用两片I2C同型号设备时地址怎样设置 (如何更改器件地址)
- Appium+Python MAC安装Android夜神模拟器(二)
- 十年带队经验,万字长文分享:如何管理好一个程序员团队?
- 逍遥模拟器连接不到android,逍遥模拟器不能连上网怎么办?两招解决问题