两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種設(shè)備監(jiān)控系統(tǒng)中客戶端之間數(shù)據(jù)同步的方法

文檔序號(hào):7687759閱讀:182來(lái)源:國(guó)知局
專利名稱:一種設(shè)備監(jiān)控系統(tǒng)中客戶端之間數(shù)據(jù)同步的方法
技術(shù)領(lǐng)域
本發(fā)明涉及設(shè)備監(jiān)控系統(tǒng)應(yīng)用領(lǐng)域,更具體地說(shuō),涉及一種設(shè)備監(jiān)控系統(tǒng)中客 戶端之間數(shù)據(jù)同步的方法。
背景技術(shù)
隨著信息化的不斷發(fā)展,設(shè)備監(jiān)控系統(tǒng)已經(jīng)相當(dāng)廣泛。在移動(dòng)、電力等等行業(yè) 都使用了大量分布在不同地方的設(shè)備,這些設(shè)備需要專門的設(shè)備監(jiān)控軟件進(jìn)行維護(hù)。 使用者在使用的過(guò)程中,提出了更高的要求,需要一個(gè)客戶端對(duì)數(shù)據(jù)進(jìn)行了處理, 其他所有客戶端都要同步刷新相關(guān)數(shù)據(jù),而且對(duì)同步的性能提出了比較高的要求。目前一般的同步數(shù)據(jù)方法有很多種,如公開(kāi)號(hào)CN1168512,名稱是工廠監(jiān)控裝 置的中國(guó)專利,其公開(kāi)了"配置經(jīng)過(guò)網(wǎng)絡(luò)連接的多個(gè)客戶機(jī),就監(jiān)控功能而言, 對(duì)每種功能均設(shè)有一臺(tái)用作監(jiān)控該工廠的各種功能的軟件服務(wù)器的承擔(dān)原始客戶機(jī) 任務(wù)的客戶機(jī),第一功能的原始客戶機(jī)向另一客戶機(jī)傳送與第一功能有關(guān)的數(shù)據(jù), 另一客戶機(jī)接收來(lái)自前述第一原始客戶機(jī)的數(shù)據(jù),存儲(chǔ)于設(shè)置于另一客戶機(jī)中的存 儲(chǔ)裝置中,從而使分別存儲(chǔ)于各個(gè)客戶機(jī)中的數(shù)據(jù)同步。"該專利采用客戶機(jī)之間 的通信方法,所謂的客戶機(jī)也就是客戶端,換句話說(shuō),通過(guò)客戶端之間的數(shù)據(jù)更新, 達(dá)到數(shù)據(jù)同步。在多個(gè)客戶端的時(shí)候,客戶端之間的連接就非常多,傳送的次數(shù)和 數(shù)據(jù)量就非常大,將占用大量的系統(tǒng)資源,這樣,同步的時(shí)間就需要很長(zhǎng)時(shí)間,給 使用者帶來(lái)不便。同時(shí),如果中間的某個(gè)客戶端出現(xiàn)了故障,將導(dǎo)致后續(xù)的客戶端 不能同步;出現(xiàn)故障后,由于不能確定是哪個(gè)客戶端出現(xiàn)了故障,需要檢測(cè)很多客 戶端。此外,業(yè)界現(xiàn)在也采用客戶端與服務(wù)器相連的方式,當(dāng)某一個(gè)客戶端的數(shù)據(jù)發(fā) 生改變之后,客戶端把數(shù)據(jù)發(fā)送給服務(wù)器。而每個(gè)客戶端間隔一個(gè)固定時(shí)間向服務(wù)器查詢相關(guān)數(shù)據(jù),并刷新該客戶端數(shù)據(jù),達(dá)到數(shù)據(jù)同步的目的。雖然這樣的辦法, 減少了客戶端之間的多次連接,降低了系統(tǒng)資源。但是,這種方法采用了固定方式, 難以擴(kuò)充。同時(shí),客戶端間隔固定的時(shí)間難以確定,如果該固定的時(shí)間過(guò)長(zhǎng),客戶 端與服務(wù)器之間的實(shí)時(shí)性就很差;如果該固定時(shí)間很短,就需要頻繁向服務(wù)器査詢, 占用大量的系統(tǒng)資源。所以,這樣處理方法的實(shí)時(shí)性、系統(tǒng)開(kāi)銷、可擴(kuò)充性均不佳, 在使用時(shí)產(chǎn)生麻煩與不便,實(shí)有待改善。發(fā)明內(nèi)容本發(fā)明要解決的技術(shù)問(wèn)題在于,針對(duì)現(xiàn)有技術(shù)的上述客戶端同步中,同步的實(shí) 時(shí)性不佳和系統(tǒng)開(kāi)銷過(guò)大的問(wèn)題缺陷,提供一種具有較佳實(shí)時(shí)性和較小的系統(tǒng)開(kāi)銷 的設(shè)備監(jiān)控系統(tǒng)中客戶端之間數(shù)據(jù)同步的方法。本發(fā)明解決其技術(shù)問(wèn)題所采用的技術(shù)方案是構(gòu)造一種設(shè)備監(jiān)控系統(tǒng)中客戶端 之間數(shù)據(jù)同步的方法,所述客戶端分別與通信服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器連接;該方法 包括如下步驟-A) 初始化所述各客戶端;B) 任意一個(gè)所述客戶端數(shù)據(jù)被改變時(shí),該客戶端發(fā)送同步消息到所述通信服務(wù) 器,同時(shí)刷新本客戶端的其他同步對(duì)象;C) 通信服務(wù)器接收到發(fā)生數(shù)據(jù)改變的客戶端的同步消息,將該同步消息發(fā)送到 其他未發(fā)生數(shù)據(jù)改變的客戶端;D) 其他未發(fā)生數(shù)據(jù)改變的客戶端接到通信服務(wù)器發(fā)來(lái)的同步消息后,分別刷新 本客戶端的所有同步對(duì)象。在本發(fā)明所述的設(shè)備監(jiān)控系統(tǒng)中客戶端之間數(shù)據(jù)同步的方法中,所述步驟A)進(jìn) 一步包括Al)每個(gè)客戶端啟動(dòng)時(shí),登錄到所述通信服務(wù)器,所述通信服務(wù)器根據(jù)登錄的 客戶端創(chuàng)建連接列表;A2)每個(gè)客戶端創(chuàng)建本客戶端的第一級(jí)同步對(duì)象;A3)每個(gè)客戶端創(chuàng)建本客戶端的第N級(jí)同步對(duì)象,并建立包括所述其第N級(jí)同 步對(duì)象的本客戶端第N-l級(jí)同步對(duì)象列表,其中,N為整數(shù),且N》2。在本發(fā)明所述的設(shè)備監(jiān)控系統(tǒng)中客戶端之間數(shù)據(jù)同步的方法中,所述第一級(jí)同 步對(duì)象只有一個(gè),且為全局對(duì)象,該對(duì)象在所述客戶端退出之前, 一直存在;所述 第N級(jí)同步對(duì)象包括多個(gè),所述多個(gè)第N級(jí)同步對(duì)象包括界面對(duì)象或非界面對(duì)象。在本發(fā)明所述的設(shè)備監(jiān)控系統(tǒng)中客戶端之間數(shù)據(jù)同步的方法中,所述步驟B)進(jìn)一步包括Bl)生成同步消息;B2)發(fā)送該數(shù)據(jù)包到所述通信服務(wù)器上;B3)發(fā)送該數(shù)據(jù)包到本客戶端的同步入口函數(shù),通過(guò)所述本客戶端的同步入口函數(shù)刷新本客戶端的同步對(duì)象。在本發(fā)明所述的設(shè)備監(jiān)控系統(tǒng)中客戶端之間數(shù)據(jù)同步的方法中,所述同步消息的關(guān)鍵字段包括消息類型、記錄ID和可選字段。在本發(fā)明所述的設(shè)備監(jiān)控系統(tǒng)中客戶端之間數(shù)據(jù)同步的方法中,所述步驟C) 中,所述通信服務(wù)器根據(jù)步驟A1)中所得到的連接列表將其收到的同步消息轉(zhuǎn)發(fā)到與其相連的各客戶端上。在本發(fā)明所述的設(shè)備監(jiān)控系統(tǒng)中客戶端之間數(shù)據(jù)同步的方法中,所述步驟D)進(jìn)一步包括各客戶端將接收到的同步消息發(fā)送到本客戶端的同步入口函數(shù),通過(guò)所述本客戶端的同步入口函數(shù)刷新本客戶端的同步對(duì)象。在本發(fā)明所述的設(shè)備監(jiān)控系統(tǒng)中客戶端之間數(shù)據(jù)同步的方法中,所述通過(guò)所述本客戶端的同步入口函數(shù)刷新本客戶端的同步對(duì)象包括如下步驟B31)所述同步入口函數(shù)調(diào)用本客戶端的第一級(jí)同步對(duì)象的同步函數(shù),所述第一級(jí)同步對(duì)象根據(jù)所述同步消息中的同步消息類型和記錄ID,進(jìn)行相應(yīng)的處理;B32)所述第N-1級(jí)同步對(duì)象調(diào)用其同步對(duì)象列表中的第N級(jí)同步對(duì)象的同步函數(shù),對(duì)所述第N級(jí)同步對(duì)象依次根據(jù)所述同步消息中的同步消息類型和記錄ID,進(jìn)行相應(yīng)的處理;其中,N為整數(shù),且N》2。在本發(fā)明所述的設(shè)備監(jiān)控系統(tǒng)中客戶端之間數(shù)據(jù)同步的方法中,所述步驟B31) 和步驟B32)所述相應(yīng)的處理進(jìn)一步包括B311)判斷數(shù)據(jù)被修改的字段數(shù),如被修改字段數(shù)為1,且同步消息中包含了 該字段的當(dāng)前值,則直接使用該當(dāng)前值更新相關(guān)內(nèi)容;B312)如多個(gè)字段被修改,所述同步函數(shù)根據(jù)同步記錄ID,調(diào)用相關(guān)函數(shù),從 數(shù)據(jù)庫(kù)獲得指定的數(shù)據(jù)記錄后,再更新本地相關(guān)內(nèi)容。在本發(fā)明所述的設(shè)備監(jiān)控系統(tǒng)中客戶端之間數(shù)據(jù)同步的方法中,所述客戶端上 數(shù)據(jù)的改變包括增加、刪除或修改相關(guān)數(shù)據(jù)。實(shí)施本發(fā)明的設(shè)備監(jiān)控系統(tǒng)中客戶端之間數(shù)據(jù)同步的方法,具有以下有益效果 任一客戶端的數(shù)據(jù)被改變時(shí),其實(shí)時(shí)地刷新本客戶端上的對(duì)象并向通信服務(wù)器發(fā)送 同步消息,通信服務(wù)器向各客戶端轉(zhuǎn)發(fā)該同步消息,各客戶端完成同步,如此降低 了同步所需的時(shí)間,使同步的實(shí)時(shí)性提高,同時(shí)減少了對(duì)于系統(tǒng)的占用。本發(fā)明還 提供了一種框架,當(dāng)用戶需求發(fā)生變化需要增加新的同步功能時(shí),本系統(tǒng)可以在不 影響原來(lái)模塊的基礎(chǔ)上,很容易增加新的功能。


