遠程調用對象的方法和系統的製作方法
2023-04-29 04:36:16
專利名稱:遠程調用對象的方法和系統的製作方法
技術領域:
本發明涉及遠程調用技術領域,更具體地說,涉及一種在分布式系統中遠程調用對象的方法和系統。
背景技術:
從分布式系統架構成為軟體架構的主流以來,系統間的遠程調用平臺就大量得湧現出來,比較成熟的分布式調用技術有:C0RBA、RM1、EJB、WebService或Xml-RPC等。遠程調用的過程一般為:接收客戶端的調用命令,根據該調用命令中的業務對象名稱定位所述業務對象,並由該業務對象得到業務對象方法標籤,通過該業務對象方法標籤對該業務對象方法進行調用。一個企業級的系統是例如銀行系統包括多個客戶端(刷卡機11、內部轉帳12和網絡計算機13)、以及與各個客戶端相對應的業務接口(刷卡接口 21、內部轉帳接口 22和網上交易接口 23),以及,銀行系統和設置在銀行系統中的多個調用系統(調用系統31、調用系統32和調用系統33),各調用系統與各業務接口——對應。上述系統存在以下問題:在該系統中,每種調用系統對應一種客戶端,也就是說,當存在多種客戶端的時候,需要有多種調用系統與其相適配,每出現一種客戶端,就需要增加與該客戶端相對應的調用系統,無法實現業務邏輯和接口的剝離,無法復用業務邏輯,即使針對相同的業務邏輯,仍然需要針對不同的接口進行開發。例如:都是提款,通過刷卡機和網絡計算機由於遠程調用協議不一致,就必須開發兩套調用系統適應不同的業務接口才可以提款,比較繁瑣,增加了設計人員的工作量,增加系統的成本。
發明內容
有鑑於此,本發明的目的在於提供一種分布式系統中的遠程調用對象的方法和系統,以解決現有技術存在的通用性不高的問題。本發明一種遠程調用對象的方法,包括:創建與各客戶端對應的代理對象;利用該代理對象接收相應的客戶端發出的調用命令,並將其轉換成與客戶端協議相適應的命令信息;將所述該命令信息處理成統一數據類型的調用命令;按照所述統一數據類型的調用命令中的業務對象的名稱定位所述業務對象,由該業務對象得到業務對象方法標籤;利用該標籤對業務對象方法進行調用,並由代理對象將調用結果反饋給所述客戶端。優選的,代理對象將調用結果轉換成所述客戶端能夠識別的結果信息後,反饋給所述客戶端。優選的,按照以下步驟創建代理對象:
讀取對應客戶端的業務接口文件,分析業務對象名稱和業務對象方法標籤;解析相應的業務對象方法標籤和所述接口參數,生成對應的方法體;根據所述接口參數和所述方法體生成代理對象。優選的,將命令信息處理成統一數據類型的調用命令的實現方式為:根據各代理對象所遵從的協議,按照各代理對象協議的參數映射,將各種數據類型的調用命令轉換成統一數據類型的調用命令。本發明還公開了一種遠程調用對象的系統,包括多個客戶端和用於存儲業務對象的業務對象容器,還包括調用裝置,該調用裝置包括多個代理對象單元和執行單元;各代理對象單元與客戶端一一對應,用於接收所述客戶端的調用命令,針對該調用命令發送與該客戶端技術協議相適配的命令信息,接收反饋過來的調用結果信息,並該調用結果信息轉換成對應客戶端能夠識別的信息後,反饋給客戶端;執行單元,用於獲取所述命令信息,將該命令信息轉換為統一數據類型調用命令,根據所述該統一數據類型調用命令中的業務對象的名稱在所述業務對象容器中定位所述業務對象,由該業務對象得到業務對象方法標籤,按照所述業務對象方法標籤對業務對象方法進行調用,並反饋調用結果至所述代理對象單元。優選的,所述系統還包括:代理對象生成單元,用於獲取對應的客戶端業務接口文件,並依據該業務接口文件生成與客戶端技術協議相適配的代理對象單元。優選的,所述系統還包括:業務對象管理單元, 用於管理所述業務對象容器中的各個業務對象。優選的,所述執行單元由以下單元組成:獲取單元,用於獲取代理對象單元發送過來的命令信息;歸一化單元,將所述命令信息轉換成統一數據類型的調用命令;定位單元,根據所述統一數據類型的調用命令中的目標業務對象的名稱定位該目標業務對象在業務對象容器中的位置;調用單元,由所述業務對象得知業務對象方法標籤,按照該業務對象方法標籤找到該業務對象方法,進行調用;所述反饋單元,將調用結果反饋給代理對象單元。優選的,所述代理對象生成單元設置在所述調用裝置中。通過上述技術方案可知,與現有技術相比,本發明預先創建與各客戶端相對應的代理對象,並通過將各客戶端發送的命令信息按照客戶端的協議轉換後,進行歸一化,由此可以支持來自多個客戶端的命令信息,實現業務邏輯的復用,從而實現業務邏輯與接口的剝離,屏蔽了業務接口的專業性,無需為每個客戶端設計各自的調用系統,便可適配多個客戶端,節約了工作人員的工作量,降低成本。
圖1為現有技術的結構示意圖;圖2為本發明分布式系統中遠程調用對象的方法的流程圖;圖3為本發明分布式系統中遠程調用對象的方法的代理對象生成流程圖4為本發明一種遠程調用對象的系統的實施例一結構示意圖;圖5為本發明一種遠程調用對象的系統的執行單元的結構示意圖;圖6為本發明一種遠程調用對象的系統實施例遠程調用對象的流程圖;圖7為本發明一種遠程調用對象的系統的實施例二的結構示意圖;圖8為本發明一種遠程調用對象的系統的實施例三的結構示意圖;圖9為本發明一種遠程調用對象的系統的實施例四的結構示意圖。
具體實施例方式本發明的基本思想是:預先創建與各客戶端相對應的代理對象;利用所述代理對象接收相應的客戶端發出的針對目標業務對象的調用命令,並將其轉換成與客戶端協議相適應的命令信息;將所述命令信息處理成統一數據類型調用命令;按照所述統一數據類型調用命令中的目標業務對象的名稱定位所述目標業務對象,得到所述目標業務對象,由該目標業務對象得到業務對象方法標籤,利用該標籤對業務對象方法進行調用,並反饋調用結果。為了使本領域技術人員更好理解本發明技術方案,下面對本文所述的業務對象進行簡單介紹描述:首先對本文中出現的幾個名詞術語進行解釋:業務對象:業務方法的集合體;例如:帳號管理對象;業務對象名稱: 對業務對象定乂的Iv全局唯一的字符串標籤;
業務對象方法:一定業務邏輯的集合;例如:取款;業務對象方法標籤:能夠唯一定位業務方法的定義;業務邏輯:完成一個完整業務的操作步驟;例如:取款:檢查帳號-是否有錢-取αΚ ~扣政。例如:「取款」是一個業務對象方法,其封裝了多種取款的業務邏輯,所述業務邏輯指的是完成一個完整業務的操作步驟,例如:客戶端發送取款100元的請求信息時,該業務對象包含以下業務邏輯,如:—查詢該用戶帳戶上的餘額;-如果該帳戶的餘額少於100元,則將「餘額不足」的信息反饋給客戶端;—如果該帳戶的餘額多於100元,則調動送幣機構將100元的紙幣反饋給客戶端,並將該帳戶的餘額減去100元。在系統中,所述業務對象一般存儲在對象容器中,所述對象容器就是存儲多個業務對象的功能單元,每個業務對象都存在一個靜態屬性-業務對象名稱,在所述對象容器中,一個業務對象唯一對應一個業務對象名稱。下面結合附圖和實施例對本發明進行詳細描述。以傳輸綜合資源網管系統(TransNMS)為例,TransNMS是三層分布式網管系統。由於這是一個複雜的中大型系統,必須支持以下的應用場景:1、支持其他系統訪問接口,例如EMOS (電子管理支撐系統)系統接口 ;2、面向不同類型的用戶,支持不同類型用戶呈現方式,例如WebClient和Applictaion Client。
以上的需求就決定了本系統必須根據不同應用場景支持不同的分布式接口。下面通過告警監控為例來進行說明:1、大客戶需要通過WEB監控大客戶電路上的告警,為了穿越防火牆,使用基於HTTP 的 Xml-RPC 通信接口 ;2、網管人員使用告警監控監控實時告警,為了能夠提高訪問效率,使用了 EJB的無狀態Bean作為接口 ;3、電子運維人員使用告警生成的故障單,為了達到系統無關的擴展性,採用了WebService 接 P ;上述需求都是由告警業務對象提供的業務對象中的一部分。因此,告警業務對象必須同時支持三種不同的外部接口。TransNMS系統實現業務對象和外部接口的分離也就實現了業務邏輯的重用。請參考圖2,為本發明分布式系統中遠程調用對象的方法的流程圖。各客戶端遠程調用告警業務對象的方法可按照以下步驟進行:步驟SlOl:預先創建與各客戶端技術協議相對應的代理對象。根據業務接口文件生成與大客戶客戶端、網管客戶端和維護客戶端相對應的代理對象。大客戶客戶端、網管客戶端和維護客戶端分別對應EJB代理對象、XRPC代理對象和WebService代理對象。 所述業務接口文件包含業務對象名稱、業務對象方法標籤和接口參數。由於只有支持的技術協議相適配的實體才能進行通信,所以預先創建代理對象,該代理對象支持對應客戶端的技術協議。步驟S102:利用所述代理對象接收相應的客戶端的調用命令,並進行轉換。利用所述代理對象接收相應的客戶端發出的針對目標業務對象的調用命令,並將其轉換為與客戶端技術協議相適應的命令信息。各代理對象接收對應的客戶端發出的調用命令(如X1、X2和X3),並將其轉換為與各自客戶端技術協議相適應的命令信息,所述命令信息包含目標業務對象的名稱及業務對象方法標籤。此時,來自大客戶客戶端的命令信息為:X1 method (Tl, t)來自網管客戶端的命令信息為:X2 method(T2, t)來自維護客戶端的命令信息為:X3 method (T3,t)步驟S103:將所述命令信息處理成統一數據類型調用命令。為了實現調用格式的統一,將來自各客戶端的調用命令處理成統一數據類型調用命令 X method (T, t)。需要說明的是,各客戶端採用的調用協議不同,但是調用的內容是相同的;代理對象將對應的客戶端發送的調用命令進行格式轉換,轉換成對應接口對應的命令信息。例如,對於同一個字符串序列,與Corba接口對應的代理對象將該字符串序列轉換成與Corba接口對應的格式:StringListHolder,與WebService接口對應的代理對象將該字符串序列轉換成與WebService接口對應的格式:String[],與EJB接口對應的代理對象將該字符串序列轉換成與EJB接口對應的格式:List〈String>。下面以銀 行取錢為例子:
業務對象:銀行;業務對象名稱:A銀行(名稱可以由用戶定);業務對象方法:轉帳;業務對象方法標籤:B轉帳(可以由用戶定);接口:ATM機接口 -以Xl代替、網上銀行接口 -以X2代替、櫃檯接口 -以X3代替,三個接口的數據類型分別為Tl、T2、T3,三個接口有各自的代理對象(分別為第一代理對象、第二代理對象和第三代理對象)。調用命令:對X X實施轉帳-以A代替(注:對於上述三個接口而言調用命令是同樣的)。三個客戶端通過X1、X2、X3接口發出對X X實施轉帳的調用命令,調用命令分別經過所述第一代理對象、第二代理對象和第三代理對象轉換後,變成每個代理對象都會根據自身協議將調用命令映射轉換X1、X2、X3接口的命令信息:X1 (Tl,t),X2 (T2, t),X3 (T3,t),並將轉換後的命令信息進一步轉換為統一調用命令A(T,t),從而完成不同代理對象發出調用命令的歸一化。所述調用命令中包含有目標業務對象的名稱。步驟S104:按照所述調用命令中的目標業務對象的名稱,得到目標業務對象方法,並調用。按照所述調用命令中的目標業務對象的名稱定位所述目標業務對象,得到目標業務對象方法,並對該 目標業務對象方法進行調用。步驟S105:代理對象將調用結果轉換為與客戶端技術協議相適應的結果信息後,反饋給客戶端。所述代理對象將調用結果轉換為各種客戶端能夠識別的數據類型的結果信息後,反饋給對應的客戶端。本發明實施例通過建立與各客戶端的技術協議相適配的代理單元,接收各客戶端發送過來的各種數據類型的調用命令,對該調用命令進行歸一化處理,處理成統一的統一數據類型調用命令(處理成統一的統一數據類型調用命令的關鍵是參數類型的轉化,不同代理接口類型,可以使用不同的參數映射,轉化為標準的業務對象調用,從而完成歸一化命令),由此實現多個業務對象的復用,使得業務邏輯和接口脫離,節省了開發成本,提高了查找業務對象的效率。圖3示出了本發明遠程調用對象的方法的代理對象的生成流程圖。上述實施例的步驟SlOl中,預先創建與各客戶端技術協議相對應的代理對象的具體過程包括以下步驟:步驟SlOll:讀取業務接口文件,分析業務對象名稱和業務對象方法標籤。步驟S1012:生成代理接口的方法。該方法可以根據預先設置的映射關係,將對應的業務接口的接口參數類型轉換成統一數據類型。例如:List〈Strig> 類型參數在 EJB 接口映射是 List〈String>,在 WebService 接口映射為String []數組。步驟S1013:解析相應的業務對象方法標籤和所述接口參數,生成對應的方法體。
步驟S1014:根據所述接口參數和所述方法體生成代理對象。下面以EJB為例進一步說明代理對象生成的過程:讀取接口文件為:public interface IAlarmBO{String getAlarml dByName(String alarmName);}根據該接口文件生成相應的XXXBean類文件,XXXBean實現建立javax.ejb.SessionBean接口和業務接口和EJB標籤。
public class AIarmBean implements javax.ejb.SessionBean,IAIarmBOi
public static B0_NAME = 「AlarmBO」 ;
}從接口文件中解析相應的方法名稱和參數,生成同樣的方法體。該方法體為:
public class AIarmBean implements javax.ejb.SessionBean,IAIarmBOi
String getAI arm IdByName (Str i ng alarmName) {
}將各種數據格式的調用命令處理成統一的數據類型的調用命令。例如:
public class AIarmBean implements javax.ejb.SessionBean,IAIarmBOi
String getAI arm IdByName (Str i ng alarmName) {
BoCommand command = BoCommandFactory.createCommand (BO NAME,「getAI arm IdByName」,a IarmName);return (String) command, exec ;
}上述代碼中表示,ge t AI arml dByName的數據類型為List〈String>。使用XDoclet的ejbdoclet進行編譯,產生接口相關的文件XXXHome.java(EJB對象的Home對象),XXXEjbObject.j ava(EJB的遠程接口文件);並進行ant編譯後生成相應的代理對象。上述遠程調用對象的方法的流程可以由一種遠程調用對象的系統執行,請參考圖4,為本發明一種遠程調用對象的系統的實施例一的結構示意圖。本系統包括客戶端100、調用裝置200和業務對象容器300。
其中,所述業務對象容器300存儲所有業務對象, 所述調用裝置200包括多個代理對象單元201,還包括執行單元202,其中,各代理對象單元201與客戶端100 —一對應,獲取所述客戶端100的調用命令之後,將該調用命令轉換為與客戶端協議相適配的命令信息;執行單元202獲取該命令信息之後,將該調用命令進行轉換成統一數據類型調用命令,根據所述該統一數據類型調用命令中的業務對象的名稱在所述業務對象容器300中定位所述業務對象,由該業務對象得到業務對象方法標籤,按照所述業務對象方法標籤對業務對象方法進行調用,並反饋調用結果至相應的客戶端 100。圖5示出了該實施例的執行單元的結構示意圖。所述執行單元202可以由獲取單元2021、歸一化單元2022、定位單元2023、調用單元2024和反饋單元2025組成,所述獲取單元2021獲取代理對象單元201發送過來的命令信息,並將該命令信息提供給歸一化單元2022,該歸一化單元2022將所述命令信息轉換成符合統一數據類型的調用命令,並將該調用命令提供給定位單元2023,該定位單元2023根據命令信息中的目標業務對象的名稱定位該目標業務對象在業務對象容器300中的位置,並通知調用單元2024,調用單元2024由所述業務對象得知業務對象方法標籤,按照該業務對象方法標籤找到該業務對象方法,進行調用;所述反饋單元2025將調用結果反饋給代理對象單元201,所述代理對象單元201將所述調用結果轉換為對應客戶端100能夠識別的數據格式的結果信息,並將該結果信息反饋給該客戶端100。圖6示出了上述系統執行遠程調用對象的方法的流程圖,具體包括以下步驟:步驟S201:代理對象生成單元生成與各客戶端相對應的代理對象。步驟S202:代理對象接收對應的客戶端的調用命令。步驟S203:代理對象發送該命令信息至執行單元。代理對象將所述調用命令轉換成與客戶端協議相適應的命令信息。所述命令信息中包含目標業務對象的名稱和業務對象方法標籤。步驟S204:執行單元將所述命令信息轉換成符合統一數據類型的調用命令。所述調用命令包含目標業務對象的名稱、目標業務對象方法的標籤。步驟S205:執行單元定位所述業務對象。所述執行單元按照所述調用命令包含的目標業務對象的名稱確定所述目標業務對象在業務容器中的位置。步驟S206:執行單元調用所述業務對象,並將調用結果反饋給所述代理對象單
J Li ο步驟S207:代理對象單元將所述調用結果轉換成與客戶端技術協議相適配的結果信息後,反饋給所述客戶端。圖7示出了本發明一種遠程調用對象的系統的實施例二的結構示意圖。在上述實施例的基礎上,本發明還可以包括代理對象生成單元400,代理對象生成單元400利用接口文件生成代理對象單元201的具體方法請參考上述遠程調用對象的方法部分,在此不再贅述。需要說明的是,代理對象生成單元400可以設置在所述調用裝置200中,如圖8所示。
圖9示出了本發明一種遠程調用對象的系統的實施例四的結構示意圖。由於業務對象的調用涉及到業務對象的生命周期和並發的問題,所以簡單將對象名稱和業務對象一一對應地綁定不是最好的方式,所以在上述實施例的基礎上,本系統還可以包括業務對象管理單元500,用於對業務對象容器中的業務對象進行生命周期的管理和並發調用處理。本發明實施例由與多個客戶端協議適配的多個代理對象對各客戶端發送過來的調用命令進行歸一化,處理成統一數據類型的調用命令,實現多個業務對象的復用,使用本發明能夠構建一個和接口無關的分布式系統,可以適配多個客戶端,使得業務邏輯和接口分離,屏蔽各個外部接口的差異,無需針對每個客戶端,開發獨立一套調用系統,從而節省了開發成本,提高了查找業務對象的效率。以上公開的僅為本發明的優選實施方式,但本發明並非局限於此,任何本領域的技術人員能思之的沒有創造性的變化,以及在不脫離本發明原理前提下所作的若干改進和潤飾,都應落在本發明的 保護範圍內。
權利要求
1.一種遠程調用對象的方法,其特徵在於,包括: 創建與各客戶端對應的代理對象; 利用該代理對象接收相應的客戶端發出的調用命令,並將其轉換成與客戶端協議相適應的命令息; 將所述該命令信息處理成統一數據類型的調用命令; 按照所述統一數據類型的調用命令中的業務對象的名稱定位所述業務對象,由該業務對象得到業務對象方法標籤; 利用該標籤對業務對象方法進行調用,並由代理對象將調用結果反饋給所述客戶端。
2.如權利要求1所述的方法,其特徵在於,代理對象將調用結果轉換成所述客戶端能夠識別的結果信息後,反饋給所述客戶端。
3.如權利要求1或2所述的方法,其特徵在於,按照以下步驟創建代理對象: 讀取對應客戶端的業務接口文件,分析業務對象名稱和業務對象方法標籤; 解析相應的業務對象方法標籤和所述接口參數,生成對應的方法體; 根據所述接口 參數和所述方法體生成代理對象。
4.如權利要求1或2所述的方法,其特徵在於,將命令信息處理成統一數據類型的調用命令的實現方式為: 根據各代理對象接口類型,使用不同的參數映射,轉化為標準的業務對象調用,從而完成統一數據類型的調用命令的生成。
5.一種遠程調用對象的系統,包括多個客戶端和用於存儲業務對象的業務對象容器,其特徵在於,還包括調用裝置,該調用裝置包括多個代理對象單元和執行單元; 各代理對象單元與客戶端一一對應,用於接收所述客戶端的調用命令,針對該調用命令發送與該客戶端技術協議相適配的命令信息,接收反饋過來的調用結果信息,並該調用結果信息轉換成對應客戶端能夠識別的信息後,反饋給客戶端; 執行單元,用於獲取所述命令信息,將該命令信息轉換為統一數據類型調用命令,根據所述該統一數據類型調用命令中的業務對象的名稱在所述業務對象容器中定位所述業務對象,由該業務對象得到業務對象方法標籤,按照所述業務對象方法標籤對業務對象方法進行調用,並反饋調用結果至所述代理對象單元。
6.如權利要求5所述的系統,其特徵在於,還包括: 代理對象生成單元,用於獲取對應的客戶端業務接口文件,並依據該業務接口文件生成與客戶端技術協議相適配的代理對象單元。
7.如權利要求5或6所述的系統,其特徵在於,還包括: 業務對象管理單元,用於管理所述業務對象容器中的各個業務對象。
8.如權利要求7所述的系統,其特徵在於,所述執行單元由以下單元組成: 獲取單元,用於獲取代理對象單元發送過來的命令信息; 歸一化單元,將所述命令信息轉換成統一數據類型的調用命令; 定位單元,根據所述統一數據類型的調用命令中的目標業務對象的名稱定位該目標業務對象在業務對象容器中的位置; 調用單元,由所述業務對象得知業務對象方法標籤,按照該業務對象方法標籤找到該業務對象方法,進行調用;所述反饋單元,將調用結果反饋給代理對象單元。
9.如權利要求8所述的系統,其特徵在於,所述代理對象生成單元設置在所述調用裝置 中。
全文摘要
本發明公開了一種遠程調用對象的方法,包括創建與各客戶端對應的代理對象;利用該代理對象接收相應的客戶端發出的調用命令,並將其轉換成與客戶端協議相適應的命令信息;將所述命令信息處理成統一數據類型調用命令;按照所述統一數據類型調用命令中的業務對象的名稱定位所述業務對象,由該業務對象得到業務對象方法標籤;利用該標籤對業務對象方法進行調用。本發明同時還公開了一種遠程調用對象的系統。本發明預先創建與各客戶端相對應的代理對象,並通過將各客戶端發送的命令信息按照客戶端的協議轉換後,進行歸一化,由此可以支持來自多個客戶端的命令信息,實現業務邏輯的復用,從而實現業務邏輯與接口的剝離,屏蔽了業務接口的專業性,可適配多個客戶端,節約了工作人員的工作量,降低成本。
文檔編號G06F9/46GK103246547SQ20111045128
公開日2013年8月14日 申請日期2012年2月14日 優先權日2012年2月14日
發明者張旭 申請人:北京億陽信通科技有限公司