曾经想努力搞懂啥叫SOA,因为某著名杂志曾写到21世纪不懂SOA的软件开发人员无法生存。结果,我真的太肤浅,看来看去,技术上的东西就那几种,也远远达不到各方所宣传的效果,只是对原有的经验的一个总结和标准化。所以,看上去的SOA就什么都是,它是一种架构,是一种解决了N多问题的方案,一种设计理念,一种软件的构建方法,它,还可以是一种或多种产品……
还别说,架构、方案,让一群不太懂技术的经理们信以为真,于是,赶快跟上。所谓的理念、设计之类的名词也把一群软件开发人员忽悠了,好久不来JE,发现一个SOA的帖子只因为你不懂SOA,我本以为可以解除我的困惑,结果楼主高屋建瓴之后来了段代码:
public class CalculatorService { private AddService addService; @Reference public void setAddService(AddService addService) { this.addService = addService; } public double add(double n1, double n2) { return addService.add(n1, n2); } }
并且说到:那么,addService.add(n1, n2)是什么调用?在SCA的架构体系下:
- 他可以是简单的java调用——你能方便而快速的做JUnit Test.
- 他可以也可是复杂一点的EJB调用——事务,分布式,Cache等你所想要的企业级特性的支持
- 他还可以是复杂一点的Web Service调用,具体提供这个add服务的也许是一个.Net程序,又或者是一个八百年前的老系统已有的服务。。。。
是的,他可以做最复杂的事情,但也是最简单的POJO。对于开发者来说,只用关心他的业务,其它的一切都可以忽略。
你看出什么来没有,这代码似曾相识啊,这就是一标准的策略模式的实现。不要一提设计模式就露出一副鄙视的样子,好吧,这不是Spring里多年前的IOC啊、DI啊啥的?你看,这还真能忽悠。(这也挺搞的,以前很多人搞设计模式,结果自己把自己忽悠了。现在搞SOA,又有人把自己忽悠了,而且被设计模式给忽悠了)
SOA,至少是现在我自己了解到的SOA,就是个把各种东西揉在一起,换个马甲,然后开始卖概念,顺便把产品也送出去。这也不要技术人员懂,就是卖给IT经理之类的(记得是O6z大叔这么说的?)。从技术的角度提出,然后让技术人员看不懂,却给不搞具体技术的人看,然后得出某种极其先进、深不可测、变幻万千的结论,真是……
上次某厂商来成都时我专门去听了,我承认浪费了半天时间。其中有个印象比较深刻的:
提到这个厂商能做到与IBM、BEA之流一起制定标准,实属不易。但人家也从不亲口提民族产业,人家只说合作。到最后不知道是有人被忽悠了还是咋的,在提问时说道:以后SOA会分为微软阵营和其他厂商阵营,还举例使用WCF的例子,说这就被绑定了,用WCF就被绑上微软了。微软自然是人人喊打的,于是最终演变为一场支持国产软件的活动,为民族软件而自豪,这是有人亲自发短信,在现场的短信大屏幕上出现的。我问道:用那啥SOS就不绑定了吗?无解。
我问那个Component是怎么划分的粒度,我想看看这和普通的软件开发流程有啥区别,如何应对变化。得,最后演示了个画图生成代码的高级工具,但没看出太多实质的东西,发生变化就得重新画图,复杂的流程估计那图得成蜘蛛网了,比代码看起还累。不过效果倒是很震撼。看:只懂业务也能写软件了,正符合被忽悠人群的需要。这东西,本来就一高级代码生成器+文档、流程管理(据说这一点还算不错),扯上SOA,值钱了,也好卖了,一份抵过去五份。我并非想批判人家的产品,只是想让大家看看这现实中的SOA是怎么回事。
一时兴起,言辞太偏激,本来想作为回帖的,但还是贴到个人博客上比较好,好久没打这么多字了,正好凑一篇。:)
到处写blog真是累,幸好有windows live writer和一堆插件,微软的window-live总算做出个有用的东西……

发表评论
允许部分 HTML 代码:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>