傳統的MVC對于單個應用來說非常成熟,這是實踐中證明的。對于大多數獨立的應用和系統來說MVC很勝任。
----傳統技術和架構的合理性。
然而,當企業中的應用規模不斷擴大,從幾個到幾十個甚至上百個的時候,靠若干MVC架構的不斷疊加能夠構造出一個適合企業級的架構么?所以才出現了Portal這樣的新技術來迎接這樣的挑戰,但是Portal的關注點更靠近與展現端,在底端通訊方面不能給出更好的答案。所謂架構是要一套整體解決方案,這樣的架構所要解決的問題簡而言之就是兩個特點:數目或規模大、異構應用交互。
----這是WebService的由來。
WSDL 在增強應用之間的可連接性以及互操作性方面邁出了一大步。然而,WSDL只關注了服務接口,它并不提供描述一個服務所依賴的其它服務,以及這個服務所需要使用的配置策略和服務之間的依賴關系。
單獨通過WSDL 很難實現服務之間的組合調用。
SCA比WSDL走的更遠的方面是定義了一個服務組件模型以及一個服務組裝模型。
服務模型提供了比WSDL更多的功能,它允許服務開發者不單定義服務的接口而且還可以定義 這個服務和其他服務的依賴關系,以及這些交互(事務,安全,以及可靠 傳輸)之間的策略還有服務所可能提供的配置功能。
----這是SCA的由來。
過去我們所采用的技術中,不管是.NET也好,J2EE也好,它們都有基于自身平臺下的規范,比如在J2EE環境下,我們就會通過JDBC、Entity Bean這樣的方式訪問數據庫或者其它數據源;而在.NET下同樣有類似ADO這樣的方式來訪問各種不同的數據源。
這里面的問題在于,平臺透露了太多的技術細節,程序員需要了解很多相關的內容,比如他需要創建一個JDBC或ODBC的數據源,再利用這些規范所提供出來的編程接口來想辦法得到數據源中的數據,為達成這個目標,程序員還需要去做對象-關系映射,以實現對象到關系數據庫或者與之相反的數據轉換。
目前有一些技術可以用來解決這些問題,比如前段時間在Java社群中一直都非常流行的Hibernate等,諸如此類的方法和工具很多,他們都是用來協助程序員處理上述工作的。
但無論如何,你都無法逃避地要看到很多這些方法中非常底層的技術細節,而且,程序員需要學習所有這些不同的技術,了解它們適應于什么情況,處理各種情況下的不同技術細節。
事實上,程序員需要抽象層次更高的東西,比如業務數據對象(Business Object)以及它內部各種細粒度數據對象之間的關聯,這是可以用一致、通用的方式來表示和操作的。有了抽象層次更高的模型,程序員就可以通用的方式來定義和訪問業務數據,從而以統一的方式來描述和訪問不同的數據源,降低對程序員技能的要求,提高生產率,更容易在不同的應用環境交換。
這樣,不管是Java或者C++語言描述下,程序員都不必去了解平臺上的技術細節,用一個XML Schema描述這樣的通用、簡單的的業務數據模型,然后在運行將對象持久化到你的關系數據庫、XML或者其它數據源中。
----這是SDO的由來。
SOA提供了一種很好的改變現有業務流程模式的途徑,成功實施SOA項目的關鍵在于分析重點、減低風險,給出企業真正需要的功能模塊。本質上講,SOA并不是一種新技術,它僅僅是一種系統設計/規劃模式,甚至可以說,只是一種現有業務流程重組轉換模式。
更直接地說,有一種需求變得越來越明顯:業務需要集成系統,并允許消費者利用基于標準的方法訪問服務。
----SOA本義
簡單的講,SOA就是將現有的一些功能模塊打包成獨立的程序包,命名為“服務”模塊。對于這些服務模塊,需要對其接口進行良好定義,使得其他的應用系統可以使用“拿來主義”,方便的使用這些服務模塊。通過創建服務模塊庫,將所建立的模塊集中到模塊庫中,這樣,利用庫中的服務模塊,可以方便的構建出所需要的應用系統,
面向服務的體系結構本質上來說是一種具有特殊性質的體系結構,它由具有互操作性和位置透明的組件集成構建并互連而成。
基于SOA的企業系統架構通常都是在現有系統架構投資的基礎上發展起來的,我們并不需要徹底重新開發全部的子系統; SOA可以通過利用當前系統已有的資源(開發人員、軟件語言、硬件平臺、數據庫和應用程序)來重復利用系統中現有的系統和資源。
---- SOA和現實及技術的關系
軟件企業的產品開發和營銷必須兩眼緊盯著市場需求,產品開發要和市場人員緊密結合,找到關鍵客戶普遍而又重要的共性問題。產品源于市場,服務于市場,研究技術是為了更好地解決客戶的問題。
技術是手段,附以方法論,形成BEST PRATICE,驅使的目標或目的才是關鍵
目前國內大肆渲染的soa(sca,sdo)等,無非是手段,真正能派上用場的場合確實有,但是是大多鼓吹或愛好者所罕遇的。
研究技術是為了更好的解決客戶的問題,這便是技術的目的!
-----技術的目的