一種Web服務模擬的方法及其系統和服務代理系統的製作方法
2023-12-02 13:59:41 3
一種Web 服務模擬的方法及其系統和服務代理系統的製作方法
【專利摘要】本發明實施例提供了一種Web服務模擬的方法及其系統和服務代理系統,用以解決現有技術中由於服務提供系統宕機導致研發測試的中斷或者在線提供服務的故障。其中,該Web服務模擬的方法是通過服務代理系統攔截服務調用終端發出的調用請求報文,解析該調用請求報文,並查找該調用請求報文請求調用的方法對應的模擬方式;若查找結果為全部模擬方式,則服務代理系統生成響應報文並返回至服務調用終端;若查找結果為部分模擬方式,則服務代理系統轉發該調用請求報文至服務提供系統,在接收到服務提供系統返回的響應報文後,處理接收到的響應報文並返回至服務調用終端來實現的。該Web服務模擬系統包括該服務代理系統和服務提供系統。
【專利說明】一種Web服務模擬的方法及其系統和服務代理系統
【技術領域】
[0001]本發明涉及面向服務構架(Service-Oriented Architecture, S0A)應用【技術領域】,尤其涉及一種Web服務模擬的方法及其系統和服務代理系統。
【背景技術】
[0002]隨著現代社會科學技術的發展,計算機系統已經成為各行各業所依賴的工具,而在其中起著核心作用的是計算機軟體系統。隨著企業的不斷發展和信息技術(InformationTechnology, IT)系統的不斷建設,企業的IT應用系統越來越多,應用日益複雜,企業對應用系統之間的互聯互通也提出了新的要求。而在大型的網際網路應用中,其核心職能系統通常有幾十個甚至更多,系統之間的服務依賴也非常複雜。
[0003]SOA是一種架構模型,它將企業應用中分散的功能組織成可以共享的基於標準的服務,這些服務能夠迅速地被組合和重用,從而達到了快速響應業務需求的目的;同時,在企業級應用領域,隨著應用規模的不斷擴大,各個系統之間的集成和交互變得越來越重要。在SOA環境中,系統不可避免地要與其他系統交互,可以是基於簡單對象訪問協議(SimpleObject Access Protocol, SOAP)的Web服務,基於消息隊列,甚至是基於遠程過程調用協議(Remote Procedure Call Protocol, RPC)的遠程調用。而在大型的網際網路應用中,其核心職能系統通常有幾十個甚至更多,系統之間的服務依賴也非常複雜。這種應用架構環境下,產生了以下幾個問題:
[0004]比如,在大型IT企業所使用的系統在上線使用之前研發測試過程中以及在正常上線使用過程中,由於應用系統眾多,且系統之間的依賴關係非常複雜,這樣服務提供系統與服務調用系統之間交互非常多,服務提供系統的壓力非常大,只要服務提供系統中的某一個伺服器因為硬體故障或者其它種種原因宕機,系統間的服務調用就無法正常進行,這樣就會導致研發測試的中斷或者在線提供服務的故障。
【發明內容】
[0005]本發明實施例提供了一種Web服務模擬的方法及其系統和服務代理系統,用以解決現有技術中,由於應用系統眾多,且系統之間的依賴關係非常複雜使得服務提供系統的壓力較大可能導致研發測試的中斷或者在線提供服務的故障的問題。
[0006]基於上述問題,本發明實施例提供的一種Web服務模擬的方法,包括:
[0007]服務代理系統攔截服務調用終端發出的調用請求報文,解析出此調用請求報文包含的服務名、方法名和輸入參數類型,並根據預設的各服務的服務名、服務所包含的各方法的方法名、各方法的輸入參數類型及各方法模擬方式的對應關係查找所述調用請求報文請求調用的方法對應的模擬方式;
[0008]若查找結果為全部模擬方式,則所述服務代理系統根據預設的第一模擬模板生成響應報文並返回至所述服務調用終端;
[0009]若查找結果為部分模擬方式,則所述服務代理系統轉發該調用請求報文至服務提供系統,在接收到所述服務提供系統返回的響應報文後,按照預設的第二模擬模板對接收到的響應報文進行處理後返回至服務調用終端。
[0010]本發明實施例提供的一種服務代理系統包括:
[0011]報文攔截模塊,用於攔截服務調用終端發出的調用請求報文;
[0012]報文解析模塊,用於解析出所述調用請求報文包含的服務名、方法名和輸入參數類型,並根據預設的各服務的服務名、服務所包含的各方法的方法名、各方法的輸入參數類型及各方法模擬方式的對應關係查找所述調用請求報文請求調用的方法對應的模擬方式;
[0013]報文構造模塊,用於在查找結果為全部模擬方式時,根據預設的第一模擬模板生成響應報文,並用於在查找結果為部分模擬方式時以及接收到所述服務提供系統返回的響應報文後,按照預設的第二模擬模板對接收到的響應報文進行處理;
[0014]報文轉發模塊,用於轉發所述報文構造模塊根據所述的第一模擬模板生成的響應報文至所述服務調用終端;以及在所述方法被設置為部分模擬方式時,轉發該調用請求報文至服務提供系統,並轉發所述報文構造模塊根據所述第二模擬模板處理後的響應報文至所述服務調用終端。
[0015]本發明實施例還提供一種Web服務模擬的系統,包括本發明實施例提供的上述服務代理系統以及服務提供系統,所述服務提供系統用於當接收所述服務代理系統轉發的調用請求報文時,生成響應報文返回至所述服務代理系統。
[0016]本發明實施例的有益效果包括:
[0017]本發明實施例提供了一種Web服務模擬的方法及其系統和服務代理系統,利用服務代理系統響應服務調用終端對被設置為全部模擬方式的方法的調用,當服務提供系統由於硬體故障或者其他原因宕機時,服務代理系統可以直接響應服務調用系統,從而隔離了服務提供系統對服務調用系統的影響,使得在服務提供系統壓力較大或者宕機的情況下,研發測試可以繼續或者在線提供服務不會出故障。
【專利附圖】
【附圖說明】
[0018]圖1為本發明實施例提供的一種Web服務模擬系統在具體應用中的架構圖;
[0019]圖2為本發明實施例提供的一種Web服務模擬的方法的流程圖;
[0020]圖3為本發明實施例提供的服務代理系統中添加新的服務的流程圖;
[0021]圖4為本發明實施例提供的某一服務中的某一方法的第一模擬模板的不意圖;
[0022]圖5為本發明實施例提供的服務代理系統根據第一模擬模板生成的響應報文的示意圖;
[0023]圖6為本發明實施例提供的服務代理系統轉發調用請求報文至服務提供系統的流程圖;
[0024]圖7為本發明實施例提供的某一服務中的某一方法的第二模擬模板的示意圖;
[0025]圖8為本發明實施例提供的服務提供系統返回的響應報文的示意圖;
[0026]圖9為本發明實施例提供的根據第二模擬模板對服務提供系統返回的響應報文進行處理後的響應報文的示意圖;
[0027]圖10為本發明實施例提供的一種Web服務模擬的方法在具體應用時進行服務模擬的流程圖;
[0028]圖11為本發明實施例提供的一種服務代理系統的結構示意圖;
[0029]圖12為本發明實施例提供的一種Web服務模擬的系統的結構示意圖。
【具體實施方式】
[0030]下面結合說明書附圖,對本發明實施例提供的一種Web服務模擬的方法及其系統和服務代理系統的【具體實施方式】及其能夠達到的有益效果進行詳細的闡述。
[0031]本發明實施例提供的一種Web服務模擬系統在具體應用時的架構如圖1所示,包括:
[0032]服務代理系統11,位於服務調用系統13和服務提供系統12之間,它既可以是軟體模塊,也可以是能夠實現代理功能的硬體設備;
[0033]服務提供系統12,可以提供服務或方法以供其他系統調用;
[0034]服務調用系統13,可以為用戶,也可以為終端設備。
[0035]圖2是本發明實施例提供的一種Web服務模擬的方法的流程圖,該方法包含下述步驟:
[0036]S201、服務代理系統攔截服務調用終端發出的調用請求報文,此服務調用終端是服務調用系統中的某一個終端;
[0037]本步驟通過服務調用終端將調用請求報文中的目標IP位址由提供該調用請求報文中請求調用的方法的服務提供系統中的地址修改為服務代理系統中的地址來實現;
[0038]S202、服務代理系統解析出此調用請求報文包含服務名、方法名、輸入參數類型;
[0039]S203、服務代理系統根據預設的各服務的服務名、服務所包含的各方法的方法名、各方法的輸入參數類型及各方法模擬方式的對應關係查找所述調用請求報文請求調用的方法對應的模擬方式,若查找結果為全部模擬方式,則執行S204,若查找結果為部分模擬方式,則執行S206 ;
[0040]S204、服務代理系統根據預設的第一模擬模板生成響應報文;
[0041]S205、服務代理系統將S204中生成的響應報文返回至服務調用終端;
[0042]這樣,服務調用終端不再依賴服務提供系統,可以減小服務提供系統的壓力,避免由於服務提供系統的故障導致的服務調用的不穩定;
[0043]S206、服務代理系統轉發該調用請求報文至服務提供系統;
[0044]在S206 之後,執行 S207 ;
[0045]S207、服務代理系統接收服務提供系統返回的響應報文;
[0046]S208、服務代理系統根據預設的第二模擬模板處理在S207中接收到的響應報文;
[0047]S209、服務代理系統將在S208中處理後的響應報文返回至服務調用終端。
[0048]進一步地,S203中預先設置各服務的服務名、服務所包含的各方法的方法名、各方法的輸入參數類型及各方法模擬方式的對應關係具體通過下述方式來實現:
[0049]服務代理系統訪問預先設置的各服務對應的Web服務描述語言WSDL的地址,獲得各服務對應的WSDL描述;或者服務代理系統接收服務的WSDL描述文件獲得此服務的WSDL描述;服務代理系統解析每個服務對應的WSDL描述,獲得此服務的服務名、此服務中包含的所有方法的方法名、各方法的輸入參數類型及輸出參數的參數名、參數類型並存儲;服務代理系統將獲得的每個服務的服務名、所包含的各方法的方法名、各方法的輸入參數類型與設置的各方法模擬方式對應存儲。
[0050]圖3給出了預先設置各服務的服務名、服務所包含的各方法的方法名、各方法的輸入參數類型及各方法模擬方式的對應關係的實現流程:
[0051]S301,服務代理系統中的WSDL獲取器從操作者接收某個服務的WSDL地址或者WSDL描述文件,若WSDL獲取器接收的是WSDL地址,則執行S302,若WSDL獲取器接收的是WSDL描述文件,則執行S304 ;
[0052]S302, WSDL獲取器訪問接收到的WSDL地址,此WSDL地址例如可以位於服務提供系統中;然後執彳丁 S303 ;
[0053]S303,服務提供系統向WSDL獲取器返回其請求訪問的WSDL描述文件;
[0054]S304,WSDL獲取器將獲取到的WSDL描述文件發送至服務代理系統中的WSDL解析器;
[0055]S305, WSDL解析器解析S304中接收的WSDL描述文件;如服務中包含的所有的方法、各方法的方法名、各方法的輸入參數類型和輸出參數的參數名、參數類型;
[0056]S306, WSDL解析器將解析出的結果發送至資料庫訪問對象請求存儲。
[0057]S307,資料庫訪問對象將WSDL解析器解析出的結果放入資料庫中存儲;
[0058]S308,資料庫向操作者返回添加成功的消息;
[0059]S309,資料庫接收操作者對添加的該服務中包含的各方法設置的模擬方式;
[0060]S310,資料庫將該服務的服務名、該服務所包含的各方法的方法名、各方法的輸入參數類型與各方法的模擬方式的對應存儲。
[0061]然後,在該服務中所包含的各個方法的方法名、各個方法的輸入參數類型及各個方法的模擬方式的對應關係全部存入到資料庫後,操作者繼續添加新的服務以及設置添加的新的服務中包含的所有的方法的模擬方式。
[0062]進一步地,步驟S204中的第一模擬模板通過下述步驟預先生成:
[0063]首先,服務代理系統根據各服務的服務名、服務所包含的各方法的方法名、各方法的輸入參數類型及各方法的模擬方式的對應關係查找出設置為全部模擬方式的方法;
[0064]然後,針對設置為全部模擬方式的每個方法,由操作者根據解析得到的該方法的每一個輸出參數的參數類型為其設置對應的參數值,然後操作者將設置的輸出參數的參數值及對應輸出參數的參數名、參數類型作為第一模擬模板保存在資料庫中。
[0065]下面對第一模擬模板的格式進行舉例說明,圖4給出了一種服務名為S的服務中某一方法的第一模擬模板的格式(當然本申請實施例並不限於此種格式),該方法的方法名為F,方法F包含兩個輸出參數,其參數名分別為參數SFl和參數SF2,參數SFl的參數類型為int,參數SF2的參數類型為float,操作者根據參數SFl的參數類型int將其參數值設為整數A,根據參數SF2的參數類型float將其值設為單精度浮點數B。
[0066]進一步地,在步驟S204中,服務代理系統根據預設的第一模擬模板生成響應報文的具體過程為:
[0067]服務代理系統首先判斷調用請求報文所使用的協議,然後根據該調用請求報文所使用的協議生成相應格式的響應報文,最後再將存儲的與該調用請求報文請求調用的方法對應的第一模擬模板的內容填入上述響應報文中。[0068]下面以服務調用終端使用SOAP協議發送調用請求報文為例,說明服務代理系統根據上述第一模擬模板生成響應報文的過程:
[0069]首先,服務代理系統判斷出服務調用終端發送的調用請求報文使用的協議為SOAP協議;具體的判斷過程例如可以採用下述方式:服務代理系統可針對不同的協議預先配置不同的代理入口,假設服務代理系統開啟了兩個埠 8080、8081,其中8080埠綁定了SOAP協議,8081埠綁定了 TCP協議,因此若服務代理系統的8080埠接收到調用請求報文,則認為該調用請求報文使用SOAP協議。
[0070]然後,服務代理系統生成SOAP協議格式的響應報文,它包含一個SOAP封套,SOAP封套中包含SOAP報頭(可以有也可以沒有)和SOAP報文內容(必須有),其中SOAP報文內容為保存在第一模擬模板上的內容,而該第一模擬模板的內容如圖4所示,因此服務代理系統返回給服務調用終端的響應報文如圖5所示。
[0071]上述全部模擬方式的方法的調用可以應用於不需要關心服務提供系統內部細節的情況,此時當服務提供系統由於硬體故障或者其他原因宕機時,服務代理系統可以直接響應服務調用系統,從而隔離了服務提供系統對服務調用系統的影響,使得在服務提供系統壓力較大或者宕機的情況下,研發測試可以繼續或者在線提供服務不會出故障。
[0072]另外,這種全部模擬方式的情況還可以應用於研發測試環境中,此時通過服務代理系統為服務調用系統返迴響應報文從而便捷地檢驗服務調用系統中的一些漏洞。下面以兩個具體的實例來說明:
[0073]在某一測試場景中,A系統需要調用B系統中的某個服務,則此時A系統需要設置一個超時時間t以便A系統在發送調用請求報文之後等待超過t時間而B系統仍未返迴響應報文時A系統可以主動中斷請求。否則,若A系統一直等待B系統的響應報文,會影響A系統對其他服務的處理,甚至若A系統調用的多個服務都未得到響應的話,那麼A系統中等待響應的服務會越來越多,最終可能導致系統故障。
[0074]而在測試過程中,需要驗證此超時處理機制是否可靠,因此可以在A系統和B系統之間設置一個服務代理系統,A系統通過該服務代理系統調用B系統的服務。在全部模擬的情況下,服務代理系統的操作者可以在服務代理系統中設置一個響應等待時間tl,其中tl>t,即服務代理系統在接收到調用請求報文後等待tl時間後再向A系統返迴響應報文,若A系統不再對返回的響應報文進行處理,則說明A系統設置了超時處理機制;若々系統繼續對返回的響應報文進行處理,則說明A系統未設置超時處理機制。這樣,可以在測試中驗證服務調用系統是否設置了超時處理機制,或者設置的超時處理機制是否可靠。
[0075]在另一測試場景中,在SOA中,服務可能分布在各個系統中,如A系統和B系統分別具有提供某種服務的能力,服務調用系統(A系統)請求調用服務提供系統(B系統)中的服務,在獲取到服務提供系統(B系統)返回的結果後會繼續進行自身業務的處理,這時就需要考慮服務調用系統(A系統)對服務提供系統(B系統)返回的結果的冪等性控制。如A系統具有為客戶轉帳成功後向客戶收取一定費用的功能,而B系統具有轉帳的服務,A系統需要調用B系統的轉帳服務,A系統在接收到B系統的轉帳成功的結果後直接對客戶進行扣費,在測試時需要考慮的是對於客戶的同一轉帳操作,轉帳成功後只能扣費一次。而在服務調用過程中,B系統可能會將轉帳成功的結果多次返回到A系統,這裡就需要A系統有冪等性控制,即針對同一轉帳操作,不論A系統收到幾次B系統返回的轉帳成功的結果,A系統都只扣費一次。在驗證A系統是否具有冪等性控制時,就可以通過在A系統和B系統之間設置服務代理系統,A系統通過服務代理系統調用B系統的轉帳服務,B系統通過服務代理系統向A系統返迴轉帳成功的結果,可以很方便地在服務代理系統中設置向A系統返迴轉帳成功的結果的次數,以模擬B系統將轉帳成功的結果多次返回到A系統的場景。然後根據A系統對同一轉帳操作的扣費次數來判斷A系統是否具有冪等性控制。
[0076]進一步地,在步驟S206中,服務代理系統轉發該調用請求報文至服務提供系統的具體過程如圖6所示:
[0077]S601、服務代理系統查找請求調用的方法的轉發至服務提供系統的地址;
[0078]其具體過程為,服務代理系統根據調用請求報文的源IP、服務名、方法名和輸入參數類型,在預先存儲的服務名、方法名、輸入參數類型、調用請求報文的源IP與服務提供系統的地址的對應關係中查找調用請求報文需要轉發至服務提供系統的地址;
[0079]在研發測試中,服務提供系統以及服務調用系統中可能有多個研發任務同時進行,例如當有兩個研發任務,任務I和任務2,同時進行時,服務提供系統中的一部分終端為任務I提供服務調用,另一部分終端為任務2提供服務調用,服務調用系統中的一部分終端進行任務I的研發,另一部分終端進行任務2的研發,研發測試人員希望在處理服務調用時,由研發任務I而發出的調用請求報文僅由研發任務I的系統來處理,由研發任務I而發出的調用請求報文僅由研發任務I的系統來處理,因此在查找調用請求報文轉發至服務提供系統的地址時就需要知道調用請求報文的源IP ;並且由於同一個服務中可能會包含方法名相同的兩個方法,這兩個方法唯一的區別是它們的輸入參數類型不同,因此服務提供系統必須根據服務名、方法名、輸入參數類型三種信息才能判斷服務調用終端究竟要調用哪一個方法。因此,在此步驟中查找請求調用的方法的轉發至服務提供系統的地址不能僅僅根據方法名來查找,而要首先根據調用請求報文的源IP來判斷該調用請求報文要由服務提供系統中的那些終端來處理,再根據服務名,方法名以及輸入參數類型首先判斷服務調用系統究竟要調用哪個方法,然後再在服務提供系統中處理該調用請求報文的那些終端中查找處理該請求調用的方法的地址。
[0080]若查找到,則執行步驟S602,若查找不到,則執行步驟S603 ;
[0081]在步驟S602中,服務代理系統轉發調用請求報文至查找到的服務提供系統的地址;
[0082]在步驟S603中,服務代理系統判斷是否預先設置了默認轉發地址,若是,則執行步驟S604,若否,則執行步驟S605 ;
[0083]在步驟S604中,服務代理系統轉發調用請求報文至默認轉發地址;
[0084]在步驟S605中,服務代理系統向服務調用終端返回錯誤告警信息。
[0085]進一步地,步驟S208中的第二模擬模板通過下列步驟生成:
[0086]首先,服務代理系統根據各服務的服務名、服務所包含的各方法的方法名、各方法的輸入參數類型及各方法的模擬方式的對應關係查找出設置為部分模擬方式的方法;
[0087]然後,針對設置為部分模擬方式的每個方法,操作者首先決定該方法的全部輸出參數中的那些輸出參數需要模擬,然後再為需要模擬的輸出參數根據其參數類型設置相應的參數值,最後將需要模擬的輸出參數的參數名、參數類型及設置的對應的參數值保存為第二模擬模板。[0088]圖7給出了服務名為S的服務中某一方法的第二模擬模板的格式(當然本申請實施例並不限於此種格式),該方法的方法名為M,包含三個輸出參數,其參數名分別為參數SM1、參數SM2和參數SM3,參數SMl的參數類型為int,參數SM2的參數類型為float,參數SM3的參數類型為double,首先,操作者確定在該方法M的所有輸出參數中僅需要模擬SM3,因此操作者根據參數SM3的參數類型double將其參數值設為雙精度浮點數D,因此該方法M的第二模擬模板僅保存了服務S、方法M以及輸出參數SM3的參數名、參數類型以及參數值的內容。
[0089]進一步地,在步驟S208中,服務代理系統根據預設的第二模擬模板處理在步驟S207中接收到的響應報文的具體過程為:
[0090]服務代理系統將該響應報文所包含的與第二模擬模板所包含的輸出參數的參數名一致的輸出參數的參數值修改為與第二模擬模板中該輸出參數的參數名對應的參數值。
[0091]下面仍然以服務調用終端使用SOAP協議發送調用請求報文,請求調用的方法為服務S中的方法M為例,說明服務代理系統根據第二模擬模板處理在S207中接收到的響應報文的過程:
[0092]服務代理系統在S207中接收到的服務提供系統返回的響應報文如圖8所示,其中SOAP報文的內容包括服務S、方法M和三個輸出參數的參數名、參數類型以及相應的參數值,參數SMl的參數類型為int,其參數值為整數J,參數SM2的參數類型為float,其參數值為單精度浮點數K,參數SM3的參數類型為double,其參數值為雙精度浮點數L。
[0093]然後,服務代理系統11根據圖7所示的第二模擬模板將在S207中接收到的響應報文中的參數SM3的參數值由雙精度浮點數L替換為操作者為參數SM3設置的參數值雙精度浮點數D,即根據圖7所示的第二模擬模板處理後的SOAP報文如圖9所示,處理前與處理後的SOAP報文的區別是參數SM3的參數值不同了,處理前參數SM3的參數值為L,處理後參數SM3的參數值為D。
[0094]在應用時對於複雜的服務,一個方法的輸出參數通常會比較多,操作者要完整設置模擬全部輸出參數工作量會比較大,因此這裡藉助服務提供系統返回的響應報文,操作者只需設置自己需要模擬的輸出參數即可,這樣一方面可以保證返回的輸出參數的完整性,另一方面也克服了模擬所有輸出參數比較繁瑣的問題。
[0095]下面以一個具體的實例來說明:A系統可以提供一種服務AS,此服務的輸出參數有ASF1、ASF2,其中ASFl處理該服務得到的真實數據,ASF2為對該服務進行處理的結果狀態,可能有ASF21、ASF22幾種返回值;而當B系統需要調用A系統的服務AS時,B系統需要對調用AS可能出現的各種結果狀態進行處理,而在實際應用中B系統是不了解A系統的服務AS的具體實現細節的,在沒有服務代理系統時若需要模擬AS服務的各種結果狀態勢必需要投入了解AS服務的實現細節才能夠準確模擬出來,而若採用全部模擬的方式由於方法AS的輸出參數ASFl內容可能會非常複雜,要全部模擬,設置起來會非常繁瑣。因此採用部分模擬,即只設置需要模擬的輸出參數,其餘輸出參數的內容仍然由A系統在響應該方法時生成,從而簡化模板設置,提高效率。
[0096]例如,A系統提供的服務AS為查看用戶帳號餘額的服務,B系統調用A系統的服務AS時,A系統向B系統返回所查看的用戶帳號的餘額(對應輸出參數ASF1),並向B系統返回該用戶帳號的狀態(對應輸出參數ASF2),如當該用戶帳號的餘額不足10元時,向B系統返回餘額不足的信息(對應ASF21 ),而當該用戶帳號的餘額超過某一規定額度時,向B系統返回餘額超限的信息(對應ASF22),由於B系統需要對調用AS可能出現的各種結果狀態進行處理,因此在A系統和B系統之間設置服務代理系統,A系統將B系統調用的服務AS的輸出參數ASFl和ASF2通過代理系統返回給B系統,採用部分模擬的方式,服務代理系統可以修改ASF2的值以便模擬服務AS的各種結果狀態,檢驗B系統是否能對不同的結果狀態做出正確處理,如B系統收到餘額不足的信息時,是否能提示用戶充值,或者在收到餘額超限的信息時,是否能提示用戶處理帳戶以使餘額不再超限。而對服務AS的輸出參數ASF1,代理系統可以直接採用A系統在處理該服務時生成的值,不必在模擬ASFl的參數值。
[0097]在軟體測試過程中,採用服務代理系統的優點是可以方便的模擬A系統中服務AS輸出結果的各種狀態值,以檢驗B系統對服務AS所有返回的結果狀態能否正確處理,以降低漏洞發生的概率,該漏洞是指B系統對服務AS返回的結果狀態不能正確處理。服務代理系統可以更為方便的得到服務AS的各種返回的結果狀態,從而提高研發效率,常規測試方式如Debug也能做到這種程度的測試模擬,但是其模擬成本會非常高。
[0098]較佳地,本發明實施例提供的一種Web服務模擬的方法還包括調用請求報文中請求調用的方法被設置為非模擬方式的情況,在這種情況下,服務代理系統直接轉發調用請求報文至服務提供系統,其轉發的具體過程與圖6中所示的過程類似,在此不再贅述;服務提供系統在接收到轉發的調用請求報文後,進行正常處理,然後向服務代理系統返迴響應報文,服務代理系統對該響應報文不作任何額外處理直接轉發至服務調用終端。
[0099]下面以基於SOAP的Web服務為例,說明本發明實施例提供的一種Web服務模擬的方法在具體應用時進行服務模擬的過程,如圖10所示,該過程包括以下步驟:
[0100]S1001、服務調用系統中的某個服務調用終端發出基於SOAP協議的調用請求報文,
[0101]由於服務調用系統已經將需要訪問的服務提供系統中的地址修改為服務代理系統中的地址,因此服務調用系統發出調用請求報文後,實際上是SOAP調用請求報文直接發送到服務代理系統中的接收地址;
[0102]S1002、服務代理系統中的報文攔截器攔截SOAP調用請求報文;
[0103]S1003、報文攔截器發送SOAP調用請求報文至服務代理系統中的報文解析器102 ;
[0104]S1004、報文解析器取出調用請求報文的源IP及其中的SOAP消息並解析該SOAP消息,得到服務名、方法名和輸入參數類型,並根據預先存儲在資料庫(圖10中未示出)中的各服務的服務名、服務所包含的各方法的方法名、各方法的輸入參數類型及各方法的模擬方式的對應關係查找出請求調用的方法的模擬方式;
[0105]S1005、報文解析器發送SOAP調用請求報文、源IP、解析出的請求調用的服務名、方法名、輸入參數類型以及查找到的請求調用的方法的模擬方式至服務代理系統中的報文轉發器;
[0106]若請求調用的方法被設置為全部模擬方式則執行S1006 ;若請求調用的方法被設置為部分模擬或者非模擬方式則執行S1007 ;
[0107]S1006、報文轉發器轉發SOAP調用請求報文至服務代理系統中的報文構造器;
[0108]S1007、報文轉發器根據預先存儲在資料庫中的服務名、方法名、輸入參數類型、調用請求報文的源IP以及轉發至服務提供系統的地址的對應關係查找出被設置為部分模擬方式或非模擬方式的請求調用的方法的轉發至服務提供系統的地址;
[0109]S1008、報文轉發器轉發SOAP調用請求報文至S1007中查找到的地址;若在S1007中沒有查找到轉發至服務提供系統的地址,並且也沒有預設的默認地址,則向服務調用系統返回錯誤告警信息,這種情況在圖10中未示出;
[0110]S1009,報文構造器在接收到調用請求報文後,根據該請求調用的方法所對應的存儲在資料庫中的第一模擬模板生成響應報文;
[0111]S1010,報文構造器將響應報文發送至報文轉發器;
[0112]S1011、報文轉發器轉發響應報文至服務調用系統中的發出調用請求報文的服務調用終端;
[0113]S1012、服務提供系統根據接收到的調用請求報文生成響應報文;
[0114]S1013、服務提供系統將生成的響應報文返回至報文轉發器;
[0115]若請求調用的方法被設置為部分模擬方式,則執行S1014 ;若請求調用的方法被設置為非模擬方式,則執行S1015 ;
[0116]S1014、報文轉發器將接收到的響應報文轉發至報文構造器;
[0117]S1015、報文轉發器將接收到的響應報文轉發至服務提供系統中的發送調用請求報文的服務調用終端;
[0118]S1016、報文構造器根據存儲在資料庫中的與該請求調用的方法相對應的第二模擬模板處理S1014中接收到的響應報文;
[0119]S1017、報文構造器將處理過的響應報文發送至報文轉發器;
[0120]S1018、報文轉發器將接收到的響應報文轉發至服務調用系統中的發送調用請求報文的服務調用終端。
[0121]基於同一發明構思,本發明實施例還提供了一種服務代理系統和Web服務模擬的系統。
[0122]本發明實施例提供的一種服務代理系統,如圖11所示,包括:
[0123]報文攔截模塊111,用於攔截服務調用終端發出的調用請求報文;
[0124]報文解析模塊112,用於解析出所述調用請求報文包含服務名、方法名、輸入參數類型,並根據預設的各服務的服務名、服務所包含的各方法的方法名、各方法的輸入參數類型及各方法模擬方式的對應關係查找所述方法的模擬方式;
[0125]報文構造模塊113,用於在所述方法被設置為全部模擬方式時,根據預設的第一模擬模板生成響應報文,並用於在所述方法被設置為部分模擬方式時以及接收到所述服務提供系統返回的響應報文後,按照預設的第二模擬模板對接收到的響應報文進行處理;
[0126]報文轉發模塊114,用於轉發所述報文構造模塊根據所述的第一模擬模板生成的響應報文至所述服務調用終端;以及在所述方法被設置為部分模擬方式時,轉發該調用請求報文至服務提供系統12,並轉發所述報文構造模塊根據所述第二模擬模板處理後的響應報文至所述服務調用終端。
[0127]進一步地,圖11所示的本發明實施例提供的服務代理系統還包括:
[0128]WSDL獲取模塊115,用於訪問預先設置的各服務對應的WSDL的地址,獲得各服務對應的WSDL描述;或者用於接收服務的WSDL描述文件獲得此服務的WSDL描述;
[0129]WSDL解析模塊116,用於解析每個服務對應的WSDL描述,獲得此服務的服務名、此服務中包含的所有方法的方法名、各方法的輸入參數類型和輸出參數的參數名及參數類型;
[0130]存儲摸塊117,用於存儲獲得的每個服務的服務名、所包含的各方法的方法名、各方法的輸入參數類型和輸出參數的參數名及參數類型,並用於存儲各服務的服務名、服務所包含的各方法的方法名、各方法的輸入參數類型與設置的各方法模擬方式的對應關係;
[0131]在具體應用時,存儲模塊117既可以是資料庫也可以是能夠實現存儲功能的其他模塊,如果存儲模塊117時資料庫,則該服務代理系統中還可以包括資料庫訪問對象,用於對資料庫中的數據進行讀取和存儲的管理。
[0132]進一步地,圖11所示的本發明實施例提供的服務代理系統,還包括:
[0133]第一模擬模板生成模塊118,用於根據各服務的服務名、服務所包含的各方法的方法名、各方法的輸入參數類型及各方法的模擬方式的對應關係查找出被設置為全部模擬方式的方法,並針對被設置為全部模擬方式的每個方法,根據該方法的每一個輸出參數的參數類型設置對應參數值,將設置的輸出參數的參數值及對應輸出參數的參數名、參數類型保存為第一模擬模板;
[0134]第二模擬模板生成模塊119,用於根據各服務的服務名、服務所包含的各方法的方法名、各方法的輸入參數類型及各方法的模擬方式的對應關係查找出被設置為部分模擬方式的方法;並針對被設置為部分模擬方式的每個方法,根據該方法的全部輸出參數中的需要模擬的輸出參數的參數類型設置相應的參數值,將需要模擬的輸出參數的參數名、參數類型及設置的對應的參數值保存為第二模擬模板。
[0135]進一步地,存儲模塊117還用於存儲被設置為全部模擬方式的各方法的第一模擬模板,並用於存儲被設置為部分模擬方式的各方法的第二模擬模板。
[0136]進一步地,報文轉發模塊114,具體用於根據調用請求報文中包含的服務名、方法名、輸入參數類型和源IP位址,在預先存儲的服務名、方法名、輸入參數類型和源IP與轉發至服務提供系統的地址的對應關係中查找所述調用請求報文請求調用的方法的轉發至服務提供系統的地址;若查找不到,則向服務調用終端返回錯誤告警信息或將調用請求報文轉發至默認轉發地址;若查找到,則將調用請求報文轉發至查找到的服務提供系統的地址。
[0137]進一步地,報文構造模塊114,具體用於在調用請求報文請求調用的方法被設置為全部模擬方式時,根據所述調用請求報文所使用的協議,生成相應格式的響應報文,並將存儲的與所述調用請求報文請求調用的方法對應的第一模擬模板的內容填入該報文中;並用於在調用請求報文請求調用的方法被設置為部分模擬方式以及接收到服務提供系統返回的響應報文後,將該響應報文所包含的與存儲的第二模擬模板所包含的輸出參數的參數名和參數類型一致的輸出參數的參數值修改為與該第二模擬模板中該輸出參數的參數名和參數類型對應的參數值。
[0138]較佳地,報文轉發模塊114還用於在調用請求報文請求調用的方法被設置為非模擬方式時,轉發調用請求報文至服務提供系統12,並在接收到服務提供系統12返回的響應報文後,對接收到的響應報文不做額外的處理直接返回至服務調用終端。
[0139]本發明實施例提供的Web服務模擬的系統,如圖12所示,包括:
[0140]本發明實施例提供的上述服務代理系統11 ;
[0141]服務提供系統12,用於接收到服務代理系統11轉發的調用請求報文時,生成響應報文返回至所述服務代理系統。
[0142]本發明實施例提供的服務代理系統11針對不同的通信協議對外提供不同的模擬接口,即它可以解析不同通信協議的調用請求報文,也就是說當服務調用終端需要調用某方法時,發送的調用請求報文不局限於某一種通信協議。
[0143]顯然,本領域的技術人員可以對本發明進行各種改動和變型而不脫離本發明的精神和範圍。這樣,倘若本發明的這些修改和變型屬於本發明權利要求及其等同技術的範圍之內,則本發明也意圖包含這些改動和變型在內。
【權利要求】
1.一種Web服務模擬的方法,其特徵在於,包括: 服務代理系統攔截服務調用終端發出的調用請求報文,解析出調用請求報文包含的服務名、方法名和輸入參數類型,並根據預設的各服務的服務名、服務所包含的各方法的方法名、各方法的輸入參數類型及各方法模擬方式的對應關係查找所述調用請求報文請求調用的方法對應的模擬方式; 若查找結果為全部模擬方式,則所述服務代理系統根據預設的第一模擬模板生成響應報文並返回至所述服務調用終端; 若查找結果為部分模擬方式,則所述服務代理系統轉發該調用請求報文至服務提供系統,在接收到所述服務提供系統返回的響應報文後,按照預設的第二模擬模板對接收到的響應報文進行處理後返回至服務調用終端。
2.如權利要求1所述的方法,其特徵在於,各服務的服務名、服務所包含的各方法的方法名、各方法的輸入參數類型及各方法模擬方式的對應關係通過下述方式預先設置: 服務代理系統訪問預先設置的各服務對應的Web服務描述語言WSDL的地址,獲得各服務對應的WSDL描述; 或者服務代理系統接收服務的WSDL描述文件獲得此服務的WSDL描述; 服務代理系統解析每個服務對應的WSDL描述,獲得此服務的服務名、此服務中包含的所有方法的方法名、各方法的輸入參數類型及輸出參數的參數名、參數類型並存儲; 服務代理系統將獲得的每個服務的服務名、所包含的各方法的方法名、各方法的輸入參數類型與設置的各方法模擬方式對應存儲。
3.如權利要求2所述的方法, 其特徵在於,所述第一模擬模板通過下述方式預先生成: 服務代理系統查找出各服務中被設置為全部模擬方式的方法; 針對被設置為全部模擬方式的每個方法,根據該方法的輸出參數的參數類型設置對應的參數值,將設置的參數值及對應輸出參數的參數名、參數類型保存為第一模擬模板。
4.如權利要求3所述的方法,其特徵在於,所述服務代理系統根據預設的第一模擬模板生成響應報文,具體包括: 所述服務代理系統根據所述調用請求報文所使用的協議,生成相應格式的響應報文,並將存儲的與所述調用請求報文請求調用的方法對應的第一模擬模板的內容填入所述報文中。
5.如權利要求1所述的方法,其特徵在於,所述服務代理系統轉發該調用請求報文至服務提供系統,具體包括: 所述服務代理系統根據所述調用請求報文中包含的源IP、服務名、方法名和輸入參數類型,在預先存儲的服務名、方法名、輸入參數類型、調用請求報文的源IP與服務提供系統的地址的對應關係中查找所述調用請求報文所需轉發的服務提供系統的地址; 若查找不到,則向服務調用終端返回錯誤告警信息或將所述調用請求報文轉發至預先設置的默認轉發地址; 若查找到,則按照查找到的服務提供系統的地址轉發所述調用請求報文。
6.如權利要求2所述的方法,其特徵在於,所述第二模擬模板通過下述方式生成: 服務代理系統查找出各服務中被設置為部分模擬方式的方法; 針對被設置為部分模擬方式的每個方法,根據該方法的全部輸出參數中的需要模擬的輸出參數的參數類型設置相應的參數值,將需要模擬的輸出參數的參數名、參數類型及對應的參數值保存為第二模擬模板。
7.如權利要求6所述的方法,其特徵在於,按照預設的第二模擬模板對接收到的響應報文進行處理,具體包括: 將服務提供系統返回的響應報文所包含的與所述第二模擬模板所包含的輸出參數的參數名一致的輸出參數的參數值修改為與所述第二模擬模板中該輸出參數的參數名對應的參數值。
8.如權利要求1-7任一項所述的方法,其特徵在於,還包括: 若所述方法被設置為非模擬方式,則服務代理系統轉發所述調用請求報文至服務提供系統,並在接收到服務提供系統返回的響應報文後,將接收到的響應報文返回至服務調用終端。
9.一種服務代理系統,其特徵在於,包括: 報文攔截模塊,用於攔截服務調用終端發出的調用請求報文; 報文解析模塊,用於解析出所述調用請求報文包含的服務名、方法名和輸入參數類型,並根據預設的各服務的服務名、服務所包含的各方法的方法名、各方法的輸入參數類型及各方法模擬方式的對應關係查找所述調用請求報文請求調用的方法對應的模擬方式; 報文構造模塊,用於在查找結果為全部模擬方式時,根據預設的第一模擬模板生成響應報文,並用於在查找結果為部分模擬方式時以及接收到所述服務提供系統返回的響應報文後,按照預設的第二模擬模板對接收到的響應報文進行處理; 報文轉發模塊,用於轉發所述報文構造模塊根據所述的第一模擬模板生成的響應報文至所述服務調用終端;以及在所述方法被設置為部分模擬方式時,轉發該調用請求報文至服務提供系統,並轉發所述報文構造模塊根據所述第二模擬模板處理後的響應報文至所述服務調用終端。
10.如權利要求9所述的系統,其特徵在於,還包括: WSDL獲取模塊,用於訪問預先設置的各服務對應的WSDL的地址,獲得各服務對應的WSDL描述;或者用於接收服務的WSDL描述文件獲得此服務的WSDL描述; WSDL解析模塊,用於解析每個服務對應的WSDL描述,獲得此服務的服務名、此服務中包含的所有方法的方法名、各方法的輸入參數類型和輸出參數的參數名及參數類型; 存儲模塊,用於存儲獲得的每個服務的服務名、所包含的各方法的方法名、各方法的輸入參數類型和輸出參數的參數名及參數類型,並用於存儲各服務的服務名、服務所包含的各方法的方法名、各方法的輸入參數類型與設置的各方法模擬方式的對應關係。
11.如權利要求10所述的系統,其特徵在於,還包括: 第一模擬模板生成模塊,用於查找出各服務中被設置為全部模擬方式的方法,並針對被設置為全部模擬方式的每個方法,根據該方法的輸出參數的參數類型設置對應的參數值,將設置的參數值及對應的輸出參數的參數名、參數類型保存為第一模擬模板。
12.如權利要求11所述的系統,其特徵在於,所述報文構造模塊,具體用於在所述調用請求報文請求調用的方法被設置為全部模擬方式時,根據所述調用請求報文所使用的協議,生成相應格式的響應報文,並將存儲的與所述調用請求報文請求調用的方法對應的第一模擬模板的內容填入所述報文中。
13.如權利要求9所述的系統,其特徵在於,所述報文轉發模塊,具體用於根據所述調用請求報文中包含的源IP、服務名、方法名和輸入參數類型,在預先存儲的服務名、方法名、輸入參數類型、調用請求報文的源IP與服務提供系統的地址的對應關係中查找所述調用請求報文所需轉發的服務提供系統的地址;若查找不到,則向服務調用終端返回錯誤告警信息或將所述調用請求報文轉發至預先設置的默認轉發地址;若查找到,則按照查找到的服務提供系統的地址轉發所述調用請求報文。
14.如權利要求10所述的系統,其特徵在於,還包括: 第二模擬模板生成模塊,用於查找出各服務中被設置為部分模擬方式的方法;針對被設置為部分模擬方式的每個方法,根據該方法的全部輸出參數中的需要模擬的輸出參數的參數類型設置相應的參數值,將需要模擬的輸出參數的參數名、參數類型及對應的參數值保存為第二模擬模板。
15.如權利要求14所述的系統,其特徵在於,所述報文構造模塊,具體用於在所述調用請求報文請求調用的方法被設置為部分模擬方式時以及接收到所述服務提供系統返回的響應報文後,將該響應報文所包含的與所述第二模擬模板所包含的輸出參數的參數名一致的輸出參數的參數值修改為與所述第二模擬模板中該輸出參數的參數名對應的參數值。
16.如權利要求9-15任一項所述的系統,其特徵在於,所述報文轉發模塊,還用於在所述方法被設置為非模擬方式時,轉發所述調用請求報文至服務提供系統,並在接收到服務提供系統返回的響應報文後,將接收到的響應報文直接返回至服務調用終端。
17.—種Web服務模擬的系統,其特徵在於,包括: 如權利要求9-16任一項所述的服務代理系統; 服務提供系統,用於當接收到所述服務代理系統轉發的調用請求報文時,生成響應報文返回至所述服務代理系統。
【文檔編號】H04L29/08GK103580937SQ201210258669
【公開日】2014年2月12日 申請日期:2012年7月24日 優先權日:2012年7月24日
【發明者】吳坤 申請人:阿里巴巴集團控股有限公司