前段时间老夏给我们布置了学习SOA的作业,现在来顺便跟大家share share。
- 关于SOA的含义
(摘抄自百度百科:http://baike.baidu.com/view/21305.htm)
面向服务的体系结构(Service-Oriented Architecture,SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种这样的系统中的服务可以一种统一和通用的方式进行交互。这种具有中立的接口定义(没有强制绑定到特定的实现上)的特征称为服务之间的松耦合。松耦合系统的好处有两点,一点是它的灵活性,另一点是,当组成整个应用程序的每个服务的内部结构和实现逐渐地发生改变时,它能够继续存在。而另一方面,紧耦合意味着应用程序的不同组件之间的接口与其功能和结构是紧密相连的,因而当需要对部分或整个应用程序进行某种形式的更改时,它们就显得非常脆弱。
对松耦合的系统的需要来源于业务应用程序需要根据业务的需要变得更加灵活,以适应不断变化的环境,比如经常改变的政策、业务级别、业务重点、合作伙伴关系、行业地位以及其他与业务有关的因素,这些因素甚至会影响业务的性质。我们称能够灵活地适应环境变化的业务为按需(On demand)业务,在按需业务中,一旦需要,就可以对完成或执行任务的方式进行必要的更改。
- My Point of View
关于专业的解释,相关的书和文章网络上有很多,除了介绍概念的书,另一派是讲如何应用的,小晶就确实看不太懂了,因此主要是看了看关于SOA的一些概念性的描述。
小晶从各类书中总结了一些易懂的语言来描述几个概念,这里跟大家分享分享,欢迎comment。
- 什么是服务?
服务是一件很单纯的事,有些地方把服务与功能、模块、流程混淆在一起,那他们绝对没有弄明白SOA,因为这是其oriented的基础——Service。提供给被服务人的这件单纯的事,就是服务,他们并不需要知道提供服务的人为了这件事做了哪些努力,经历了千山万水,这些都与“服务”二字无关。
例如,走进Mcdonald’s的我们,打开门走到柜台前对服务人员说了句“来个巨无霸”,然后10秒以后,巨无霸到手,钱交出,这笔交易就完成了,其为我们提供的服务也就完成了。这就是服务。而Mc为了这个汉堡包请了多少个清洁员工打扫卫生,进了多少片牛肉,为了降低cheese的成本谈判了多少次,都与想吃巨无霸的单纯的我们无关。
一句话:Service is a pure thing.
- 什么是松耦合、紧耦合?
研究这个的过程中看到了很帅的这两个词语,说帅,其实也是想说这又是一个“愚化”事件。就如博弈论其实只是Game Theory一样,偏偏被冠上个看似深奥的博弈论之名,似乎不弄复杂就显不出其研究者的厉害。
其实所谓的松耦合、紧耦合也就是指两者之间的一种关系,紧密程度和相互制约程度低的,就叫“松耦合”,直白一点说就是“灵活关系”,viceversa。
例如,小晶最爱的板烧烤鸡腿堡,如果有一天这个产品下线了(但愿不要),那么其“代价”一定要小,如果下线一个产品要付出巨大的代价,使许多功能和兄弟产品要受到改造牵连,那么其耦合一定是紧密的。
- 什么是SOA?
剥离、定义清楚最单纯的服务对象及服务,在系统设计中充分适当的应用松耦合,让架构基于服务,让系统结构像打包套餐一样灵活又强大。
补充另一位同学非常精辟的总结,4个字:变形金刚。
—————————————————————————————-
好啦,就简单的share到这里吧。越是概念和思想的东西,越是神奇,因为他们总是“看似简单”,但实际上可以很深邃也可以很浅显。。。。哲学问题。。。

