3 粗粒度服務接口
粗粒度服務提供一項特定的業務功能,而細粒度服務代表了技術組件方法。舉個例說明最為清楚??向計費系統中添加一個客戶是典型的粗粒度服務,而你可以使用幾個細粒度服務實現同一功能,如:將客戶名加入到計費系統中,添加詳細的客戶聯系方式、添加計費信息等等。
采用粗粒度服務接口的優點在于使用者和服務層之間不必再進行多次的往復,一次往復就足夠。Inte.net環境中有保障的TCP/IP會話已不再占據主導、建立連接的成本也過高,因此在該環境中進行應用開發時粗粒度服務接口的優點更為明顯。
除去基本的往復效率,事務穩定性問題也很重要。在一個單獨事務中包含的多段細粒度請求可能使事務處理時間過長、導致后臺服務超時,從而中止。與此相反,從事務的角度來看,向后臺服務請求大塊數據可能是獲取反饋的唯一途徑。
4 分級
一個關于粗粒度服務的爭論是此類服務比細粒度服務的重用性差,因為粗粒度服務傾向于解決專門的業務問題,因此通用性差、重用性設計困難。解決該爭論的方法之一就是允許采用不同的粗粒度等級來創建服務。這種服務分級包含了粒度較細、重用性較高的服務,也包含粒度較粗、重用性較差的服務。
在服務分級方面,須注意服務層的公開服務通常由后臺系統(BES's)或SOA平臺中現有的本地服務組成。因此允許在服務層創建私有服務是非常重要的。正確的文檔、配置管理和私有服務的重用對于IT部門在SOA服務層快速開發新的公開服務的能力具有重要影響。
5 松散耦合
SOA具有“松散耦合”組件服務,這一點區別于大多數其他的組件架構。該方法旨在將服務使用者和服務提供者在服務實現和客戶如何使用服務方面隔離開來。
服務提供者和服務使用者間松散耦合背后的關鍵點是服務接口作為與服務實現分離的實體而存在。這是服務實現能夠在完全不影響服務使用者的情況下進行修改。
大多數松散耦合方法都依靠基于服務接口的消息;谙⒌慕涌谀軌蚣嫒荻喾N傳輸方式(如HTTP、JMS、TCP/IP、MOM等);谙⒌慕涌诳梢圆捎猛胶彤惒絽f議實現,Web服務對于SOA服務接口來講是一個重要的標準。
當使用者調用一個Web服務時,被調用的對象可以是CICS事務、DCOM或CORBA對象、J2EE EJB或TUXEDO服務等,但這與服務使用者無關。底層實現并不重要。
消息類Web服務通常是松散耦合和文檔驅動的,這要優于與服務特定接口的連接。當客戶調用消息類Web服務時,客戶通常會發送的是一個完整的文檔(如采購訂單),而非一組離散的參數。Web服務接收整個文檔、進行處理、而后可能或者不會返回結果信息。由于客戶和Web服務間不存在緊密耦合請求響應,消息類Web服務在客戶和服務器間提供了更為松散的耦合。
6 可重用的服務及服務接口設計管理
如果完全按照可重用的原則設計服務,SOA將可以使應用變得更為靈活?芍赜梅⻊詹捎猛ㄓ酶袷教峁┲匾臉I務功能,為開發人員節約了大量時間。設計可重用服務是與數據庫設計或通用數據建模類似的最有價值的工作。由于服務設計是成功的關鍵因此,因此SOA實施者應當尋找一種適當的方法進行服務設計過程管理。
服務設計管理根本上講是服務設計問題,服務設計需要在兩點間折衷??走捷徑的項目戰術與企業構建可重用通用服務的長期目標。
超越項目短期目標進行服務接口的開發和評估是邁向精確定義服務接口的重要一步,同時還需要為接口文檔、服務實現文檔及所有重要的非功能性特征設立標準。
在大型組織中實現重用的一個先決條件是建立通用(設計階段)服務庫和開發流程,以保證重用的正確性和通用性。此外,對記述服務設計和開發的服務文檔進行評估也是成功利用服務庫的關鍵。
簡言之,不按規則編寫服務將無法保證可提供重用性的SOA的成功實施。在執行規則的過程中會產生財務費用,需要在制定SOA實施計劃時加以考慮。
7 標準化的接口
近年來出現的兩個重要標準XML和Web服務增加了全新的重要功能,將SOA推向更高的層面,并大大提升了SOA的價值。盡管以往的SOA產品都是專有的、并且要求IT部門在其特定環境中開發所有應用,但XML和Web服務標準化的開放性使企業能夠在所部署的所有技術和應用中采用SOA。這具有巨大的意義!
Web服務使應用功能得以通過標準化接口(WSDL)提供,并可基于標準化傳輸方式(HTTP和JMS)、采用標準化協議(SOAP)進行調用。例如,開發人員可以采用最適于門戶開發的工具輕松創建一個新的門戶應用,并可以重用ERP
你也可以不采用Web服務或XML來創建SOA應用,但是這兩種標準的重要性日益增加、應用日趨普遍。盡管目前只有幾種服務使用者支持該標準,但未來大多數的服務使用者都會將其作為企業的服務訪問方法。
8 支持各種消息模式
SOA中可能存在以下消息模式。在一個SOA實現中,常會出現混合采用不同消息模式的服務。
﹡無狀態的消息。使用者向提供者發送的每條消息都必須包含提供者處理該消息所需的全部信息。這一限定使服務提供者無須存儲使用者的狀態信息,從而更易擴展。
﹡有狀態的消息。使用者與提供者共享使用者的特定環境信息,此信息包含在提供者和使用者交換的消息中。這一限定使提供者與使用者間的通信更加靈活,但由于服務提供者必須存儲每個使用者的共享環境信息,因此其整體可擴展性明顯減弱。該限定增強了服務提供者和使用者的耦合關系,提高了交換服務提供者的服務難度。
﹡等冪消息。向軟件代理發送多次重復消息的效果和發送單條消息相同。這一限定使提供者和消費者能夠在出現故障時簡單的復制消息,從而改進服務可靠性。
9 精確定義的服務接口
服務是由提供者和使用者間的契約定義的。契約規定了服務使用方法及使用者期望的最終結果。此外,還可以在其中規定服務質量。此處需要注意的關鍵點是,服務契約必須進行精確定義。
META將SOA定義為:“一種以通用為目的、可擴展、具有聯合協作性的架構,所有流程都被定義為服務,服務通過基于類封裝的服務接口委托給服務提供者,服務接口根據可擴展標識符、格式和協議單獨描述!痹摱x的最后部分表明在服務接口和其實現之間有明確的分界。
SOA的優點
了解了SOA的定義和基本特征,最后我們再來看看SOA潛在的優點:
﹡編碼靈活性
可基于模塊化的低層服務、采用不同組合方式創建高層服務,從而實現重用,這些都體現了編碼的靈活性。此外,由于服務使用者不直接訪問服務提供者,這種服務實現方式本身也可以靈活使用。
﹡明確開發人員角色
例如,熟悉BES的開發人員可以集中精力在重用訪問層,協調層開發人員則無須特別了解BES的實現,而將精力放在解決高價值的業務問題上。
﹡支持多種客戶類型
借助精確定義的服務接口和對XML、Web服務標準的支持,可以支持多種客戶類型,包括PDA、手機等新型訪問渠道。
﹡更易維護
服務提供者和服務使用者的松散耦合關系及對開放標準的采用確保了該特性的實現。
﹡更好的伸縮性
依靠服務設計、開發和部署所采用的架構模型實現伸縮性。服務提供者可以彼此獨立調整,以滿足服務需求。
﹡更高的可用性
該特性在服務提供者和服務使用者的松散耦合關系上得以體現。使用者無須了解提供者的實現細節,這樣服務提供者就可以在WebLogic集群環境中靈活部署,使用者可以被轉接到可用的例程上。
SOA可以看作是B/S模型、XML/Web Service技術之后的自然延伸。SOA將能夠幫助我們站在一個新的高度理解企業級架構中的各種組件的開發、部署形式,它將幫助企業系統架構者以更迅速、更可靠、更具重用性架構整個業務系統。較之以往,以SOA架構的系統能夠更加從容地面對業務的急劇變化。
文章來源于領測軟件測試網 http://www.kjueaiud.com/