使用設計模式可以聯合程序員/分析師和企業架構師共同增強您的核心服務
從金融機構到制造廠商,企業正不斷地采用技術,他們所考慮的目標都是一致的 — 使運營更加高效,能夠快速抓住機會,并做出優于其競爭對手的決策。但是,在他們都購買到同樣的系統和軟件的條件下,實際的優勢便體現在以創新和高效率的方式應用這些工具的能力方面。為企業創建一個可以帶來巨大收益的應用程序基礎架構需要技巧,即確定如何設計應用程序的架構才能高效地利用核心服務。
行業分析師和戰略咨詢師構想出的最新應用程序架構是面向服務的架構(service-oriented architecture,SOA)。對于許多人來說,它聽起來就像是隨意地把一些行業時髦詞語放在一起而已。但是這個概念本身十分直觀。就其核心來說,SOA就是服務的集合。從軟件和業務功能兩方面的觀點看,服務就是定義良好的軟件組件,它不依賴于任何調用它的應用程序的上下文或狀態。
這些服務通常被實現為Web服務,應用程序可以通過簡單對象訪問協議(Simple Object Aclearcase/" target="_blank" >ccess Protocol,SOAP)來訪問它,基于HTTP協議以XML的形式進行傳輸。在SOA中使用Web標準的優點在于,服務可以更加輕松地適應各種應用程序。不必對服務進行特別的編程,除了使它能夠使用SOAP接收請求和傳輸結果之外。所以,在許多情況下,企業可以很直觀地構建Web服務,甚至可以改編現有的軟件來創建新的Web服務。
SOA如何賦予企業競爭優勢,并使其能夠快速對業務機遇做出響應呢?簡單來說,它使企業能夠定義它所需的基礎服務,從而高效地為其核心業務提供服務,并快速適應不斷變化的業務環境。實現了這些核心服務之后,任何應用程序都可以調用它們來訪問和分析數據,構建新的業務方法,或者提供能夠使應用程序快速從投資中獲取回報的數據或功能。
這意味著SOA既是一種技術戰略,也是一種業務戰略。就服務交付核心價值給業務這一方面來說,它是業務戰略。設計符合SOA的服務時必須熟悉和了解業務,以便確定什么功能可以跨多個應用程序使用。而且,它們必須足夠通用,以支持目的不同的多種應用程序,同時又必須足夠特殊,以提供真正的價值給單個應用程序。
從技術的觀點看,挑戰存在于企業Web服務的架構之中。因為從根本上說,SOA是服務接口的一種流和一種關系,設計接口及其關系需要熟練掌握Web技術、業務流程和服務下的技術平臺以及采用它們的應用程序等方面的知識。架構師不僅必須了解如何構造Web服務,而且還要了解現有應用程序和計劃未來使用的應用程序如何使用它們。
SOA采用正在加速
在為企業營造競爭優勢的浪潮中,SOA的概念到底有多重要呢?根據Gartner Group的分析師得出的結論,SOA在去年已經成為主流,而且在未來,絕大多數企業都會使用這種架構,以期能夠在數量漸增的應用程序中融入更多業務領域中的專門知識。特別地,Gartner預計到2006年為止,超過60%的企業將考慮在設計它們的新任務關鍵型業務應用程序和業務流程的過程中,把SOA當作一條指導原則。另外,到那個時候,超過75%的中型和大型企業已經采用了支持SOA的開發工具和中間件。
顯然,企業已經意識到了實現SOA在靈活性和簡潔性方面的優勢。但是不管概念的簡單,構建企業SOA是對技術和業務的巨大挑戰。從業務的觀點來看,確定交付核心業務需要時需要什么服務要求熟練掌握業務運營和軟件架構方面的知識。幸運的是,企業擁有具有專業領域知識的專家,而企業架構師的角色是把這些知識融入到SOA實現的整體規劃和設計之中。
在技術上,定義這些服務以及它們到應用程序的接口,然后實現這些服務,是SOA的核心部分。為了提供關鍵的業務應用程序,服務必須是可靠的、自成體系的,而且能對來自各種客戶端應用程序的請求做出響應。這些客戶端可能是一些指定的內部用戶使用的豐富的Windows應用程序,或者是被數以千計的臨時外部客戶訪問的Web前端。
構建一個可以交付價值的Web服務架構是企業架構師的任務。架構師實現Web服務,然后業務領域專家調用這些服務。然而,業務領域需要的服務可以以不同的形式實現,這取決于可用技術的功能和限制。
這里便是企業架構師增加巨大價值的地方。他或她具有企業基礎架構功能方面的知識,以及出眾的設計和實現技巧。一些開發人員可以集中精力構建和維護核心服務,而其他人可以快速實現消費一個或多個這種服務的應用程序,使企業能夠對不斷變化的業務和競爭環境做出反應。如果企業能夠構建其架構師可以預見的SOA,將會獲得巨大的業務收益。
構建這些Web服務通常超出了企業技術人員的能力之外。富有經驗的程序員/分析師既具有編程方面的經驗,也具有隱藏在應用程序之后的業務邏輯方面的知識,然而與把這二者融入到Web服務中仍有一些真正的差距。許多這種老手都缺乏編寫使用Web協議的應用程序,或者構建可靠且高性能的分布式應用程序的經驗。在某些情況下,Java和Java 2 Enterprise Edition(J2EE)平臺本身可能不太熟悉。
尋求從Web服務架構獲得業務優勢的企業必須克服這些難題,以便實現最高效率和靈活性。培訓無疑是答案的一部分,但是培訓也需要實質性的投資,以及一些為了實現高效率所需的實踐經驗。
但是只有正式的培訓還不能使經驗豐富的程序員/分析師成為老練而高效的Web服務開發人員。在J2EE平臺和Web服務概念方面的培訓提供了技巧,但是現實世界中的實現經驗對于交付價值是必不可少的。通常,只有專攻Web服務架構師和高級開發人員才擁有足夠的設計和平臺實現技巧來設計和構建一種可靠而高效的SOA。
利用設計模式來共享專家知識
有一種方法能夠使企業既能夠從經驗豐富的程序員/分析師獲得業務收益,又能夠從富有才能的企業架構師獲得專家知識,那就是設計模式。設計模式使架構師能夠為實現SOA的Web服務組件定義最佳實踐,這些組件包括數據庫訪問、SOAP接收和解碼,以及業務邏輯。對上述最佳實踐的封裝足夠清楚,這樣,可能在平臺或算法方面經驗不夠豐富的程序員/分析師可以基于該模式成功地編寫代碼。在許多情況下,模式是與單個程序員可以直接使用的示例在一起實現的。
設計模式可能來自三種不同的來源 — 設計和開發工具廠商,平臺社區,以及企業。最佳方法是使用得到普遍信任的工具廠商提供的設計模式,因為企業架構師在構建這些設計模式時對模式庫的基礎進行了補充,這將給特定的企業增加獨一無二的價值。平臺社區開發的模式可以填補來自其他兩種來源的模式的不足,盡管必須在發布它們用于一般用途之前對其進行充分的測試。
企業可以快速而高效地利用業務和技術架構師的技術來交付SOA戰略。通過采用受信任商業模式的組合,開發人員能夠把它們的業務專業知識和經過檢驗的SOA構建塊結合在一起。連同企業架構師提供的內部設計和實現專業知識一起,并且被封裝為定制模式,這種方法提供了兩種最佳選擇。架構師能夠做到最好 — 設計高效的企業服務 — 而富有經驗的開發人員則通過他們在如何構建業務流程方面的知識來增加價值。
這種勞動分工給設計和采用真正代表企業核心服務的SOA提供了最佳機會,并成為了響應業務需求的應用戰略的基礎。SOA的模式方法是實現這種新興架構的諾言的必要途徑。
(責任編輯:銘銘)