據國外媒體報道,現在已經出現了一些通過互連網提供SOA服務的需求。美國一家ESB供應商Cape Clear的老闆Dana Gardner曾對媒體談過將SOA、ESB作為一個整合的服務提供的可能性。之後不久,他的公司就通過雲端運算為使用者提供ESB服務。
Dana Gardner說,通過雲端運算提供的SOA工具和平台對於中小企業來說應該有很大的吸引力,因為部署SOA的工程對中小企業來說,需要太多的時間和專業技能,而且還需要後期的維護,讓中小企業感覺負擔太重。所以,通過“雲”提供SOA的服務,應該是不錯的解決辦法。
國外媒體把這一趨勢稱為“SOA gets SaaSy”,我們姑且翻譯成“SOA的SaaS化”,即通過SaaS的模式提供SOA服務。
SOA和SaaS,一度被喻為軟體圈內的大、小S。她們有時被稱作姐妹,有時被看作歡喜冤家,有時看似貌合神離,有時又不得不走到一起。
SOA和SaaS的概念,必須區分開來。SOA和SaaS的結合,可能會成為一種趨勢。SOA在中國,好像還未“SaaS化”。
不要混淆SOA和SaaS 相關概念解析
SOA,Service Oriented ArchITecture,面向服務的架構;SaaS,Software as a Service,軟體即服務。如果把SOA和SaaS稱作一對姐妹,其中的血緣恐怕就是Service,服務。雖然都和服務有關,但內涵大相徑庭。
從業務角度理解SOA,它是針對企業的一些舊的軟體體系重新利用,進行整合,構建一套鬆散耦合的軟體系統,同時也能方便的結合新的軟體共同服務於企業的一個體系。使系統能夠隨著業務的變化更加靈活適用。
從技術角度理解SOA,SOA實際上是系統分析設計思想的進一步發展,它的思想超出了對象的概念,一切都以服務為核心,而服務由組件構成,組件是若干操作的集合,操作對應具體實現的程式函數。服務是通過對業務過程模型的分析而識別出來的。每個服務能夠實現若干功能,這些功能由組件而不是操作來實現。組件是操作的調用集合,是服務功能實現的最小單位,而不是程式實現的最小單位。
在具體實現上,只要能提供服務的技術都可以實現SOA思想,如Web Service、RMI、Remoting、CORBA、JMS、MQ、甚至JSP、SERVLET等,另外還可以通過分散式交易處理和分布式軟體狀態管理來進一步地改善它。但是如果想讓這些服務能夠更廣泛的被使用,或被大家認可,在互連網上發布,那麼就要遵循一定的規則標準了。這一類的標準有SOAP、 Java API for XML-based RPC (JAX-RPC)、WSDL 和 WS-* 規範等等。另外它的實現還需要安全性、策略管理、可靠訊息傳遞以及會計系統的支援。
直觀地理解,可以把SOA看做是模組化地組件,每個模組實現獨立功能,不同的拼合提供不同的服務。利用SOA,把一團亂麻龐大無章的系統規整成一個一個的模組,方便地實現IT的最大利用率,並提高重用度。普元軟體曾拿靈活變換而能夠千變萬化地拼接的樂高玩具做比喻,可見一斑。
說到SOA,不能不說說ESB。ESB是在SOA體繫結構的架構中加入的一個新的軟體對象。這個對象就是企業服務匯流排(Enterprise Service Bus,ESB),它使用許多可能的訊息傳遞通訊協定來負責適當的控制流程甚至還可能是服務之間所有訊息的傳輸。雖然ESB並不是絕對必需的,但它卻是在SOA 中正確管理商務程序至關重要的組件。ESB本身可以是單個引擎,甚至還可以是由許多同級和下級ESB組成的分布式系統,這些 ESB一起工作,以保持SOA系統的運行。在概念上,它是從早期比如訊息佇列和分散式交易計算這些電腦科學概念所建立的儲存轉寄機制發展而來的。
與SOA相關的,還有SCA與SOD。隨著服務導向架構不斷髮展和成熟,開發人員和架構師將面臨不斷增多的編程介面、傳輸協議、資料來源和其他細節內容。服務元件體繫結構(SCA)和服務資料對象(SDO)可以為各種服務和資料來源提供單一編程介面。
SaaS是一種軟體服務提供的模式,是一種將軟體部署為託管服務並通過 Internet 進行訪問的模式。SaaS作為一種有效軟體交付機制,其出現為 IT 部門創造了機會,使他們可以將工作重心從部署和支援應用程式轉移到管理這些應用程式所提供的服務上來。不僅可以通過Portal為使用者提供服務,還可以通過其它方式,如API、WSDL等提供服務。
SaaS方便、節省成本,受到很多企業,尤其是中小企業的青睞,但SaaS的許可權控制、安全問題可能讓使用者有所顧忌。
SOA和SaaS的區別,大概可以概括為以下幾點。
1.SOA包括了關於軟體是如何被架構起來的東西,而SaaS是關於軟體是如何被應用的。
2.在SaaS當中,應用程式可以像任何服務一樣被傳遞,就像你家中電話的語音一樣,看起來似乎就是為你的需求量體裁衣得到的。而SOA的定義和這個無絲毫的聯絡。SOA支援的服務,都是些離散的可以再使用的交易處理,這些交易處理合起來就組成了一個商務程序,是從基本的系統中提取出來的抽象代碼。
3.SOA是一個架構的方法,而SaaS是一種傳遞模型。
4.通過SaaS傳遞Web服務並不需要SOA。
5.SaaS主要是指一個軟體企業向其它企業提供軟體服務。而SOA一般是企業內部搭建系統的基礎。SaaS注重的是提供服務的思維。而SOA注重的是實現服務的思維。