關鍵字:soa
最近,SOA成為跨技術平臺(特別是J2EE和.Net)軟件開發中的熱門話題。然而,如果我們比較一下圍繞著SOA的宣傳和90年代后期EJB和服務件的宣傳,你會發現這沒有什么區別。1998年,EJB帶領互聯網的潮流并推翻了以CORBA為統治和由PB/Oracle Forms和其他主導的CS架構標準。SOA,作為一種新技術的術語,還不具有那么大的破壞性。SOA只是一種想法/概念和一組構建應用功能的最佳實踐。相反地,J2EE是一套完整地開發技術,可以用來設計所有的東西。
我對SOA的主要關注在于企業級Java應用通用的問題:復雜性。次要關注的是SOA通常作為一種解決方案被用來跨越J2EE應用各層,雖然這好像沒有什么意義。本文提取出SOA的基本元素并介紹他們。一旦我們理解這些,就可以理解SOA系統中的更復雜的組件了。最后,我們可以了解一下SOA給J2EE應用帶來的實際價值,同時并不增加無用的復雜性。
本文分為個部分:首先,提出了我對SOA作為一種標準參考點的定義。其次,檢查那些主要的軟件工程問題通過SOA可以解決而不是用SOA來檢查。再次,會給出基于復雜需求的SOA的建議分類。最后,給出三種主要SOA分類的建議實現。
SOA是什么?
SOA有很多定義。下面是我的定義:
SOA是宏級別的應用到應用架構級的設計模式:
1、可選地暴露應用的功能作為一組離散的組件。
2、使這些組件能被用來構建更復雜的組件和應用。
3、僅包含基于消息的組件內部通訊。
我還遺漏了什么呢?還有一些方面,包括:
1、安全性
2、事務
3、狀態或無狀態會話
4、消息數據
5、消息特性
6、消息協議
7、消息內容
8、具體技術實現
這些方面也是重要的,但不是主要的。我的定義提取了SOA的核心規則,但沒有拋棄概念本身。