一、重用C/S應用主要原則
由于歷史的原因,一些信息化不夠充分的企業往往建設了不少業務系統,這些業務系統基本上都是C/S應用。在新的SOA技術架構中重用這些業務系統是一個比較重大的工作,需要根據實際情況,設計出復用、集成這些原有系統的方法。需要滿足如下原則:
1.著重規劃。對于舊有業務系統的復用、集成需要有整體的規劃,是合理、有效復用、集成舊有業務系統的前提,也是實施SOA最為基礎的一步。有了規劃,才能去選擇現有條件下最適合的技術和工具,最后用這些技術和工具實現這些業務系統的復用。
2.從局部到整體。SOA讓企業可以搭建一個松藕合的平臺,但是SOA不可能一蹴而就,在企業內部規劃、實施SOA是一個長期的過程。在企業內部實施SOA時總是先從部門級開始,從最關鍵的業務開始,然后慢慢擴充到其他業務、其他部門,到最后實現整個企業的SOA。設計出來的復用集成方式必須滿足這種小步快跑式的SOA實施方式。
3.有破有立。由于已經建設的業務系統比較多,采用不同的技術架構開發,在實施SOA時,需要考慮到復用集成時的各種情況,提供符合條件的復用集成方式。一些太落后的系統可以考慮推倒重來,對于那些還能繼續應用的系統,需要提供包裝、升級到新的技術架構的解決方案;對于那些太過于封閉的舊有技術架構,要考慮如何用最新的集成手段來將它開放成服務,加入到新的SOA體系中來。
二、重用遺留C/S應用的幾種方式
在一個企業內部實施SOA 并是簡單的把原來的業務系統全部拆掉后重建,理想的做法是在一個企業目前正在使用的應用、系統和資產中確定可重用的、高價值的業務系統,采用 SOA 的理念、原則、方法和技術來標準化這些任務,使他們可以在企業內部得到重用。重用已有的應用程序和系統是非常明智的決策,可以減少企業在實施SOA時的資金投入,且重用現有業務系統不會對現有業務造成太大的沖擊,可以顯著降低企業實施SOA時的風險。
這些現有業務都已經經過了長時間的運營,是公司擁有的最寶貴且經過驗證和時間考驗的資產,重用原有的業務系統還可以大幅度加速 SOA 項目的實施進度。相應的研究結果顯示:重用原有業務系統的開銷比從頭構建這些業務系統需要的費用少五倍。由于這些遺留系統已經過了嚴格的實踐的檢驗,其維護開銷也會減少。根據實施SOA時企業內部IT項目建設的階段和原有遺留系統的實際狀況,我們需要采取不同的策略來集成原有代碼:
1.系統服務化。這種方式是指直接將原有系統的源代碼通過SOA技術架構發布為服務,在新的體系結構中直接復用。
2.系統架構升級。這種方式是指采用新的體系架構升級原有C/S業務系統,或者是將該系統中需要新增加的功能基于新的體系架構重建,或者在該系統使用壽命達到標準后重新創建該系統。
3.系統集成。這種方式是指通過系統集成的方式使用原有代碼,達到業務重用的目標,如實施SOA時直接采用采用EAI、ESB等技術集成那些遺留下來的C/S應用。
4.遺留系統拆分。這種方式是指在SOA實施過程中,直接利用原有C/S應用,達到業務系統重用的目標,只是需要將遺留系統拆分成更小的系統,以滿足服務拆分的需要。如在實施SOA過程中直接采用業務系統調用的方式,直接啟動原來的C/S應用,讓用戶使用。
5.其他方式。根據實際情況,我們可能還需要提供其他的重用方案,如直接使用那些還具備使用價值的、比較獨立的業務系統,或者是采用以上三種方式的混合形式來達到系統復用集成的目標。
三、代碼服務化
采用代碼服務化的好處是服務接口由所公開的遺留資產定義,不需要進行分析來設計接口規范。由于新服務可以在與包裝的現有資產相同的平臺上運行,沒有必要添加新基礎設施。能省略接口定義和分析,要處理的平臺更少,這樣部署周期就會更短,風險也更小。采用代碼服務化方法時需要重點考慮如下事項:
(1)服務使用者需要與舊有系統的服務定義建立聯系,而舊有系統在很多情況下的最初設計都不是按照面向服務的方式來設計的。
(2)這種重用方式假定現有應用程序平臺提供了對服務調用的最新技術的支持。
(3)這種實現模式會給系統帶來服務消息處理的壓力。
四、系統架構升級
采用系統架構升級的方案中,我們在現有應用程序功能和服務之間引入構件層,所有需要被服務化的原有系統,都遵循先被構件化,然后被服務化的過程。構件可以提供服務和實際實現之間的抽象,封裝了對原有系統的所有操作,同時提供了更多的靈活性。使用構件有如下好處:
(1)可以在不影響服務使用者的情況下更改現構件的業務邏輯實現。這些構件可以方便地進行擴展,以封裝數據和信息構件,為數據或信息服務提供外觀層,對于服務使用者來說,這些服務是透明的。
(2)可以在構件層進行系統和功能的組裝和編排,構件服務使用者的影響很小或者沒有影響。
(3)可以將服務部署在與現有應用程序不同的基礎設施上,現有應用程序的基礎設施通常針對服務的特定處理要求進行了硬編碼。
這種重用模式體系結構有自己的特點。
(1)它允許服務與業務保持緊密一致,但并不一定直接映射到現有應用程序接口的服務接口定義。
(2)可以支持使用 SOA 的原則和最佳實踐來以正確的粒度級別設計服務和接口,與此同時,這也會增加服務定義的設計工作。
(3)引入構件層后,設計工作會比直接將應用程序公開為服務更為復雜,可能會涉及到使用適配器或連接器技術來與應用系統進行連接。
五、系統集成
在采用系統集成方式重用原有C/S應用時,原有信息系統本身作為服務提供者而獨立存在。它提供的服務被整合到新的技術架構中。系統集成模式的主要優勢在于,可以不需要花很多時間為服務定義開發實現構件,由服務提供者直接提供這些服務及其接口,這可以大幅度降低SOA實施時間。服務消費者可以很容易的根據不同的業務場景在服務提供者之間進行切換。整合集成模式體系結構需要重點關注的事項:
(1)必須恰當地定義服務的服務級別協議,確認被整合的應用系統能夠提供滿足要求的服務。
(2)系統和系統之間通過服務調用完成交互,如果是在非局域網環境下,需要考慮到安全的問題,如增加防火墻等。
六、遺留系統拆分
在遺留的C/S應用中,會存在一些非常獨立的系統,他們和其他的系統之間不存在什么聯系,甚至也不需要交互,只是需要根據不同的人提供不同的權限或者是更小的調用域,這個時候我們就可以采用遺留系統拆分的方式來直接利用這些C/S應用。遺留系統拆分模式的主要優勢在于,可以不需要花很多時間為來處理服務化、接口等內容,而只需要簡單的利用遺留的C/S應用,將它拆分成更小的應用即可。這可以大幅度降低SOA實施時間。遺留系統拆分模式體系結構需要重點關注的事項:
(1)系統本身應該是非常獨立的,完成相對獨立的業務,和其他系統之間不存在太多的交互。
(2)必須恰當地定義拆分的標準,以滿足可被重復利用的可能性。
(3)必須考慮如何調用這些遺留的技術路線。
通過靈活應用本文中提出的代碼服務化、系統架構升級、系統集成和遺留系統拆分四大方法,可以比較容易的重用這些遺留下來的C/S應用,降低企業實施SOA的成本和風險,縮短企業實施SOA的周期,讓企業能夠更快速、更安全的在企業內部實施SOA戰略,進入到主流的SOA實踐中來。