本期的BIJ上面的一片文章闡述了SOA和ESB的區別,讓我很感興趣。原來看這兩個技術的時候都是從技術層面上看,而沒有從使用者的層面上看。
SOA和傳統開發的最大區別:
傳統的B/S或者C/S的開發是橫向的,表現層,業務層,數據層是彼此獨立,分開來開發,並且各自部署在各自的服務器上的。在這種橫向架構中,一個項目不管有多少客戶,必須由一個公司,或多個公司遵守相同的組件規則來完成開發。
而SOA提出的概念是縱向概念。每一個服務都是一個獨立部署的單元,可以完全由獨立單位開發。部署在獨立服務器上,不管底層如何實現,只要最後使用WSDL的接口,可以被調用就行了。例如下訂單服務,和信用檢查服務,可以是完全獨立的服務。由不同單位開發,並且在任何程序中可以公用。
所以SOA是抽象的服務,它是直接面對客戶的。
ESB實際上更象是企業消息總線。它是面向開發者的,因爲讓客戶理解總線很困難。
就像一個電腦,從客戶的角度理解,它的功能有開機,運行操作系統。而內部的總線怎麼傳遞,用戶不需要知道,只有開發人員需要知道。
因此,使用SOA可以
1 直接用BPEL編織SOA,用戶用自己的圖形編輯器定義業務流程。客戶更容易理解。
2 使用ESB,當所有服務都在總線上時候,服務調用實際上是一種消息調用。客戶不易理解,是面向開發者統一消息服務接口的方法。
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=612788