(以下内容为个人理解,可能不够全面和准确)

SOA (service-oriented architecture),面向服务的架构

啥是SOA?网上的解释,玄而又玄。俺说点人话,也许不准确,但现阶段我就是酱紫理解的:SOA就是搞一个独立的系统,对外提供服务。其他系统有相同的需求,无须再开发,就调用它的服务即可。

一、SOA的优点

1、显而易见,一些功能部署成公用服务,利于重用

2、由于其他系统与服务之间松散耦合,可提高伸缩性

3、公用服务,集中自成一系统,利于维护

4、服务集中部署,利于减轻其他系统压力,提高性能

二、SOA的缺点

1、安全性问题复杂

服务与调用系统不在同一系统,解决安全性问题较为复杂。可以使用单点登录,oAuth2,或者证书什么的,复杂得很。

2、使用复杂

如何调用这些服务?web api还好,webservice、wcf、或者rpc(远程过程调用)之类,我觉得很费周折。

3、性能问题

上面的优点说,服务集中部署,可提高性能,但这是对整个系统层面来说的;如果单就调用一次服务,我觉得横跨两个子系统,有网络,有接口,速度要比同一系统内打上折扣。比如说,webservice,又是soap,又是xml,传递大的数据,肯定慢死了。rpc还好一点。

4、稳定性问题

本来一个系统,硬是拆成了2个,这其中接口、路径就多了,风险点也增加了。一个环节出问题,系统就得瘫痪。

三、SOA适用场景

适用于不同且异构的系统,或分布式系统之间共用相同的服务。不同且异构的意思是,首先是两个系统,然后它们是不同语言开发,且没有共享数据库。

四、SOA不适用场景

如果是同构系统,比如相同语言开发,那么将服务编译成dll,分别调用即可。或者数据库是大家共用,一般也可以直接读取,无须搞什么服务。

五、SOA种类

1、以前的什么corba,dcom就不说了

2、webservice

(使用比较简便)

3、wcf

(麻烦得很)

4、rpc

5、web api(最好是符合Restful原则)

=========================================

六、SOA的衍生品:EDA(Event-Driven SOA, 事件驱动的SOA)。

参考资料:

EDA 和 SOA 的融合以及实践

最新文章

  1. Angular2学习笔记——在子组件中拿到路由参数
  2. 关于学习angularJS 的一些心得
  3. HDU4930 Fighting the Landlords 模拟
  4. Android颜色资源文件
  5. BZOJ1767 : [Ceoi2009]harbingers
  6. Android开发之计算器(一)界面设计
  7. SQL 有父标识的 递归查询
  8. C 语言 printf格式控制详解
  9. Go as continuous delivery tool for .NET
  10. My Vim配置
  11. Gatling - 用 session 实现关联 传递 token 值
  12. tsc.exe 已退出 代码为 1
  13. 20175324 《Java程序设计》第4周学习总结
  14. Jackson Gson Json.simple 比较
  15. [py]django强悍的数据库接口(QuerySet API)-增删改查
  16. bean-json-bean-json 工具
  17. Python初学者第二十二天 函数进阶(1)
  18. matplotlib基础整理
  19. Windows 7/8/10 系统下Laravel框架的开发环境安装及部署详解(Vagrant + Homestead)
  20. LeetCode: solveSudoku 解题报告

热门文章

  1. xenserver tools 安装
  2. 如何用纯 CSS 绘制一颗闪闪发光的璀璨钻石
  3. logging ,re 模块
  4. python-----定制群发微信消息
  5. 关于在views对models创建的表的简单操作
  6. AnjularJs-Select添加数据并设置默认值
  7. luogu4093 [HEOI2016/TJOI2016]序列
  8. CI 安装时目录的安全处理
  9. <转>C#中线程的学习
  10. [Bzoj4817] [Sdoi2017]树点涂色 (LCT神题)