專利名稱:用于管理web服務的系統和方法
技術領域:
本發明涉及用于管理面向服務的軟件體系結構的web服務的系統和方法。
背景技術:
web服務是用于通過計算機網絡(例如因特網)從一個計算機向另一計算機交換數據的標準化接口。應用可以利用由服務器提供的web服務通過計算機網絡向服務器請求數據。這種請求通常被封入在利用HTTP傳送的SOAP包封中,并且可包括XML以及其他與web有關的標準。技術上更高級的應用組合各種web服務以獲得或處理期望數據。圍繞多個web服務開發的軟件體系結構被稱為面向服務的體系結構(SOA)。
在SOA中,資源對于網絡中的參與者來說是可用的,其被當作參與者可以按標準化方式訪問的獨立服務。雖然SOA的大多數定義使用經由TCP/IP上的HTTP/HTTPS傳送的SOAP請求,但是SOA可以使用任何基于web服務的技術。web服務基于形式定義協同工作,形式定義與下層的平臺和編程語言是無關的。接口定義封裝了特定實現方式。SOA與特定的開發技術(例如Java和.NET)無關。軟件組件變得高度可重用,因為接口是遵從標準的,并且與web服務邏輯的下層實現方式無關。例如,C#(C Sharp)服務可被JAVA應用所使用,反之亦然。
然而,管理SOA是一項復雜和困難的任務。維護web服務的整體情況的全局視圖(某些web服務可能隨時間動態改變)對于確保使用各種web服務的應用正確地工作來說是很重要的。因此,在現有技術中已知提供一種集中化的注冊庫(registry)/貯藏庫(repository),例如CentraSite或Systinet 2。這種注冊庫/貯藏庫的工作的基本原理在圖1中示出。
如圖所示,集中化的注冊庫包括對SOA的web服務的描述。每個web服務由web服務描述語言(WSDL)文件描述,并且利用API(例如UDDI)注冊。WSDL文件通常包含關于相應web服務的功能、數據、數據類型和交換協議的信息。想要向某一web服務發送請求的客戶端可以從web服務自身或者從注冊庫/貯藏庫獲得WSDL文件,以找出如何訪問web服務。如圖1所示,注冊庫/貯藏庫提供了用于訪問存儲在注冊庫中的信息和用于其管理的各種API。除了WSDL文檔和服務的注冊以外,注冊庫/貯藏庫還可用于存儲與服務有關的任何類型的工件(artefact),例如策略。
集中化的注冊庫可用于SOA的新應用的設計時期。涉及一個或多個web服務的新應用的開發者可以使用所存儲的信息來確保應用中所涉及的SOA的web服務接收其需要的數據,并且可以按新應用所期望的那樣交互。然而,圖1的注冊庫沒有提供任何運行時期(runtime)信息,并且不允許執行(enforce)與一個或多個web服務有關的策略或服務級別協定。運行時期信息例如有助于提高或監視涉及SOA的多個web服務的新應用的性能和穩定性。
WO 2004/10297公開了一種自治軟件代理,其被布置在客戶端和web服務之間。在由用戶配置后,自治軟件代理可以監視并影響web服務的操作,而不影響web服務自身。然而,將WO 2004/10297的教導應用于具有大量web服務的復雜體系結構需要對同樣大量的自治軟件代理進行費時的手工配置。
因此,本發明要解決的技術問題是提供一種用于管理SOA的web服務的更高效的方式,其允許獲得關于SOA的web服務的運行時期信息,從而克服現有技術的上述不足。
發明內容
在本發明的一方面中,該問題由一種用于管理面向服務的體系結構(SOA)的多個web服務的系統來解決,該系統包括注冊庫和服務過濾器,注冊庫包括在注冊庫中注冊的對多個web服務中的每一個的描述,服務過濾器適合于過濾調用在注冊庫中注冊的web服務中的至少一個的客戶端的至少一個請求,其中服務過濾器適合于根據注冊庫中對相應web服務的描述收集關于請求的運行時期信息。
因此,本發明的服務過濾器使用已經可用的對web服務的描述來收集關于web服務的運行時期信息。因此,在注冊庫中定義的描述不僅在設計時可用于導出這多個web服務是如何工作的,還另外定義了在運行時期要從相應web服務收集的信息,即,何時來自客戶端的請求實際由web服務提供服務。因此,本發明的注冊庫是整個SOA的中心點。不需要額外步驟/手工步驟來確保來自web服務的運行時期數據的收集。
在一個實施例中,服務過濾器還適合于在運行期間根據注冊庫中對相應web服務的描述修改請求。修改請求可例如包括將去往第一web服務的請求重定向到在注冊庫中注冊的第二web服務(或端點)。這可以有助于負載平衡或動態地替代發生故障的web服務。
優選地,服務過濾器還適合于收集關于被調用的web服務的使用情況的統計數據,例如某一web服務的使用計數、帶寬使用情況、身份、隨時間(一天中的時間或更長的時間段)的分布、響應時間和數據量等等。
此外,優選地,服務過濾器還適合于監督被調用的web服務的可用性,并且優選地在被調用的web服務不可用的情況下發出警報。用于報警的策略(用于發起警報的條件、報警的方法和接受者)可以存儲在注冊庫中,從而允許單個的警報配置點。另外,注冊庫存儲web服務的統治信息(所有者、責任),其可用于動態確定警報的接受者。從而可以減少使用發生故障的web服務的應用的停用時間。
優選地,服務過濾器適合于在運行期間在注冊庫中執行至少一次查找,其中查找的結果確定服務過濾器對請求和/或來自web服務的響應的處理。因此,服務過濾器使用web服務的最新描述來確定其對運行時期信息的收集。
在一個實施例中,由服務過濾器收集的運行時期信息優選地與對web服務的描述一同被存儲在系統的注冊庫中。因此,開發者或任何其他用戶可以容易地訪問所獲得的運行時期信息以及對相應web服務的描述。將運行時期信息存儲在注冊庫中還能夠實現不平常的使用模式的搜索(例如用于欺騙檢測)和趨勢的辨別,例如用于預測未來的使用模式。
在一種替換方案中,服務過濾器被布置在服務代理上,服務代理甚至可能運行在與web服務自身不同的機器上。使用獨立的代理組件或者甚至使用獨立的機器提供了用于實現服務過濾器的最大靈活性,而無論web服務的特定實現方式如何。
根據又一方面,本發明涉及一種用于管理面向服務的體系結構(SOA)的多個web服務的方法,包括以下步驟提供注冊庫,該注冊庫包括在注冊庫中注冊的對多個web服務中的每一個的描述,提供服務過濾器,該服務過濾器適合于過濾調用在注冊庫中注冊的web服務中的至少一個的客戶端的至少一個請求,以及利用服務過濾器根據注冊庫中對相應web服務的描述收集關于至少一個web服務的運行時期信息。
在從屬權利要求中限定了對該方法的進一步修改。
在下面的詳細描述中,參考附圖進一步描述了本發明的當前優選的實施例,在附圖中圖1根據現有技術的具有對web服務的描述的注冊庫;圖2根據本發明的系統的實施例的全局視圖;圖3根據本發明的系統的另一實施例的全局視圖;圖4圖示了根據本發明一個實施例的用于收集運行時期信息所執行的各種步驟的流程圖;圖5在本發明的一個實施例中與對相應web服務的描述一同存儲在注冊庫中的運行時期信息的樣本輸出;以及圖6存儲在注冊庫中的與對各種web服務的請求的數目有關的運行時期信息的另一樣本輸出。
具體實施例方式
下面,針對管理僅有訪問單個web服務20的單個客戶端10的簡化布置來描述本發明的系統和方法的實施例。然而,應當理解,本發明主要目的是促進對具有服務于多個客戶端的請求的數十或數百web服務的大規模布置的管理。
如圖所示,該系統包括注冊庫30。注冊庫優選地包括用于存儲和檢索存儲在注冊庫中的WSDL文件以及運行時期信息(如下所述)的一個或多個API 31。另外,優選地包括用于管理注冊庫30的管理API 32。
如圖2中的雙向水平箭頭所示,客戶端10發出請求11到web服務20,例如為了獲得某些數據。優選地,來自客戶端10的請求和響應都被當作XML文件利用例如HTTP上的SOAP發送。然而,從客戶端10接收的請求并不立即被web服務20處理,而是首先被服務過濾器40過濾。服務過濾器40截取進入的請求,按需要修改數據,隨后將請求傳遞到原始web服務20。在處理了請求后來自web服務20的響應可以沿相反方向再次被服務過濾器40處理,并最終返回到客戶端10。以這種方式,服務過濾器40在運行期間內獲得關于請求和其可能的響應的信息,該信息隨后被轉發并存儲在注冊庫30中,如圖2中的箭頭35所示。在該實施例中,用于服務過濾器40的被收集的運行時期信息和配置設置的傳送是利用服務過濾器的API 41實現的,API 41與注冊庫30的API 31通信。
在一種非常簡單的情形中,由服務過濾器40提供的運行時期信息可能僅僅是關于SOA的哪個實體在什么時間調用哪個web服務的信息。在更高級的實施例中,服務過濾器40將獲得更多信息,例如涉及到的用戶帳戶、請求和其響應的大小、處理時間、故障等等。從更為結構化的視角來看,可以區分下面四種不同的技術領域,由服務過濾器40收集的運行時期信息可能與這些領域有關首先,運行時期信息可以揭示在SOA中涉及的web服務的統計信息。諸如使用計數、具有帶寬使用和身份的互連圖的提供、隨時間(一天的時間或更長的時間段)的分布以及響應時間和被發送的數據量之類的統計信息為SOA的管理員提供了對所涉及的web服務的使用情況的集中視圖。
另一方面是SOA的技術監視,其涉及在出現某些事件(例如web服務的不可用)的情況下向正確的聯系者發送警報。由服務過濾器40提供的監視還可涉及病毒和安全檢查,對于新應用的開發的調試支持,并且一般還涉及對由SOA的web服務提供的服務質量的評估。由于所有被收集的信息都被反饋回注冊庫30,因此注冊庫30允許使被監視的SOA從中心點開始一直運行,并且基于歷史數據評估其成功。
除了收集關于SOA的信息以外,在更高級的實施例中,服務過濾器40還可以主動改變對請求的處理。如果服務過濾器40將最初去往某一web服務20的請求重定向到另一web服務(未在圖2中示出),則可以實現諸如松散耦合之類的動態概念。該技術特征允許在來自客戶端10的請求中使用動態端點,例如在某一web服務面對超過其處理能力的大量請求的情況下用于負載平衡,或者該技術特征允許將發送到發生故障的web服務的請求自動重定向到備用web服務(未在圖2中示出)。重定向的條件和細節也可以存儲在注冊庫中,從而提供了單個控制點。
最終,運行時期信息的收集可用于執行策略或服務級別協定,例如關于web服務對某一請求的預定響應時間。
在圖2的實施例中,執行上述功能的服務過濾器40被實現為web服務20的附加(add-on)功能,例如從專用web服務器和.Net環境(IIS、ASP)到web服務20的基于J2EE或Java Servlet的安裝的平臺,這些平臺的細節對于本領域技術人員來說是公知的。
圖3表示本發明的系統的替換實施例,其中服務過濾器40充當與web服務20/應用服務器相分離的服務代理45,其甚至可能運行在與web服務20不同的機器上。在這種情況下,在注冊庫30中對web服務20的描述針對客戶端進行修改,從而web服務20的實際端點由代理45的URL替代。這之所以是可能的,是因為注冊庫30對SOA的每個web服務的描述(其被注冊到注冊庫30)有完全的控制。由于URL的改變,在運行期間客戶端10將調用代理45,代理45隨后在收集了運行時期信息和/或修改了請求之后將請求轉移到實際的web服務20。對于來自web服務20的響應,反方向發生相同的過程。
下面,參考圖4的流程圖詳細說明由圖2或3的實施例的服務過濾器40執行的對進入請求的示例性處理。
對進入請求的處理開始于步驟100,在步驟100確定進入請求是否是SOAP請求。在圖4的非限制性實施例中,只有SOAP請求被過濾以獲得運行時期信息。如果該請求是SOAP請求,則在步驟101中利用在請求頭部中指示的URL識別請求所尋址的web服務(如果不僅過濾SOAP請求,還過濾其他類型的請求,則其他技術可用于識別在進入請求中尋址的web服務)。
步驟102包括可選地在注冊庫30中進行查找以獲得對請求所尋址的web服務的當前描述,具體而言是確定在運行時要從請求和/或其響應收集哪些信息以及該請求是否要(額外地)被修改。可以在查找步驟102期間獲得并且在后續步驟103中被評估的信息可能涉及被尋址的web服務是否被標記進行報告,即在注冊庫的描述中是否標記了要針對該特定web服務收集運行時期數據。在具有數百個web服務的SOA中,只有選定的web服務可能與獲得運行時期信息或修改來自客戶端的請求有關。
如果相應web服務沒有被標記進行報告(即,沒有被標記收集運行時期信息),或者甚至不為過濾器所知,則其在步驟104中被轉發并由所尋址的web服務處理,而不再涉及服務過濾器。在這種情況下,可以發送警報以告知存在未知服務這樣的事實。
否則,在步驟105中從請求收集運行時期信息,例如與請求客戶端、主機、時間戳和大小等有關的信息。所有對運行時期信息的上述替換(以及對進入請求的可能修改)都可以在該步驟中由過濾器獲得。所獲得的運行時期信息可以存儲在本地,如圖4所示,或者被立即發送到注冊庫(未示出)。
在步驟105中從請求中收集了運行時期信息之后,在步驟106中該請求被轉發到web服務。來自web服務的響應在步驟107中被服務過濾器處理,并且同樣地存儲在本地或者被立即轉發到注冊庫。如果步驟105和107的結果被存儲在本地,則還有另一步驟108,其中所有結果被發送到注冊庫。隨后,在步驟109中來自web服務的響應被返回到客戶端。然而,該響應也可以在運行時期信息被發送到注冊庫之前或與之同時被轉發到客戶端。另外,所獲得的數據可以不在每一請求之后被立即發送到注冊庫,而是例如僅在經過了一定量的時間之后或者在處理了預定數目的請求之后被周期性地發送到注冊庫。
結果,注冊庫30包括被注冊的web服務的所有信息,即其描述和運行時期信息。該運行時期信息示例性地顯示在圖5的截屏圖中。如圖所示,所顯示的表包括具有示例性運行時期信息的各個列。而最左邊的一列標識web服務,第三列指示聯系服務的客戶端的IP地址。另外的列指示請求大小和其響應以及用戶、提供web服務的服務器、服務器的端口和URL,該URL被用在請求中以聯系web服務。最后兩列包含請求和相應的響應的時間戳。該簡化示例已經能夠導出關于web服務的性能的有價值信息,因為這兩個時間戳之間的時間差反映了用于為相應請求提供服務的響應時間。
圖6表示可以從注冊庫30獲得的與被注冊的web服務有關的運行時期信息的另一示例。圓形分格圖(pie chart)表示在某一時間段期間對SOA的web服務的若干請求的比較結果。從而,管理員可以容易地識別更常被請求的web服務(例如,web服務“XCITransformerService”)。
如果一個web服務被過多請求,則該情形將反映在圖6的圓形分格圖中,并且管理員可以立即起動應對措施,例如將去往過載的web服務的其他請求重定向到另一端點。結果,所描述的系統和方法允許用戶獲得對所管理的SOA的靜態和動態方面的全局視圖和控制。
權利要求
1.一種用于管理面向服務的體系結構的多個web服務的系統,包括a.注冊庫(30),包括在所述注冊庫(30)中注冊的對所述多個web服務(20)中的每一個的描述;b.服務過濾器(40),其適合于過濾調用在所述注冊庫(30)中注冊的所述web服務(20)中的至少一個的客戶端的至少一個請求(11);c.其中所述服務過濾器(40)適合于根據所述注冊庫(30)中對相應web服務(20)的描述收集關于所述請求(11)的運行時期信息。
2.如權利要求1所述的系統,其中所述服務過濾器(40)還適合于在運行期間根據所述注冊庫(30)中對所述相應web服務(20)的描述修改所述請求(11)。
3.如權利要求2所述的系統,其中修改請求(11)包括將去往第一web服務的請求(11)重定向到在所述注冊庫(30)中注冊的第二web服務。
4.如權利要求1-3中的任何一個所述的系統,其中所述服務過濾器(40)還適合于收集關于被調用的web服務(20)的使用情況的統計數據。
5.如權利要求1-4中的任何一個所述的系統,其中所述服務過濾器(40)還適合于監督被調用的web服務(20)的可用性。
6.如權利要求5所述的系統,其中所述服務過濾器(40)還適合于在被調用的web服務(20)不可用的情況下發出警報。
7.如權利要求1-6中的任何一個所述的系統,其中所述服務過濾器(40)還適合于在運行期間在所述注冊庫(30)中執行至少一次查找,其中所述查找的結果確定對所述請求(11)和/或來自所述web服務(20)的響應的處理。
8.如權利要求1-7中的任何一個所述的系統,還適合于將由所述服務過濾器收集的信息與對所述web服務(20)的描述一同存儲在所述注冊庫(30)中。
9.如權利要求1-8中的任何一個所述的系統,其中所述服務過濾器(40)充當服務代理(45)。
10.一種用于管理面向服務的體系結構的多個web服務的方法,包括以下步驟a.提供注冊庫(30),所述注冊庫(30)包括在所述注冊庫(30)中注冊的對所述多個web服務(20)中的每一個的描述;b.提供服務過濾器(40),所述服務過濾器適合于過濾調用在所述注冊庫(30)中注冊的所述web服務(20)中的至少一個的客戶端(10)的至少一個請求(11);以及c.根據所述注冊庫(30)中對相應web服務(20)的描述利用所述服務過濾器(40)收集關于至少一個web服務(20)的運行時期信息。
11.如權利要求10所述的方法,其中所述服務過濾器(40)在運行期間根據所述注冊庫(30)中對所述相應web服務(20)的描述修改請求(11)。
12.如權利要求11所述的方法,其中所述服務過濾器(40)將去往第一web服務的請求(11)重定向到在所述注冊庫(30)中注冊的第二web服務。
13.如權利要求10-12中的任何一個所述的方法,其中所述服務過濾器(40)收集關于被調用的web服務(20)的使用情況的統計數據。
14.如權利要求10-13中的任何一個所述的方法,其中所述服務過濾器(40)監督被調用的web服務(20)的可用性。
15.如權利要求14所述的方法,其中所述服務過濾器(40)在被調用的web服務(20)不可用的情況下發出警報。
16.如權利要求10-15中的任何一個所述的方法,其中所述服務過濾器(40)在運行期間在所述注冊庫(30)中執行至少一次查找。
17.如權利要求10-16中的任何一個所述的方法,其中所述服務過濾器(40)將所述被收集的信息與對所述web服務(20)的描述一同存儲在所述注冊庫(30)中。
18.如權利要求10-17中的任何一個所述的方法,還包括提供所述服務過濾器(40)充當服務代理(45)的步驟。
全文摘要
本發明公開了一種用于管理面向服務的體系結構(SOA)的多個web服務的系統,包括注冊庫(30)和服務過濾器(40),注冊庫(30)包括在注冊庫(30)中注冊的對多個web服務(20)中的每一個的描述,服務過濾器(40)適合于過濾調用在注冊庫中注冊的web服務(20)中的至少一個的客戶端(10)的至少一個請求,其中服務過濾器(40)適合于根據注冊庫(30)中對相應web服務(20)的描述收集關于請求的運行時期信息。
文檔編號H04L29/08GK101087312SQ200710110709
公開日2007年12月12日 申請日期2007年6月1日 優先權日2006年6月2日
發明者約翰尼斯·瓦格納, 哈拉德·思科寧, 比約恩·布拉烏爾, 烏爾里奇·赫伯勒 申請人:軟件股份公司