SOA的概念大概大多数人都能理解,概括的说就是一个总线上用标准插件的方式去实现业务的脱耦。
道理是这样,实际做起来就没这么简单了,总线的接口如何定义才能满足今后业务功能扩展的需要?用什么样的技术才能在性能和开发效率间获得平衡? 怎样才是主流的实现方法,.Net的方案获是java的方案?
总之,当SOA这个香饽饽放在大家面前的时候,怎么去吃就有讲究了? 用刀用叉还是用筷子?
现在虽然已经有了些SOA的成功案例,IBM、MS也在大力推广,但离产生比较通用的最佳实践还有一段路要走。
总之,当SOA这个香饽饽放在大家面前的时候,怎么去吃就有讲究了? 用刀用叉还是用筷子?
现在虽然已经有了些SOA的成功案例,IBM、MS也在大力推广,但离产生比较通用的最佳实践还有一段路要走。
recher老师的这个观点我特别赞成,SOA - WebService - SOAP/WSDL - XML 之间是手段(方法)级别的联系.
而SOA抽象成了流程.
>>SOA概念提出,实际是把EJB再搞大,大到跨平台
banq老师的这个观点我也特别赞成, 我也认为SOA概念提出,实际是把EJB再搞大. 或把类似EJB的东西再搞大.
这是对的,我之前说过SOA是将EJB搞大,事实上,如果你使用EJB架构,你的Session Bean就可能是一种服务,EJB本身就是一种服务驱动的架构。所以以前如果使用了EJB,现在使用SOA整合就很方便。
如果以前不使用EJB,使用普通JavaBeans,那么就要注意使用服务驱动的架构了,这方面后来Spring包括Jdon框架都是一种服务驱动的架构,所以,说白了,你的系统要将来融合到SOA的未来,现在起就必须使用上述两者开发架构开发你的系统。
SOA原理是非常不同于面向对象的,主要区别是在服务之间的交互是用接口定义的,注意这个接口和面向对象的接口概念是不同的,这个接口更多是面向数据(或者说基于数据),而不是象OO接口那样是基于行为(OO中的接口基本都是行为动作,无数据的)。
一个服务是可以被使用面向对象的概念和技术开发实现的,但是,请注意,服务之间的交互就很少使用OO的这些技术了,更多的是基于一种文本数据交换技术。
面向对象技术将行为绑定到数据,而SOA则是将数据从行为中解耦出来。可见在通往解耦的终极目标上,OO只是一条道路,SOA也是一条道路,可以互相补充,克服彼此缺点。
看来banq大哥还是比较着重实现的层面,实际上我们目前碰到的首要问题是分析原来的系统并定义其服务,怎样把它们整理出清晰的架构出来,并逐步向SOA过渡.毕竟,对于大部分公司,完全从头开发现有的系统是很不现实的,而如何改造,改造到什么程度则需要权衡多个方面.
>耦合关系发生在runtime动态关系转变?
怎样理解?
谢谢!^_^
面向对象解决了第一个耦合对象间的耦合,现在大家正从不同方向攻克数据和抽象的耦合,SOA也是这个方面的努力;
在J2EE开发方面也有这种努力:J2EE已经可以清晰地划分为表现层/业务层和持久层,持久层不用说了,元数据是为runtime转变做准备的;业务层的Ioc/AOP也是进行这方面的攻克,Decorator模式结合Ioc模式实现runtime结合;AOP则更干脆;表现层象AJAX这样的客户端界面东东也参与进来,把界面数据从流程中抽象出来。
随便谈谈。
说那么多没用, 直接搞个例子不就得了.
pipeline 3.1.0 已经发布
查看演示程序: http://code.google.com/p/ether-anima-pipeline/wiki/Demo_3_1_0
有什么建议直接告诉我
msn: isuifengi@hotmail.com