SOA(面向服务的架构)
Peng's Blog 只记录和技术相关的东西

SOA(面向服务的架构)

2017-07-12
DAL
 

部分内容来自一篇很不错的SOA介绍博客:http://www.infoq.com/cn/articles/micro-soa-1#anch123616

前言

屏幕快照 2017-07-12 下午4.34.21

这是基于pylon抽出来的一个sample的小框架。代码非常的短,截图上显示的是它的main方法。运行这个程序之后,我们在浏览器上输入http://127.0.0.1:8900/app ,此时会出现

屏幕快照 2017-07-12 下午4.39.09

非常神奇。内部的原理可能类似Tomcat。但是这不是重点。重点是这种思想,SOA !!

SOA简介

要搞懂并记住一个缩写,最好的方法就是记住它的全称。SOA全称 service-oriented Architecture,就是面向服务的架构。

要弄懂SOA,最重要的就是要知道它的面向服务的。

SOA的设计原则

著名SOA专家Thomas Erl的归纳:

标准化的服务契约 Standardized service contract 服务的松耦合 Service loose coupling 服务的抽象 Service abstraction 服务的可重用性 Service reusability 服务的自治性 Service autonomy 服务的无状态性 Service statelessness 服务的可发现性 Service discoverability 服务的可组合性 Service composability ….

SOA ≈ 模块化开发 + 分布式计算

面向对象与面向服务的对比

其实你能把SOA与OOP放在一起对比,就说明你已经初步理解SOA了。

面向对象(OO),面向服务(SO)在基础理念上有大量的共通之处,都尽可能的追求抽象、封装和低耦合。

但SO相对于OO,又有着非常不同的应用场景。比如:

1、多数OO接口只被有限的人使用,比如团队的其它程序员等,而SO没有限制。

2、多数OO接口都只在进程内被访问,而SO接口通常都是被远程调用。

简单的说,就是SO接口的使用范围比一般OO接口要广泛很多。

用网站当例子,一个大型网站的web界面就是它整个系统入口点和边界,可能要面对全世界的访问者(所以经常会做国际化之类的工作),而系统内部传统的OO接口和程序则被隐藏在web界面之后,只被内部较小范围使用。而理想的SO接口和web界面一样,也是变成系统入口和边界,可能要对全世界开发者开放,因此SO在设计开发之中与OO相比其实会有很多不同。

总结

面向服务的架构,使用范围广,便于理解和管理,方便人们使用。现在很多大的公司都在向SOA靠拢,现在我实习的这个公司还有专门的SOA相关的部门,值得深入学习。


Comments

评论功能暂停使用,如需跟作者讨论请联系底部的GitHub