好久,也沒想出來合適的標題。這個題目似乎有點"標題黨",但也是我想表達的意思:SCA不是技術問題,就象有位網友給我留言說的那樣,SCA一點技術含量也沒有!是的,SCA是提供業務組件化的組件模型,是面向業務的。目標是建立一個新的層 ,以便在IT基礎設施的商業邏輯上把應用和中介軟體分開。
下面從三個方面,從SOA/SCA是什麼,SOA/SCA不是什麼加以說明:
1、SOA的一個中心思想就是使得公司專屬應用程式擺脫面向技術的解決方案的束縛,輕鬆應對企業商務服務變化、發展的需要。SOA是面向服務的,解決的是業務領域的問題,而不是技術領域的問題。
2、SCA是SOA具體實現的一個標準,不是技術架構。
3、SCA的目標是建立一個新的層 ,以便在IT基礎設施的商業邏輯上把應用和中介軟體分開。
一、SOA的問題域——SOA新解
SOA(Service-Oriented Architecture)被廣泛的翻譯為“面向服務的架構”,或者服務導向架構。SOA包含了三個方面的含義:面向、服務和架構(體繫結構)。面向就是有針對性的或者專註於某個方面的意思,理解起來不會產生歧義。那麼什麼是服務?什麼是架構(體繫結構)呢?
1)服務:“面向服務的架構”中服務是用來修飾架構的,限定了架構的範圍,確定架構的形式。服務是服務導向架構中的核心詞,“服務”的使用非常廣泛。對於不同的人有不同的理解,那麼在SOA這裡S“是什麼服務”?
請想象以下幾個情境:
l 在酒店:服務員為顧客提供點菜、上菜服務,廚師為顧客提供烹調食物的服務,調酒師為顧客提供酒類調製服務,歌手為顧客提供娛樂服務。這些服務都是酒店對顧客提供的餐飲、娛樂休閑等方面的服務。
l 在銀行:引導員為顧客提供嚮導服務,收銀員和出納為顧客提供存取款服務。ATM裝置為顧客提供查詢帳單,列印賬單,購買儲值卡等服務。這些都是銀行為顧客提供的金融方面的服務。
上面的情境中的酒店、銀行都是以企業作為商務服務提供的主體,對服務物件提供本行業內的服務。
對於IT行業的軟體企業,對客戶(服務物件)提供的也是以企業為主體的服務。企業在領域產業鏈中位置的不同,提供的服務類型也是不同的。對應這些不同類型的服務可以把企業大致劃分為:軟體服務提供者和軟體開發商。
軟體開發商為終端使用者和軟體服務提供者提供可用的軟體產品;軟體服務提供者使用這些軟體產品為使用者提供業務領域的解決方案服務。而SOA是軟體企業對外提供服務的時所採用的一個企業級的架構。SOA的主要目標是實現業務組件化,並提高組件化業務的重複使用能力,有效地管理及重複使用企業的服務和資料。在SOA化的過程中統一組織目標和方向,達到方法與目標的一致。
2)架構(體繫結構):是從整體到部分的最高層次的劃分。架構是一套構建系統的準則。通過這套準則,可以把一個複雜的系統劃分為一套更簡單的子系統的集合,這些子系統之間應該保持相互獨立,並與整個系統保持一致。而且每一個子系統還可以繼續細分下去,從而構成一個複雜的企業級架構。同時,這個架構是面向業務的,即企業向目標商業領域提供的商務服務。比如:ERP廠商提供ERP的產品服務如果是面向石油化工領域,那麼提供的服務就是面向石油化工領域業務的;如果面向電信領域,那麼提供的就是電信領域的商務服務。這個架構(體繫結構)為同一個ERP廠商向不同領域提供不同服務提供了一個模型。利用SOA面向業務的特點,可以對業務作準確定義、清晰描述,明確業務邊界和職責。使業務組件高內聚低耦合,達到業務層級的大粒度的複用。
SOA通過重複利用現有業務組件邏輯,主要解決幾個問題:
1) 業務不靈活:企業不能依賴IT的基礎結構來快速滿足業務需求的變化,缺乏有效應對市場需求變化的能力;
2)開發效率不高:相同的業務不斷重複開發;在相似的業務中無法利用企業已有資源;系統體系設計層次低,只能做到代碼層次的複用。這些都會導致企業軟體開發成本過高,投入資金無法回收。
二、SOA/SCA解決的是哪個領域,哪個層面的問題?
三、SCA的的幾個層次
1、SCA規範的層次
SCA是一個規範,針對於SCA使用的不同,可以分為幾個層面:
事件 |
角色 |
提供業務需求 |
使用者 |
使用SCA規範開發業務組件 |
軟體服務提供者 |
提供遵循SCA規範的容器實現 |
SCA容器實現廠商 |
提供SCA規範的底層構件實現 |
構件庫、SCA底層功能的實現廠商 |
做SCA那個層面的事件就決定了企業的角色和定位。
2、SCA業務層次分解在SCA中每個業務組件包含若干個不同的層面,不同的層面對應不同的角色和任務。
所處的角度 |
SCA |
業務主管和業務分析人員 |
一組服務,它們構成 IT 資產(功能),可用於構建解決方案並向客戶和夥伴公開這些解決方案。 |
企業架構師 |
一組體繫結構原理和模式,用於處理解決方案的總體特徵:模組性、封裝、鬆散耦合、關注事項分離、重用、可組合性,等等。 |
專案經理 |
一種支援大規模並行開發的開發方法。 |
測試人員和品質保證工程師 |
一種模組化從而簡化總體系統測試的方法。 |
軟體開發人員 |
一種包括諸如 Web 服務等標準、工具和技術的編程模型。 |
這個層次為SCA的實施提供了過程參考。SCA中每個業務組件包含若干個不同的層面,可以使用不同的方法實現,並藉助一些工具來輔助實施。比如,在業務主管和業務分析人員的角度可以使用UML來做業務的分析。架構師可以使用Spring、OSGi等技術架構和設計模式實現架構層的結構。SCA的目標是建立一個新的層,以便在IT基礎設施的商業邏輯上把業務和實現分開。它能夠簡化面向業務需要環境下的應用開發過程,使系統更加關注商務邏輯。通過業務組件提供商務邏輯,SCA實現提供了強有力的組合能力,可以將嵌入SCA環境的實現充分組合複用。但是一旦涉及如何?具體的邏輯,就要進入SCA業務層面之下了。如果SCA業務分解層次與軟體工程開發過程瀑布開發模型的幾個階段比較,大致對應關係如下:
軟體工程過程 |
SCA 對應層次 |
需求萃取和需求分析 |
業務主管和業務分析人員:一組服務,它們構成 IT 資產(功能),可用於構建解決方案並向客戶和夥伴公開這些解決方案。 |
需求分析和概要設計 |
企業架構師:一組體繫結構原理和模式,用於處理解決方案的總體特徵:模組性、封裝、鬆散耦合、關注事項分離、重用、可組合性,等等。 |
詳細設計和項目組織 |
專案經理:一種支援大規模並行開發的開發方法。 |
測試 |
測試人員和品質保證工程師:一種模組化從而簡化總體系統測試的方法。 |
編碼 |
軟體開發人員:一種包括諸如 Web 服務等標準、工具和技術的編程模型。 |
實施SCA可以借鑒軟體開發過程,對每個層次進行組織。
四、與SCA相關的應用案例
<待續>