下面將結(jié)合附圖及實(shí)施例對(duì)本發(fā)明作進(jìn)一步說(shuō)明,附圖中-圖1是本發(fā)明一種設(shè)備監(jiān)控系統(tǒng)中客戶端之間數(shù)據(jù)同步的方法實(shí)施例中的網(wǎng)絡(luò) 結(jié)構(gòu)示意圖;圖2是本發(fā)明一種設(shè)備監(jiān)控系統(tǒng)中客戶端之間數(shù)據(jù)同步的方法實(shí)施例中客戶端 所發(fā)出的同步消息在網(wǎng)絡(luò)上傳輸途徑的示意圖;圖3是本發(fā)明一種設(shè)備監(jiān)控系統(tǒng)中客戶端之間數(shù)據(jù)同步的方法實(shí)施例中客戶端 內(nèi)部同步對(duì)象的結(jié)構(gòu)示意圖;圖4是本發(fā)明一種設(shè)備監(jiān)控系統(tǒng)中客戶端之間數(shù)據(jù)同步的方法實(shí)施例中客戶端 處理同步消息的流程圖;圖5是本發(fā)明一種設(shè)備監(jiān)控系統(tǒng)中客戶端之間數(shù)據(jù)同步的方法實(shí)施例中調(diào)用同步函數(shù)同步數(shù)據(jù)的流程圖。
具體實(shí)施方式
如圖l所示,在本發(fā)明一種設(shè)備監(jiān)控系統(tǒng)中客戶端之間數(shù)據(jù)同步的方法實(shí)施例 中,包括多個(gè)客戶端,圖1中所示為三個(gè)客戶端;至少一個(gè)數(shù)據(jù)庫(kù)服務(wù)器,每個(gè)客 戶端都與數(shù)據(jù)庫(kù)服務(wù)器相連;至少一個(gè)通信服務(wù)器,每個(gè)客戶端也都與通信服務(wù)器 相連;數(shù)據(jù)庫(kù)服務(wù)器與通信服務(wù)器之間也有網(wǎng)絡(luò)線路相連。這樣的連接使客戶端、 通信服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器三者之間的任意兩者都可以進(jìn)行數(shù)據(jù)的交換。數(shù)據(jù)庫(kù)服 務(wù)器保存了整個(gè)系統(tǒng)的相關(guān)業(yè)務(wù)數(shù)據(jù),多個(gè)客戶端之間可以存取這些數(shù)據(jù);通信服 務(wù)器作為同步消息的轉(zhuǎn)發(fā)服務(wù)器。圖2顯示的是在本實(shí)施例中當(dāng)某個(gè)客戶端發(fā)送同步消息時(shí),同步消息在網(wǎng)絡(luò)上 的傳輸途徑的示意圖。在圖2中,包括了一個(gè)主動(dòng)進(jìn)行數(shù)據(jù)處理的客戶端23、兩個(gè) 被動(dòng)進(jìn)行數(shù)據(jù)同步的客戶端24和建立有在線客戶端連接列表21的通信服務(wù)器,其 中,主動(dòng)進(jìn)行數(shù)據(jù)處理的客戶端23發(fā)出同步信息22,并分為兩路, 一路發(fā)送到通 信服務(wù)器,另一路發(fā)送到本客戶端的同步入口函數(shù),使本客戶端的其他同步對(duì)象能 夠進(jìn)行同步處理。比如用戶在設(shè)備維護(hù)界面修改了設(shè)備的信息,設(shè)備列表對(duì)象作為 一個(gè)同步對(duì)象,也要馬上更新該設(shè)備的信息。而通信服務(wù)器在接收到主動(dòng)進(jìn)行數(shù)據(jù) 處理的客戶端23發(fā)來(lái)的同步消息后,根據(jù)其內(nèi)的在線客戶端連接列表21,將同步 消息22轉(zhuǎn)發(fā)到上述在線客戶端連接列表21上的所有的被動(dòng)進(jìn)行數(shù)據(jù)同步的客戶端 24,使被動(dòng)進(jìn)行數(shù)據(jù)同步的客戶端24完成數(shù)據(jù)同步。圖3顯示的是本實(shí)施例中一個(gè)客戶端內(nèi)部,同步對(duì)象之間的關(guān)系結(jié)構(gòu)。該結(jié)構(gòu) 為樹(shù)狀結(jié)構(gòu),其根結(jié)點(diǎn)是該客戶端的第一個(gè)同步對(duì)象。同步對(duì)象之間是按照樹(shù)型結(jié) 構(gòu)進(jìn)行關(guān)聯(lián)的;每個(gè)同步對(duì)象是該樹(shù)狀結(jié)構(gòu)的一個(gè)節(jié)點(diǎn)。每個(gè)同步對(duì)象都包含一個(gè) 同步對(duì)象列表(SynObjList),該同步對(duì)象下面掛接的每一個(gè)同步對(duì)象的指針就保存 在該同步對(duì)象列表(SynObjList)里面。通過(guò)該同步對(duì)象列表(SynObjList),該同步 對(duì)象可以訪問(wèn)到其下面掛接的所有下級(jí)同步對(duì)象。這種結(jié)構(gòu)關(guān)系的一個(gè)好處是,客 戶端接收到同步數(shù)據(jù)包后,只需要調(diào)用第一個(gè)同步對(duì)象的同步模塊。然后同步處理一級(jí)一級(jí)傳遞下去, 一直到整個(gè)客戶端的同步處理都處理完成。在圖3中,包括了該客戶端的第一級(jí)同步對(duì)象3、包含在上述第一級(jí)同步對(duì)象 3內(nèi)的第二級(jí)同步對(duì)象列表4、由上述第二級(jí)同步對(duì)象列表4所指出的第二級(jí)同步對(duì) 象42、包含在上述第二級(jí)同步對(duì)象42內(nèi)的第三級(jí)同步對(duì)象列表5以及由上述第三 級(jí)同步對(duì)象列表5所指出的第三級(jí)同步對(duì)象51、 52和53。當(dāng)然第二級(jí)同步對(duì)象41、 43,實(shí)際上也在上述包含在第一級(jí)同步對(duì)象3中的第二級(jí)同步對(duì)象列表4中,他們 的第三級(jí)同步對(duì)象列表中也同樣指出了各自的第三級(jí)同步對(duì)象。為使敘述簡(jiǎn)便,圖 3中沒(méi)有示出相應(yīng)部分,在此也不再贅述。在上述的每一個(gè)同步對(duì)象中,還包括了 本對(duì)象的同步函數(shù)。當(dāng)圖3中的客戶端接收到同步消息后(不論是由通信服務(wù)器傳來(lái)的還是該客戶 端自身發(fā)出的),調(diào)用本客戶端的同步入口函數(shù)進(jìn)行處理如下同步入口函數(shù)調(diào)用第一級(jí)同步對(duì)象3(CoraraSrv)的同步函數(shù),根據(jù)同步數(shù)據(jù)包類 型和記錄ID,進(jìn)行相應(yīng)的處理判斷被修改的數(shù)據(jù)的字段數(shù),如果是只修改了某個(gè) 字段的同步消息,而且同步消息里面包含了該字段的當(dāng)前值,直接使用該字段的當(dāng) 前值更新相關(guān)記錄的內(nèi)容;如果是修改了很多字段的同步消息,第一級(jí)同步對(duì)象3 的同步函數(shù)會(huì)根據(jù)同步記錄ID,調(diào)用相關(guān)函數(shù),從數(shù)據(jù)庫(kù)獲得指定記錄的數(shù)據(jù)記錄, 然后再更新本地?cái)?shù)據(jù);完成上述步驟后,依次調(diào)用第二級(jí)同步對(duì)象列表4 (SynOb jList) 里面第二級(jí)同步對(duì)象42的同步函數(shù)。處理過(guò)程類似于上述步驟;完成上述步驟后, 再分別調(diào)用第二同步對(duì)象42中的第三級(jí)同步對(duì)象列表5(SynObjList)里面第三級(jí)同 步對(duì)象51、第三級(jí)同步對(duì)象52和第三級(jí)同步對(duì)象53的同步函數(shù),進(jìn)行與上述處理 方法相同的同步處理。圖4是本實(shí)施例中一個(gè)客戶端進(jìn)行同步處理的流程圖。SO,開(kāi)始同步處理流程。Sl,客戶端連接數(shù)據(jù)庫(kù)服務(wù)器和通信服務(wù)器在各客戶端啟動(dòng)時(shí),每個(gè)客戶分 別端登錄通信服務(wù)器,通信服務(wù)器會(huì)把登錄上來(lái)的客戶端記錄到連接列表中。S2,客戶端初始化在本步驟中,各客戶端分別創(chuàng)建相應(yīng)的同步對(duì)象,并掛接 到相應(yīng)的上級(jí)同步對(duì)象的同步對(duì)象列表(SynObjList)里面去,最終形成一個(gè)如圖3所示的同步對(duì)象樹(shù)型結(jié)構(gòu)。其具體步驟如下各客戶端分別創(chuàng)建其獨(dú)一的第一級(jí)同 步對(duì)象3 ,其作為一個(gè)全局的對(duì)象,在該客戶端未退出系統(tǒng)前一直存在;該第一級(jí) 同步對(duì)象3還包括一個(gè)第二級(jí)同步對(duì)象列表4,該客戶端創(chuàng)建第二級(jí)同步對(duì)象41、42、 43,并把上述第二級(jí)同步對(duì)象41、 42、 43掛接到第一級(jí)同步對(duì)象3的第二級(jí)同 步對(duì)象列表4里面去,即將上述第二級(jí)同步對(duì)象41、 42、 43的指針?lè)湃氲诙綄?duì) 象列表4中;同樣第二同步對(duì)象42中還包括第三同步對(duì)象列表5 (其實(shí)第二同步對(duì) 象41、 43中也包括第三同步對(duì)象列表,只是圖3中未示出),其中也放置有第三同 步對(duì)象51、 52和53的指針;如此下去,創(chuàng)建第N同步對(duì)象,并把第N級(jí)同步對(duì)象 掛接到第N-l級(jí)同步對(duì)象中的第N級(jí)同步對(duì)象列表里面去。S3,是否進(jìn)行了數(shù)據(jù)處理每個(gè)客戶端分別判斷自己是否主動(dòng)進(jìn)行了數(shù)據(jù)處理。 如果主動(dòng)進(jìn)行了數(shù)據(jù)處理,執(zhí)行S4;否則,等待同步消息的到達(dá),并執(zhí)行S9;S4,客戶端把數(shù)據(jù)處理結(jié)果保存到數(shù)據(jù)庫(kù)服務(wù)器;S5,客戶端根據(jù)數(shù)據(jù)處理的內(nèi)容生成相應(yīng)的同步消息在本步驟中,如果該客 戶端只是進(jìn)行了設(shè)備維護(hù),則發(fā)送設(shè)備同步消息,消息結(jié)構(gòu)里面只包含消息類型ID,設(shè)備ID;如果是修改了設(shè)備狀態(tài)(系統(tǒng)根據(jù)設(shè)備上報(bào)的告警短信自動(dòng)進(jìn)行了處理),消息結(jié)構(gòu)體里面除了消息類型ID,設(shè)備ID外,還包含當(dāng)前設(shè)備的最新?tīng)顟B(tài)ID。S6,客戶端直接調(diào)用本客戶端的同步入口函數(shù),對(duì)本客戶端的其他同步對(duì)象(包 括界面對(duì)象,非界面對(duì)象)進(jìn)行處理,并經(jīng)過(guò)同步消息處理過(guò)程,完成本客戶端的 數(shù)據(jù)同步。S7,客戶端把同步消息發(fā)送到通信服務(wù)器該客戶端(發(fā)生主動(dòng)數(shù)據(jù)處理的客 戶端)通過(guò)網(wǎng)絡(luò)將步驟S5中產(chǎn)生的同步消息發(fā)送到通信服務(wù)器上。S8,通信服務(wù)器把接收到的同步消息轉(zhuǎn)發(fā)給其他客戶端;通信服務(wù)器在接收到 上述同步消息后,根據(jù)步驟S1中得到的連接列表,將該同步消息轉(zhuǎn)發(fā)到其他未產(chǎn)生 主動(dòng)數(shù)據(jù)處理的客戶端上。S9,客戶端接收同步消息在上述連接列表上的、且在本次數(shù)據(jù)同步時(shí)未發(fā)生主動(dòng)數(shù)據(jù)處理動(dòng)作的客戶端分別作為被動(dòng)同步的客戶端,接收通信服務(wù)器發(fā)送過(guò)來(lái) 的同步消息。SIO,客戶端作為被動(dòng)同步的客戶端,接收到同步消息后,分別調(diào)用本客戶端 的同步入口函數(shù),該同步入口函數(shù)調(diào)用本客戶端的第一級(jí)同步對(duì)象(CommSrv)的同步 函數(shù)進(jìn)行同步處理,并經(jīng)過(guò)同步消息處理過(guò)程,完成了本客戶端的數(shù)據(jù)同步。Sll,系統(tǒng)是否結(jié)束判斷本客戶端是否退出系統(tǒng),如是,執(zhí)行步驟S12;如不是, 則跳轉(zhuǎn)到步驟S3,判斷本客戶端是否主動(dòng)進(jìn)行了數(shù)據(jù)處理,并繼續(xù)往下執(zhí)行;S12,結(jié)束同步處理流程。在步驟S6和步驟S8中,均涉及調(diào)用同步對(duì)象的同步入口函數(shù)對(duì)同步消息的處 理過(guò)程,其具體流程如圖5所示S501對(duì)本同步對(duì)象的相關(guān)數(shù)據(jù)進(jìn)行同步首先,在本同步對(duì)象(父節(jié)點(diǎn))中的相 關(guān)數(shù)據(jù)被刷新(即同步)。S502獲得本同步對(duì)象中下一級(jí)同步對(duì)象列表中對(duì)象的個(gè)數(shù)獲得本同步對(duì)象 中下一級(jí)同步對(duì)象列表(SynObjList)里面保存的下級(jí)同步對(duì)象指針對(duì)的個(gè)數(shù)COUNT, 即本同步對(duì)象中包含的下一級(jí)同步對(duì)象的個(gè)數(shù)。S503本級(jí)同步對(duì)象計(jì)數(shù)器初始值為l:設(shè)置一計(jì)數(shù)器,為本同步對(duì)象中下一級(jí) 同步對(duì)象列表計(jì)數(shù)器,并設(shè)置該計(jì)數(shù)器的初始值為1,且其取值范圍從1到步驟S502 中所得到的下一級(jí)同步對(duì)象個(gè)數(shù),即COUNT。S504獲取與該計(jì)數(shù)器值對(duì)應(yīng)的下一級(jí)同步對(duì)象列表中的對(duì)象指針由于上述計(jì) 數(shù)器的取值與下一級(jí)同步對(duì)象的個(gè)數(shù)相一致,所以該計(jì)數(shù)器的值可得到下一級(jí)同步 對(duì)象列表中的指針值,例如當(dāng)計(jì)數(shù)器值為1時(shí),指向下一級(jí)同步對(duì)象列表中的第一 個(gè)同步對(duì)象;當(dāng)計(jì)數(shù)器值為3時(shí),指向下一級(jí)同步對(duì)象列表中的第三個(gè)同步對(duì)象。S505同步該對(duì)象的相關(guān)數(shù)據(jù)同步上述被指向的同步對(duì)象指針?biāo)淼耐綄?duì) 象中的相關(guān)數(shù)據(jù);例如當(dāng)計(jì)數(shù)器值為1時(shí),同步下一級(jí)同步對(duì)象列表中的第一個(gè)同 步對(duì)象的相關(guān)數(shù)據(jù)。S506有無(wú)下級(jí)同步對(duì)象?判斷在步驟S506中被同步的下一級(jí)同步對(duì)象中是否 包含有在下一級(jí)的同步對(duì)象列表,如有,跳轉(zhuǎn)到步驟S511,并在完成步驟S511后 返回步驟S507;如無(wú),直接執(zhí)行步驟S507。S507本級(jí)同步對(duì)象計(jì)數(shù)器加l:將上述步驟S505中的計(jì)數(shù)器值加一,使其指向下一級(jí)同步對(duì)象列表中的下一個(gè)同步對(duì)象。S508計(jì)數(shù)器值超出本級(jí)同步對(duì)象列表中數(shù)值?判斷上述計(jì)數(shù)器的值是否超出在 步驟S503中得到的下一級(jí)同步對(duì)象的值,即COUNT;如未超出,跳轉(zhuǎn)到步驟S504; 如超出,執(zhí)行步驟S509。S509結(jié)束本次同步函數(shù)調(diào)用。S511下一級(jí)同步函數(shù)調(diào)用流程該流程與上述步驟S501到S509相同,不同之 處僅在于執(zhí)行的是另一個(gè)同步函數(shù)。系統(tǒng)里面所有的同步函數(shù)的處理流程都按照述步驟進(jìn)行。從上面的流程可以看出,同步對(duì)象(父節(jié)點(diǎn))在調(diào)用下級(jí)同步對(duì)象的同步函數(shù) 后,下一級(jí)同步對(duì)象的同步函數(shù)就會(huì)對(duì)本同步對(duì)象的相關(guān)數(shù)據(jù)進(jìn)行同步,然后又依 次調(diào)用下一級(jí)同步對(duì)象中的在下一級(jí)同步列表中的所有同步對(duì)象的同步函數(shù),直到 不再含有在下一級(jí)同步對(duì)象列表的同步對(duì)象為止。這樣,從第一級(jí)同步對(duì)象開(kāi)始,所有同步對(duì)象都進(jìn)行了同步處理。當(dāng)某個(gè)同步對(duì)象的同步處理功能需要修改時(shí),只需要對(duì)這個(gè)對(duì)象的同步函數(shù)進(jìn) 行修改,這個(gè)修改不影響其他的處理。當(dāng)需要在某一級(jí)同步對(duì)象中增加一個(gè)同步對(duì)象時(shí),例如需要在第三級(jí)同步對(duì)象 中增加同步對(duì)象B時(shí),只需要把這個(gè)同步對(duì)象B掛接到原來(lái)已經(jīng)存在第二級(jí)同步對(duì) 象中的某個(gè)同步對(duì)象下面,例如A (B成為A的子節(jié)點(diǎn)),即在第二級(jí)同步對(duì)象A的 第三級(jí)同步對(duì)象列表中加入指向第三級(jí)同步對(duì)象B的指針。這樣,當(dāng)?shù)诙?jí)同步對(duì) 象A同步完成本對(duì)象的數(shù)據(jù)同步后,就會(huì)調(diào)用第三級(jí)同步對(duì)象B的同步函數(shù),完成 第三級(jí)同步對(duì)象B的數(shù)據(jù)同步。這樣就實(shí)現(xiàn)了改動(dòng)最少的擴(kuò)充方法。以上所述實(shí)施例僅表達(dá)了本發(fā)明的實(shí)施方式,其描述較為具體和詳細(xì),但并不 能因此而理解為對(duì)本發(fā)明專利范圍的限制。應(yīng)當(dāng)指出的是,對(duì)于本領(lǐng)域的普通技術(shù) 人員來(lái)說(shuō),在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進(jìn),這些都屬 于本發(fā)明的保護(hù)范圍。因此,本發(fā)明專利的保護(hù)范圍應(yīng)以所附權(quán)利要求為準(zhǔn)。
權(quán)利要求
1、一種設(shè)備監(jiān)控系統(tǒng)中客戶端之間數(shù)據(jù)同步的方法,其特征在于,所述客戶端分別與通信服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器連接;該方法包括如下步驟A)初始化所述各客戶端;B)任意一個(gè)所述客戶端數(shù)據(jù)被改變時(shí),該客戶端發(fā)送同步消息到所述通信服務(wù)器,同時(shí)刷新本客戶端的其他同步對(duì)象;C)通信服務(wù)器接收到發(fā)生數(shù)據(jù)改變的客戶端的同步消息,將該同步消息發(fā)送到其他未發(fā)生數(shù)據(jù)改變的客戶端;D)其他未發(fā)生數(shù)據(jù)改變的客戶端接到通信服務(wù)器發(fā)來(lái)的同步消息后,分別刷新本客戶端的所有同步對(duì)象。
2. 根據(jù)權(quán)利要求1所述的數(shù)據(jù)同步方法,其特征在于,所述步驟A)進(jìn)一步包括Al)每個(gè)客戶端啟動(dòng)時(shí),登錄到所述通信服務(wù)器,所述通信服務(wù)器根據(jù)登錄的 客戶端創(chuàng)建連接列表;A2)每個(gè)客戶端創(chuàng)建本客戶端的第一級(jí)同步對(duì)象;A3)每個(gè)客戶端創(chuàng)建本客戶端的第N級(jí)同步對(duì)象,并建立包括所述其第N級(jí)同 步對(duì)象的本客戶端第N-l級(jí)同步對(duì)象列表,其中,N為整數(shù),且N》2。
3. 根據(jù)權(quán)利要求2所述的數(shù)據(jù)同步方法,其特征在于,所述第一級(jí)同步對(duì)象 只有一個(gè),且為全局對(duì)象,該對(duì)象在所述客戶端退出之前, 一直存在;所述第N級(jí) 同步對(duì)象包括多個(gè),所述多個(gè)第N級(jí)同步對(duì)象包括界面對(duì)象或非界面對(duì)象。
4. 根據(jù)權(quán)利要求3所述的數(shù)據(jù)同步方法,其特征在于,所述步驟B)進(jìn)一步包括Bl)生成同步消息;B2)發(fā)送該數(shù)據(jù)包到所述通信服務(wù)器上;B3)發(fā)送該數(shù)據(jù)包到本客戶端的同步入口函數(shù),通過(guò)所述本客戶端的同步入口函數(shù)刷新本客戶端的同步對(duì)象。
5、 根據(jù)權(quán)利要求4所述的數(shù)據(jù)同步方法,其特征在于,所述同步消息的關(guān)鍵 字段包括消息類型、記錄ID和可選字段。
6、 根據(jù)權(quán)利要求5所述的數(shù)據(jù)同步方法,其特征在于,所述步驟C)中,所述 通信服務(wù)器根據(jù)步驟Al)中所得到的連接列表將其收到的同步消息轉(zhuǎn)發(fā)到與其相連 的各客戶端上。
7、 根據(jù)權(quán)利要求l所述的數(shù)據(jù)同步方法,其特征在于,所述步驟D)進(jìn)一步包 括各客戶端將接收到的同步消息發(fā)送到本客戶端的同步入口函數(shù),通過(guò)所述本客 戶端的同步入口函數(shù)刷新本客戶端的同步對(duì)象。
8、 根據(jù)權(quán)利要求4或7所述的數(shù)據(jù)同步方法,其特征在于,所述通過(guò)所述本 客戶端的同步入口函數(shù)刷新本客戶端的同步對(duì)象包括如下步驟B31)所述同步入口函數(shù)調(diào)用本客戶端的第一級(jí)同步對(duì)象的同步函數(shù),所述第一 級(jí)同步對(duì)象根據(jù)所述同步消息中的同步消息類型和記錄ID,進(jìn)行相應(yīng)的處理;B32)所述第N-1級(jí)同步對(duì)象調(diào)用其同步對(duì)象列表中的第N級(jí)同步對(duì)象的同步函數(shù),對(duì)所述第N級(jí)同步對(duì)象依次根據(jù)所述同步消息中的同步消息類型和記錄ID,進(jìn)行相應(yīng)的處理;其中,N為整數(shù),且N》2。
9、 根據(jù)權(quán)利要求8所述的數(shù)據(jù)同步方法,其特征在于,所述步驟B31)和步 驟B32)所述相應(yīng)的處理進(jìn)一步包括B311)判斷數(shù)據(jù)被修改的字段數(shù),如被修改字段數(shù)為1,且同步消息中包含了 該字段的當(dāng)前值,則直接使用該當(dāng)前值更新相關(guān)內(nèi)容;B312)如多個(gè)字段被修改,所述同步函數(shù)根據(jù)同步記錄ID,調(diào)用相關(guān)函數(shù),從數(shù)據(jù)庫(kù)獲得指定的數(shù)據(jù)記錄后,再更新本地相關(guān)內(nèi)容。
10、根據(jù)權(quán)利要求9所述的數(shù)據(jù)同步方法,其特征在于,所述客戶端上數(shù)據(jù)的 改變包括增加、刪除或修改相關(guān)數(shù)據(jù)。
全文摘要
本發(fā)明涉及一種設(shè)備監(jiān)控系統(tǒng)中客戶端之間數(shù)據(jù)同步的方法,包括如下步驟初始化所述各客戶端;任意一個(gè)所述客戶端數(shù)據(jù)被改變時(shí),該客戶端發(fā)送同步消息到所述通信服務(wù)器,同時(shí)刷新本客戶端的其他同步對(duì)象;通信服務(wù)器接收到發(fā)生數(shù)據(jù)改變的客戶端的同步消息,將該同步消息發(fā)送到其他未發(fā)生數(shù)據(jù)改變的客戶端;其他未發(fā)生數(shù)據(jù)改變的客戶端接到通信服務(wù)器發(fā)來(lái)的同步消息后,分別刷新本客戶端的所有同步對(duì)象。實(shí)施本發(fā)明的設(shè)備監(jiān)控系統(tǒng)中客戶端之間數(shù)據(jù)同步的方法,具有以下有益效果降低了同步所需的時(shí)間,使同步的實(shí)時(shí)性提高,同時(shí)減少了對(duì)于系統(tǒng)的占用。本發(fā)明還提供了一種框架,可以在不影響原來(lái)模塊的基礎(chǔ)上,較易增加新的功能。
文檔編號(hào)H04L7/00GK101227265SQ20081006531
公開(kāi)日2008年7月23日 申請(qǐng)日期2008年1月31日 優(yōu)先權(quán)日2008年1月31日
發(fā)明者彭宇環(huán), 黃平剛 申請(qǐng)人:深圳國(guó)人通信有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
宁南县| 汶川县| 庄浪县| 蓬安县| 达拉特旗| 安岳县| 双桥区| 灌南县| 墨玉县| 黔南| 平阳县| 高陵县| 广饶县| 闽清县| 禄丰县| 鄂伦春自治旗| 施甸县| 双鸭山市| 麻江县| 周至县| 百色市| 武清区| 积石山| 六安市| 玛沁县| 通州区| 托克逊县| 绥宁县| 周至县| 成都市| 安达市| 新密市| 惠安县| 余庆县| 紫金县| 中卫市| 砀山县| 崇信县| 伊宁市| 三江| 乐陵市|