首先在“我对SOA的认识(二)<http://www.blogjava.net/crazycy/archive/2006/05/24/47799.html>”中提到了方法论的问题:
*******************************我对SOA的认识(二)**文始************************************************************
对于方法论,查了一下大概阐述如下:方法论是一套完整的实践引导体系,是指导实践的理论基础,是人们在长期社会实践中总结和摸索出来的,符合客观发展规律的,符合人们对研究对象进行科学分析与判断的社会实践进程或步骤。方法是实践的成果,如同瓜熟蒂落,实践积累达到一定程度,必然会提出方法。
阅读周爱民先生的《大道至简 — 软件工程实践者的思想》时,其对方法、方法论也有阐述,摘录如下:
++++++++++++++++++++++++++++++++++++++++《大道至简 — 软件工程实践者的思想》++文++++++++++++++++++++++++++++++++
3. 方法
推动这种逻辑向前发展的,是 “ 方法 ” 和 “ 方法论 ” 的出现。长期的编程实践,自然的归演与总结,必须沉淀为某种 ( 软件开发 ) 方法,于是 “ 过程 ” 出现了,于是 “ 对象 ” 出现了,于是相关的方法论也就出现了。
这是实践的成果。方法不是某个人或者某个组织创造的。瓜熟而蒂落,实践积累达到一定的程度,微软不提出某个方法, IBM 也会提出这个方法。即便他们都不提出,可能你自己已经在使用这个方法了。
方法并不神秘,因为它就是你今天正在做的、从事的和实现的。正如 “ 模式 ” 是一种方法,而模式就是你昨天书写代码的那个行为。只不过, GoF 归纳、抽取、提升了这些行为的内在规律。
你看不到你做事的行为,也就不能理解 “ 模式 ” 作为一种方法的价值。所以大师们众口一词:模式需要一定的编程经验才能理解。
同理,理解过程也需要编程经验,理解对象也需要编程经验,理解 MDA 与 SOA 还是需要编程经验。
—— 这可能就发生在你去回顾你上一行代码编写的经过,或者上一个项目失败的经历的那一瞬息。经验来源于回顾、理解与分析,而不是你将要写的下一行代码。
有人在寺院扫了一辈子的落叶而得道,也有人因为一句话而得道。
GoF 因为无数次的代码回顾而得道。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
同样在业界,任何一种技术或者架构的产生,都是历史潮流的产物, SOA 概念的提出也是业界面临的新问题的解决过程,尤其表现为不同语言开发的组件的相互调用,大型系统与大型系统的连接问题。
正是伴随着软件系统发展的需求,催生了SOA的诞生。这也导致SOA的核心就是将多个系统连接和整合起来,达到大集成的目的。
这种思想的产业化,就是业界大型公司的服务解决方案,SUN通过收购推出自己的SOA服务并有开元的打算,IBM利用自己的全套软件产品全方位的提出了自己的SOA应用,类似的Oracle、Redhat等或者通过收购或者利用自己的产品线推出了自己的集成方案。WebService(WSDL、SOAP、UDDI)就是SOA体系的一个具体技术解决方案,由于产业界都有共同支持,也就成了SOA下当仁不让的红人,外加各种相关规范的辅助,偏激一点的说,SOA就是思想体系,WebService就是实现技术。
在《我对SOA的认识(一)》中,我提到过对于SOA的概念和理解仁者见仁,当然不排除受这些思想体系产业化后的影响。毕竟企业提供服务是为了更好的生存,而不是“免费的午餐”。
类似OOP、AOP一样,SOA也不是一种产品或者组件,而是一种理念,一种系统设计的理念。SOA体系下提供的是服务,服务和服务间通过端口(Port)等连接在一起,从而从一个全新的角度去观察、设计系统。
*******************************我对SOA的认识(二)**文末*****************************************************************
很明显方法论角度已经论及了SOA的出现的历史需求,是一种切实的需求,而非仅仅是一种炒作,当然存在炒作成份。常听及“旧瓶装新酒”,无可厚非,技术原本就是在原有基础上不断完善直到革命因素的出现。这也是方法论,呵呵。
例证说明:WSDL对WS的描述通过5大标签<types><messages><porttypes><binding><port>;无非就是把一个类的调用方式(方法名、参数、返回值)用XML文档描述而已。
SOA的出现与成熟必然要有它的技术支撑体系,SOA解决了一个互操作、协同业务这样的技术层面的问题。
a) 互操作:可以理解成把语言级的接口---〉XML通用标准下的WSDL;
b) RMI的远程调用----〉XML和XSD辅助下的SOAP;
c) 协同业务---〉ESB、BPEL、UDDI来完成;服务发布于UDDI,业务流程的编排通过BPEL来组合服务,运行时服务的定位路由和交互由ESB完成。
d) 服务的具体实现,即应用程序的不同功能单元的联系(接口、参数/约定)---〉SCA、SDO技术
厂商关注的则是其产品体系和在业界的影响,对SOA进行一定的炒作自然情理之中,但简化SOA的开发、普及SOA应用、解决SOA基础设施,这些产品应该说功不可没。
综上分析,可得出,提到SOA时,首先最重要的是其思想方法论,其次才是技术和产品,应该说SOA是方法论+产品+技术的综合体。