專利名稱:一種客戶端與服務器端雙向同步的方法及系統(tǒng)的制作方法
技術領域:
本發(fā)明涉及網絡傳輸技術,更具體地,本發(fā)明涉及一種客戶端與服務器端雙向同步的方法及系統(tǒng)。
背景技術:
在傳統(tǒng)網絡應用程序的C/S架構中,客戶端(C)作為服務器端(S)的數據展示和操作端它通過網絡連接到服務器端(S),然后讀取相應的數據(0)進行顯示和操作。顯示時, 客戶端需要定期的刷新(重新讀取服務器的最新數據)當前顯示的數據,以保持與服務器上的數據一致。在操作時,需要把操作命令發(fā)送到服務器端,然后在服務器上執(zhí)行命令并根據返回結果更新客戶端數據。這種傳統(tǒng)的客戶端與服務器端的數據同步有以下一些缺點
1.當系統(tǒng)中有多個客戶端(C)的時候,服務器上的數據對象更新可能比較頻繁,這種情況下,由于客戶端是定期刷新數據,客戶端與服務器端的數據會有延遲,會導致一些客戶端正在操作的數據在服務器端已經被修改了,從而導致操作失敗。2.由于客戶端是通過定期刷新服務器來更新本地數據的,而無論服務器端數據是否有更新,即客戶端的數據更新是被動的。當系統(tǒng)中有大量的客戶端時,就會降低服務器的效率,浪費服務器資源。在一些大型的軟件系統(tǒng)中,由于業(yè)務邏輯復雜,系統(tǒng)中抽象出來的業(yè)務邏輯對象數量眾多,且對象之間常?;ハ嚓P聯(lián)。在傳統(tǒng)的三層軟件架構中,客戶端的處理請求會提交給服務器,服務器負責處理請求,服務器在處理請求的過程中若需要獲取某對象的數據就會從數據庫中讀取生成對象發(fā)送到客戶端,若要修改某對象則在修改后需要在數據庫中更新此對象的數據。在有多個客戶端的時候,客戶端與服務器端的數據同步就是一個問題。傳統(tǒng)的是通過客戶端定時刷新服務器數據,以達到數據同步的目的,是一種被動式的數據同步方式。若刷新頻率高,客戶端與服務器數據能得到較好的同步,但由于刷新頻率高,而且很多時候服務器的對象并沒有更新,會降低服務器的處理效率和性能,浪費服務器資源。若刷新頻率低,則客戶端與服務器端的數據同步效果不好。因此當前需要一種新的客戶端與服務器端雙向同步的技術方案來解決上述問題。
發(fā)明內容
本發(fā)明所要解決的技術問題是提供一種客戶端與服務器端雙向同步的方法及系統(tǒng),解決了當前客戶端與服務器端同步時,服務器端負載過大的問題。為了解決上述問題,本發(fā)明提供一種客戶端與服務器端雙向同步的系統(tǒng),包括一個或多個應用程序客戶端和應用程序服務器端,所述應用程序客戶端,用于向應用程序服務器端發(fā)送業(yè)務請求;所述應用程序服務器端還包括請求接收模塊、對象訂閱模塊、 對象發(fā)布模塊和對象更新檢測模塊,其中,
所述請求接收模塊,用于接收所述業(yè)務請求,并對業(yè)務請求進行解析、分發(fā);所述對象訂閱模塊,用于維護一應用程序客戶端信息及其訂閱的對象的信息的表格, 該表格記錄了每個應用程序客戶端需要進行數據同步的相關信息;
所述對象更新檢測模塊,用于檢測若一應用程序客戶端修改了一對象的數據,若是,則將修改后的對象發(fā)送給對象發(fā)布模塊進行處理;
所述對象發(fā)布模塊,用于接收所述對象更新檢測模塊發(fā)送的修改后的對象,根據該對象的信息對所述對象訂閱模塊維護的表格中查找訂閱了該對象的應用程序客戶端,判斷若找到,則將修改后的該對象的數據發(fā)送到相應應用程序客戶端,保持客戶端與服務器端的數據同步。優(yōu)選地,所述對象訂閱模塊維護的所述表格,包括應用程序客戶端名稱、應用程序客戶端地址、應用程序客戶端通信端口及其訂閱的對象列表的信息;
所述對象更新檢測模塊,還用于檢測應用程序服務器端中對象的數據是否發(fā)生變化, 若是,則將修改后的對象發(fā)送給對象發(fā)布模塊進行處理;
所述對象發(fā)布模塊,用于接收所述對象更新檢測模塊發(fā)送的修改后的對象,根據該對象的名稱對所述對象訂閱模塊維護的表格中查找訂閱了該對象的應用程序客戶端,判斷若找到,則對更新后對象的數據進行封裝后,將封裝后的對象的數據根據應用程序客戶端的地址和通信端口,發(fā)送到相應應用程序客戶端。優(yōu)選地,所述應用程序服務器端還包括業(yè)務邏輯處理模塊和業(yè)務邏輯對象管理模塊,其中,
所述業(yè)務邏輯處理模塊,用于接收所述請求接收模塊發(fā)送的所述業(yè)務請求,判斷如果在進行業(yè)務處理的過程中更新或刪除了應用程序服務器端中的某對象,則通知其它模塊有對象進行了更新,在處理完一業(yè)務請求后會將處理結果返回到所述請求接收模塊;
所述業(yè)務邏輯對象管理模塊,用于管理應用程序服務器端上所有的業(yè)務邏輯對象,包括對對象的查詢、更新和刪除操作。優(yōu)選地,還包括數據庫端,該數據庫端包括數據庫實時監(jiān)控程序單元和數據庫單元,其中,
所述數據庫實時監(jiān)控程序單元,用于監(jiān)控所述數據庫單元中的相應數據表,該數據表記錄了由應用程序客戶端直接對數據庫單元中的基礎數據進行操作后數據的變化情況,根據變化情況生成基礎數據更新請求后,發(fā)送到服務器端的基礎數據更新模塊; 所述數據庫單元,用于存儲數據;
所述應用程序服務器端進一步包括數據庫操作模塊和基礎數據更新模塊,其中, 所述數據庫操作模塊,用于與所述數據庫單元進行交互,在應用程序服務器端啟動時從所述數據庫單元中讀取需要的數據后,構造成各種業(yè)務邏輯對象;判斷若應用程序服務器端對業(yè)務邏輯對象進行修改時,將修改后的數據寫入所述數據庫單元,以保持數據的一致性;
所述基礎數據更新模塊,用于接收所述數據庫實時監(jiān)控程序單元發(fā)送的基礎數據更新請求后,根據該更新請求來更新相應的業(yè)務邏輯對象。以及提供了一種客戶端與服務器端雙向同步的方法,包括
應用程序服務器端接收到應用程序客戶端發(fā)送的業(yè)務請求后,對業(yè)務請求進行解析; 所述應用程序服務器端判斷若一應用程序客戶端修改了一對象的數據后,則根據應用程序客戶端信息及其訂閱的對象的信息的表格中的信息,查找訂閱了該對象的應用程序客戶端,判斷若找到,則將修改后的該對象的數據發(fā)送到相應應用程序客戶端,保持客戶端與服務器端的數據同步。優(yōu)選地,所述應用程序客戶端信息及其訂閱的對象的信息的表格,包括應用程序客戶端名稱、應用程序客戶端地址、應用程序客戶端通信端口及其訂閱的對象列表的信息。優(yōu)選地,還包括所述應用程序服務器端檢測對象的數據是否發(fā)生變化,若是,則根據該對象的名稱在所述表格中查找訂閱了該對象的應用程序客戶端,判斷若找到,則對更新后對象的數據進行封裝后,將封裝后的對象的數據根據應用程序客戶端的地址和通信端口,發(fā)送到相應應用程序客戶端。優(yōu)選地,還包括所述應用程序服務器端接收到所述業(yè)務請求后,判斷如果在進行業(yè)務處理的過程中更新或刪除了應用程序服務器端中的某對象,則對所述表格進行相應更新,并記錄對該對象的查詢、更新和刪除操作。優(yōu)選地,進一步包括所述應用程序服務器端在啟動時從數據庫中讀取需要的數據后,構造成各種業(yè)務邏輯對象;判斷若修改了業(yè)務邏輯對象,并將修改后的數據寫入數據庫,以保持數據的一致性。優(yōu)選地,進一步包括所述應用程序服務器端監(jiān)控數據庫中的相應數據表,該數據表記錄了由應用程序客戶端直接對數據庫中的基礎數據進行操作后數據的變化情況,根據該變化情況更新相應的業(yè)務邏輯對象。與現(xiàn)有技術相比,應用本發(fā)明,避免了客戶端定時向服務器端進行刷新操作,減輕了服務器端負擔,提高了服務器端的處理效率和性能;而且服務器端是主動發(fā)起的數據同步的請求,當對象發(fā)生變化后服務器端會在第一時間把更新的數據發(fā)送給各個客戶端,使客戶端與服務器端的數據同步效果得到進一步提升。
圖1是本發(fā)明的客戶端與服務器端雙向同步的系統(tǒng)示意圖; 圖2是本發(fā)明的客戶端與服務器端雙向同步的方法的流程圖。
具體實施例方式下面結合附圖和具體實施方式
對本發(fā)明作進一步說明。本發(fā)明為了提高應用服務器處理業(yè)務邏輯的效率和性能,通常在應用服務器啟動時就會預先把系統(tǒng)要處理的各種業(yè)務邏輯對象的數據從數據庫中讀到服務器來,并生成相應的服務器對象,每一個對象(即使是不同類的對象)都擁有唯一的名稱(ID),在客戶端發(fā)送到服務器端的請求中會有一個訂閱標識位,此標識位表示客戶端是否需要對這個請求中涉及到的對象進行數據同步。若需要同步,則服務器會記錄發(fā)送此請求的客戶端的IP地址、端口、版本號、訂閱的對象ID號等信息,這些記錄在服務器端形成一個列表。當服務器發(fā)現(xiàn)某個對象更新時,就會去查找此列表,會給訂閱了這些對象同步請求的客戶端發(fā)送更新了的對象數據(客戶端需要創(chuàng)建一個端口監(jiān)聽來自服務器端的對象更新消息)。從而實現(xiàn)了客戶端與服務器端數據的同步。這種數據同步的方案是由服務器作為主動發(fā)起方,是一種主動式的數據同步方式。客戶端需要定時的發(fā)送心跳包以使服務器知道客戶端的活動狀態(tài)。如圖1所示,一種客戶端與服務器端雙向同步的系統(tǒng),包括一個或多個應用程序客戶端、應用程序服務器端和數據庫端,
所述應用程序客戶端,用于向應用程序服務器端發(fā)送業(yè)務請求;所述應用程序服務器端還包括請求接收模塊、對象訂閱模塊、對象發(fā)布模塊、對象更新檢測模塊、業(yè)務邏輯處理模塊和業(yè)務邏輯對象管理模塊、數據庫操作模塊和基礎數據更新模塊,其中, 所述請求接收模塊,用于接收所述業(yè)務請求,并對業(yè)務請求進行解析、分發(fā); 所述對象訂閱模塊,用于維護一應用程序客戶端信息及其訂閱的對象的信息的表格, 該表格記錄了每個應用程序客戶端需要進行數據同步的相關信息;
所述對象更新檢測模塊,用于檢測若一應用程序客戶端修改了一對象的數據,若是,則將修改后的對象發(fā)送給對象發(fā)布模塊進行處理;
所述對象發(fā)布模塊,用于接收所述對象更新檢測模塊發(fā)送的修改后的對象,根據該對象的信息對所述對象訂閱模塊維護的表格中查找訂閱了該對象的應用程序客戶端,判斷若找到,則將修改后的該對象的數據發(fā)送到相應應用程序客戶端,保持客戶端與服務器端的數據同步;
所述業(yè)務邏輯處理模塊,用于接收所述請求接收模塊發(fā)送的所述業(yè)務請求,判斷如果在進行業(yè)務處理的過程中更新或刪除了應用程序服務器端中的某對象,則通知其它模塊有對象進行了更新,在處理完一業(yè)務請求后會將處理結果返回到所述請求接收模塊;
所述業(yè)務邏輯對象管理模塊,用于管理應用程序服務器端上所有的業(yè)務邏輯對象,包括對對象的查詢、更新和刪除操作;
所述數據庫操作模塊,用于與所述數據庫單元進行交互,在應用程序服務器端啟動時從所述數據庫單元中讀取需要的數據后,構造成各種業(yè)務邏輯對象;判斷若應用程序服務器端對業(yè)務邏輯對象進行修改時,將修改后的數據寫入所述數據庫單元,以保持數據的一致性;
所述基礎數據更新模塊,用于接收所述數據庫實時監(jiān)控程序單元發(fā)送的基礎數據更新請求后,根據該更新請求來更新相應的業(yè)務邏輯對象。所述對象訂閱模塊維護的所述表格,包括應用程序客戶端名稱、應用程序客戶端地址、應用程序客戶端通信端口及其訂閱的對象列表的信息。如表1所示
權利要求
1.一種客戶端與服務器端雙向同步的系統(tǒng),包括一個或多個應用程序客戶端和應用程序服務器端,其特征在于,所述應用程序客戶端,用于向應用程序服務器端發(fā)送業(yè)務請求;所述應用程序服務器端還包括請求接收模塊、對象訂閱模塊、對象發(fā)布模塊和對象更新檢測模塊,其中, 所述請求接收模塊,用于接收所述業(yè)務請求,并對業(yè)務請求進行解析、分發(fā); 所述對象訂閱模塊,用于維護一應用程序客戶端信息及其訂閱的對象的信息的表格, 該表格記錄了每個應用程序客戶端需要進行數據同步的相關信息;所述對象更新檢測模塊,用于檢測若一應用程序客戶端修改了一對象的數據,若是,則將修改后的對象發(fā)送給對象發(fā)布模塊進行處理;所述對象發(fā)布模塊,用于接收所述對象更新檢測模塊發(fā)送的修改后的對象,根據該對象的信息對所述對象訂閱模塊維護的表格中查找訂閱了該對象的應用程序客戶端,判斷若找到,則將修改后的該對象的數據發(fā)送到相應應用程序客戶端,保持客戶端與服務器端的數據同步。
2.如權利要求1所述的系統(tǒng),其特征在于,所述對象訂閱模塊維護的所述表格,包括應用程序客戶端名稱、應用程序客戶端地址、應用程序客戶端通信端口及其訂閱的對象列表的信息;所述對象更新檢測模塊,還用于檢測應用程序服務器端中對象的數據是否發(fā)生變化, 若是,則將修改后的對象發(fā)送給對象發(fā)布模塊進行處理;所述對象發(fā)布模塊,用于接收所述對象更新檢測模塊發(fā)送的修改后的對象,根據該對象的名稱對所述對象訂閱模塊維護的表格中查找訂閱了該對象的應用程序客戶端,判斷若找到,則對更新后對象的數據進行封裝后,將封裝后的對象的數據根據應用程序客戶端的地址和通信端口,發(fā)送到相應應用程序客戶端。
3.如權利要求1所述的系統(tǒng),其特征在于,所述應用程序服務器端還包括業(yè)務邏輯處理模塊和業(yè)務邏輯對象管理模塊,其中, 所述業(yè)務邏輯處理模塊,用于接收所述請求接收模塊發(fā)送的所述業(yè)務請求,判斷如果在進行業(yè)務處理的過程中更新或刪除了應用程序服務器端中的某對象,則通知其它模塊有對象進行了更新,在處理完一業(yè)務請求后會將處理結果返回到所述請求接收模塊;所述業(yè)務邏輯對象管理模塊,用于管理應用程序服務器端上所有的業(yè)務邏輯對象,包括對對象的查詢、更新和刪除操作。
4.如權利要求1所述的系統(tǒng),其特征在于,還包括數據庫端,該數據庫端包括數據庫實時監(jiān)控程序單元和數據庫單元,其中, 所述數據庫實時監(jiān)控程序單元,用于監(jiān)控所述數據庫單元中的相應數據表,該數據表記錄了由應用程序客戶端直接對數據庫單元中的基礎數據進行操作后數據的變化情況,根據變化情況生成基礎數據更新請求后,發(fā)送到服務器端的基礎數據更新模塊; 所述數據庫單元,用于存儲數據;所述應用程序服務器端進一步包括數據庫操作模塊和基礎數據更新模塊,其中, 所述數據庫操作模塊,用于與所述數據庫單元進行交互,在應用程序服務器端啟動時從所述數據庫單元中讀取需要的數據后,構造成各種業(yè)務邏輯對象;判斷若應用程序服務器端對業(yè)務邏輯對象進行修改時,將修改后的數據寫入所述數據庫單元,以保持數據的一致性;所述基礎數據更新模塊,用于接收所述數據庫實時監(jiān)控程序單元發(fā)送的基礎數據更新請求后,根據該更新請求來更新相應的業(yè)務邏輯對象。
5.一種客戶端與服務器端雙向同步的方法,其特征在于,包括應用程序服務器端接收到應用程序客戶端發(fā)送的業(yè)務請求后,對業(yè)務請求進行解析;所述應用程序服務器端判斷若一應用程序客戶端修改了一對象的數據后,則根據應用程序客戶端信息及其訂閱的對象的信息的表格中的信息,查找訂閱了該對象的應用程序客戶端,判斷若找到,則將修改后的該對象的數據發(fā)送到相應應用程序客戶端,保持客戶端與服務器端的數據同步。
6.如權利要求5所述的方法,其特征在于,所述應用程序客戶端信息及其訂閱的對象的信息的表格,包括應用程序客戶端名稱、 應用程序客戶端地址、應用程序客戶端通信端口及其訂閱的對象列表的信息。
7.如權利要求6所述的方法,其特征在于,還包括所述應用程序服務器端檢測對象的數據是否發(fā)生變化,若是,則根據該對象的名稱在所述表格中查找訂閱了該對象的應用程序客戶端,判斷若找到,則對更新后對象的數據進行封裝后,將封裝后的對象的數據根據應用程序客戶端的地址和通信端口,發(fā)送到相應應用程序客戶端。
8.如權利要求5所述的方法,其特征在于,還包括所述應用程序服務器端接收到所述業(yè)務請求后,判斷如果在進行業(yè)務處理的過程中更新或刪除了應用程序服務器端中的某對象,則對所述表格進行相應更新,并記錄對該對象的查詢、更新和刪除操作。
9.如權利要求5所述的方法,其特征在于,進一步包括所述應用程序服務器端在啟動時從數據庫中讀取需要的數據后,構造成各種業(yè)務邏輯對象;判斷若修改了業(yè)務邏輯對象,并將修改后的數據寫入數據庫,以保持數據的一致性。
10.如權利要求9所述的方法,其特征在于,進一步包括所述應用程序服務器端監(jiān)控數據庫中的相應數據表,該數據表記錄了由應用程序客戶端直接對數據庫中的基礎數據進行操作后數據的變化情況,根據該變化情況更新相應的業(yè)務邏輯對象。
全文摘要
本發(fā)明公開了一種客戶端與服務器端雙向同步的方法及系統(tǒng),所述方法包括,應用程序服務器端接收到應用程序客戶端發(fā)送的業(yè)務請求后,對業(yè)務請求進行解析;所述應用程序服務器端判斷若一應用程序客戶端修改了一對象的數據后,則根據應用程序客戶端信息及其訂閱的對象的信息的表格中的信息,查找訂閱了該對象的應用程序客戶端,判斷若找到,則將修改后的該對象的數據發(fā)送到相應應用程序客戶端,保持客戶端與服務器端的數據同步。本發(fā)明能在對象發(fā)生變化后服務器端在第一時間把更新的數據發(fā)送給各個客戶端,使客戶端與服務器端的數據同步效果得到進一步提升。
文檔編號H04L29/06GK102291416SQ20111027164
公開日2011年12月21日 申請日期2011年9月14日 優(yōu)先權日2011年9月14日
發(fā)明者王獻昌, 王玉穩(wěn), 羅祖麥 申請人:成都軟智科技有限公司