一、SOA是新东西吗?
SOA没有引入任何新发明的概念,它是个把现有概念和实践放到一起,用于特定需求集的范式。
你甚至可以说SOA别的什么都不是,就是将实用主义和头脑风暴运用到分布式系统上而已。
SOA的改进之一可能体现在如下事实上:Web Services(不谈其所有的缺陷)引入了一个互操作性的新标准。
SOA另一个重要的方面是对异质的接受,这一点体现了SOA是一个革命性的方法,不同于我们以前经常看
到的东西。过去,相当多的解决方案都基于同质化想法,然而,只要系统超过一定的规模,同质化就不可能。
同质化也无法伸缩,这意味着任何要求同质化的方法迟早会失败。接受异质化改变了我们设计大型系统的方法,
这个思维方式的转换也许是一小步,但它能产生戏剧性的效果(类似于敏捷编程接受需求不断变更的事实,
而不是力图与这个事实抗争)。
二、SOA增加了复杂性吗?
毫无疑问,分布式处理比非分布式处理更复杂。要处理大型系统和不同的所有者,需要合作和松耦合。
但是,正如已经指出的,所有形式的松耦合都增加复杂性。除此之外,比起所有事情都由中央控制的环境来说,
分布式调试和测试都要求付出更多的努力。
正由于此,SOA自身从来都不应是目的,如果你能避免分布式处理,就尽量避免它。
然而,如果你被要求将业务流程分布到在不同的所有者控制下的系统上,那么,SOA能帮你处理这个难题
所涉及到的复杂性(从而在某种意义上减少了复杂性)
三、SOA关键的成功要素是什么?
如同任何新战略一样,要使SOA成功,有很多重要的方面需要注意。你必须一开始就有恰当的理解、
现实的预期、正确的人选,你还必须努力工作,找出和规划适当的技术和过程。因此,就这个问题而言,
通常的回答是包含如下要素:
1、理解
2、合作
3、管理支持
4、谨慎的引入
5、专研
四、SOA在哪些地方不合适?
你可能有这样的印象或期望:作为分布式流程的解决方案,SOA对不同系统之间任何形式的通信都是
合适的。但是,SOA存在局限性,此粗求有可能过于苛刻,或者SOA引入的额外开销带来的问题可能比
它解决的问题还要多。
数据库复制、海量数据处理和本地客户端尤其不是SOA的强项。你有可能从基于SOA方法的概念和
解决方案中获益,然而,不要忘记,像任何其他概念、技术和范式一样,SOA也不是全能!
要注意的是,该提问的问题从来都不是"某事用SOA是否合适",而应该是"你正在考虑的解决方案都你的问题
和需求是否合适"。
当我们发现分布和松耦合的代价太高之后,可能会退回去使用单个软件。
五、SOA替代了OOP吗?
不管是SOA还是OOP都不比对方强,也无法相互替代。OOP是一个应用程序的"编程"范式,而SOA则是一个
系统的"架构"范式。你只能在一定的规模内控制和管理自己的对象,所以OOP无法伸缩。SOA是用来连接系统的
方法,这些系统用面向对象或其他范式编写。换句话说,除非你只需管理单个程序,否则这两者你都需要。