1 可從企業外部訪問
通常被稱為業務伙伴的外部用戶也能像企業內部用戶一樣訪問相同的服務。業務伙伴采用先進的B2B協議(ebXML或RosettaNet)相互合作。當業務伙伴基于業務目的交換業務信息時,他們就參與了一次會話。會話是業務伙伴間一系列的一條或多條業務信息的交換。會話類型(會話復雜或簡單、長或短等)取決于業務目的。
除了B2B協議外,外部用戶還可以訪問以Web服務方式提供的企業服務。
2 隨時可用
當有服務使用者請求服務時,SOA要求必須有服務提供者能夠響應。大多數SOA都能夠為門戶應用之類的同步應用和B2B之類的異步應用提供服務。同步應用對于其所使用的服務具有很強的依賴性。
許多同步應用通常部署在前臺,其最終用戶很容易受到服務提供者短缺的影響。很多情況下,同步應用利用分布式服務提供者,這樣可以響應更多的用戶請求。但是,隨著提供特定服務功能的服務器數量的增長,出現短缺的可能性也呈指數級上升。
相比之下,異步應用要更為穩健,因為其采用隊列請求設計,因此可以容許出現服務提供者短缺或遲滯的情況。異步應用大多數情況下部署在后臺,用戶通常不會覺察到短暫的短缺。大部分情況下異步應用能夠穩健應對短時間短缺,但是長時間短缺則會引發嚴重問題。在服務短缺解決、隊列引擎將罕見的大量工作推到共享的應用資源中時,可能會出現隊列溢出甚至服務死鎖。
服務使用者要求提供同步服務時,通常是基于其自身理解或使用習慣。在多數情況下,采用異步模型可以達到同樣的效果,但更能夠體現SOA的最佳特性。
當然,并不是所有情況下都應當采用異步設計模式。但大多數情況下,異步消息可以確保系統在不同負荷下的伸縮性,在接口響應時間不是很短時尤其如此。
3 粗粒度服務接口
粗粒度服務提供一項特定的業務功能,而細粒度服務代表了技術組件方法。舉個例說明最為清楚??向計費系統中添加一個客戶是典型的粗粒度服務,而你可以使用幾個細粒度服務實現同一功能,如:將客戶名加入到計費系統中,添加詳細的客戶聯系方式、添加計費信息等等。
采用粗粒度服務接口的優點在于使用者和服務層之間不必再進行多次的往復,一次往復就足夠。Internet環境中有保障的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服務在客戶和服務器間提供了更為松散的耦合。
文章來源于領測軟件測試網 http://www.kjueaiud.com/