首先在“我對SOA的認識(二)<http://www.tkk7.com/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是方法論+產品+技術的綜合體。