面向服務(wù)開發(fā)的7項原則
發(fā)表時間:2023-07-29 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]未來的軟件結(jié)構(gòu)要求有一套新的開發(fā)方法。你們公司做好準備了嗎?by Jason Bloomberg當(dāng)今關(guān)于Web服務(wù)(web services)的描述主要是關(guān)于集成的。走出不景氣階段的企業(yè)都把降低集成...
未來的軟件結(jié)構(gòu)要求有一套新的開發(fā)方法。你們公司做好準備了嗎?
by Jason Bloomberg
當(dāng)今關(guān)于Web服務(wù)(web services)的描述主要是關(guān)于集成的。走出不景氣階段的企業(yè)都把降低集成成本作為一個明顯的目標。運用公開的、基于標準的、松散藕合的Web服務(wù)技術(shù)就給企業(yè)提供了一個不是很昂貴的集成方法。然而,Web服務(wù)不僅僅是使集成簡單化了,它們的用處更多。實際上,它們將注定要從根本上改變?nèi)藗儎?chuàng)建和使用軟件的方式。
為了擺脫老式的思考方式,軟件專家必須要了解Web服務(wù)的技術(shù),并且要了解Web服務(wù)可以給我們帶來怎樣的前景。下面的面向服務(wù)開發(fā)的七項原則——它們是隨著老式思考方式轉(zhuǎn)變到新的思考方式而產(chǎn)生的——為你形成這種新層次的觀念提供了指南。
1. 動態(tài)的服務(wù)替代了靜態(tài)的組件
構(gòu)建一個Web服務(wù)不僅僅是像傳統(tǒng)的組件開發(fā)期望的那樣創(chuàng)建具有特殊功能的軟件。一個Web服務(wù)的Web服務(wù)描述語言(WSDL)文件動態(tài)地描述了Web服務(wù)的功能。所以,開發(fā)人員只需要指出在哪里找到WSDL文件,這樣調(diào)用Web服務(wù)的軟件在運行時就可以找到對服務(wù)功能的描述。該原則要求在運用Web服務(wù)的系統(tǒng)中顯示邏輯層同商業(yè)邏輯層和持久(persistence)邏輯層分離開。當(dāng)開發(fā)人員構(gòu)建一個Web服務(wù)時,他們可能不知道那個服務(wù)是如何被調(diào)用的、或者Web服務(wù)使用者的用戶界面將是怎樣的。一個Web服務(wù)架構(gòu)師不能將商業(yè)邏輯和顯示邏輯結(jié)合起來。
2. 服務(wù)呈現(xiàn)(Exposure)和響應(yīng)(Reflection)替代了傳統(tǒng)的系統(tǒng)集成
當(dāng)今的系統(tǒng)架構(gòu)師根據(jù)系統(tǒng)級的需求來集成項目。架構(gòu)師計劃各種組件應(yīng)該如何集成。作為這種top-down方法的替代,面向服務(wù)的開發(fā)采用了一種bottom-up的方法。在任何系統(tǒng)結(jié)構(gòu)形成前,系統(tǒng)中的每個組件都呈現(xiàn)成一個Web服務(wù)。然后,每個服務(wù)(查詢一個服務(wù)自己的功能)給外部系統(tǒng)提供它們訪問服務(wù)所需要的信息。
在構(gòu)建一個系統(tǒng)時,Web服務(wù)架構(gòu)師首先考慮系統(tǒng)的需求,并進行服務(wù)裝配。在服務(wù)裝配過程中,架構(gòu)師訪問服務(wù)的動態(tài)描述,它們只代表了實際的API的一部分。然后,架構(gòu)師確定系統(tǒng)的結(jié)構(gòu),即使在運行前,單獨的組件及其接口并沒有被完全地描述。
3. 為廣泛的適用性編寫代碼替代了為可重用性編寫代碼
為可重用性編寫代碼是面向?qū)ο缶幊痰囊粋重要的特點。實際上,對開發(fā)人員來說,編寫可重用的代碼可能比為單獨用途的應(yīng)用程序編寫代碼更具挑戰(zhàn)性。因此,靈活的軟件方法(如Extreme Programming(XP))就避開了可重用性。在XP中,如果外來的功能進入到代碼中,那么開發(fā)人員就重新編寫、或重構(gòu)(refactor)代碼,直到它盡可能地簡單。
雖然重構(gòu)可以形成一些重用的方法,因為最終代碼滿足很多情況,但這種方法同傳統(tǒng)的為可重用性編寫的代碼不同,因為它的目的是創(chuàng)建靈活的和廣泛適用的代碼。重用性和廣泛適用性的代碼的區(qū)別是很小的,但它們卻是面向服務(wù)的開發(fā)過程的本質(zhì)。最好的方法就是把面向服務(wù)開發(fā)的結(jié)構(gòu)性原則同靈活的開發(fā)原則結(jié)合起來。