專利名稱:一種實(shí)現(xiàn)進(jìn)程間數(shù)據(jù)傳遞的方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及SymbianC/S方式的數(shù)據(jù)交互技術(shù),尤指一種基于SymbianC/S方式的實(shí)現(xiàn)進(jìn)程間數(shù)據(jù)傳遞的方法及系統(tǒng)。
背景技術(shù):
SymbianC/S方式是Symbian應(yīng)用程序之間的數(shù)據(jù)交互,訪問系統(tǒng)服務(wù)的最基礎(chǔ)方式,具體的應(yīng)用或系統(tǒng)程序在應(yīng)用該方式時(shí),經(jīng)常需要在客戶端(Client)和服務(wù)器(Server)之間傳遞復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。在Symbian操作系統(tǒng)中,Client是指利用Server提供的特定服務(wù)的程序;Server則指接受來自Client的請(qǐng)求消息,并同步或異步的處理接收到的請(qǐng)求消息。由于Client和Server往往處于不同的進(jìn)程之間,這就要求數(shù)據(jù)必須分配到連續(xù) 的內(nèi)存之上,即序列化到內(nèi)存中。這里,進(jìn)程是一個(gè)正在執(zhí)行的程序;或計(jì)算機(jī)中正在運(yùn)行的程序?qū)嵗?;或可以分配給處理器并由處理器執(zhí)行的一個(gè)實(shí)體;或由單一順序的執(zhí)行顯示,一個(gè)當(dāng)前狀態(tài)和一組相關(guān)的系統(tǒng)資源所描述的活動(dòng)單元。但是,復(fù)雜的數(shù)據(jù)結(jié)構(gòu)在內(nèi)存中的分配往往不是連續(xù)的,例如指針的應(yīng)用等。這樣,導(dǎo)致開發(fā)者在使用Symbian C/S方式時(shí),需要花費(fèi)大量的精力處理復(fù)雜數(shù)據(jù)結(jié)構(gòu)內(nèi)存序列化的問題。另外,復(fù)雜數(shù)據(jù)結(jié)構(gòu)有時(shí)意味著占用內(nèi)存的大小不是固定的,目前,常用的方法是預(yù)先分配一塊較大的內(nèi)存空間以滿足所有的需求,這就使得原本較小的數(shù)據(jù)占用較大內(nèi)存的情況,造成了基于Symbian設(shè)備如手持設(shè)備上內(nèi)存空間的嚴(yán)重浪費(fèi)。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種實(shí)現(xiàn)進(jìn)程間數(shù)據(jù)傳遞的方法及系統(tǒng),能夠合理分配內(nèi)存,節(jié)約空間資源,而且減少開發(fā)周期及降低開發(fā)復(fù)雜度。為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的—種實(shí)現(xiàn)進(jìn)程間數(shù)據(jù)傳遞的方法,用戶需要將數(shù)據(jù)從客戶端發(fā)送到服務(wù)器時(shí),包括將生成的對(duì)象數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為客戶端內(nèi)統(tǒng)一的數(shù)據(jù)結(jié)構(gòu),將數(shù)據(jù)序列化到內(nèi)存區(qū)域中,并將其打包為Symbian系統(tǒng)的標(biāo)準(zhǔn)描述符后傳送給服務(wù)器;服務(wù)器收到客戶端請(qǐng)求數(shù)據(jù)后,獲取請(qǐng)求的數(shù)據(jù)并確定請(qǐng)求的數(shù)據(jù)的數(shù)據(jù)大小,將得到的數(shù)據(jù)大小通知客戶端;客戶端根據(jù)通知分配存儲(chǔ)空間,并再次向服務(wù)器請(qǐng)求數(shù)據(jù)并獲取數(shù)據(jù)。該方法之前還包括所述客戶端將數(shù)據(jù)按照J(rèn)CE語(yǔ)法結(jié)構(gòu)生成用于Symbian的對(duì)象數(shù)據(jù)結(jié)構(gòu)。所述標(biāo)準(zhǔn)描述符中還包括用于在所述服務(wù)器端唯一標(biāo)識(shí)所述請(qǐng)求的請(qǐng)求ID,以及所述數(shù)據(jù)的字典碼。所述服務(wù)器確定請(qǐng)求的數(shù)據(jù)的數(shù)據(jù)大小包括
所述服務(wù)器先分析接收到的數(shù)據(jù),將所有的請(qǐng)求以請(qǐng)求ID為索引進(jìn)行存儲(chǔ);解析接收到的字典碼,根據(jù)字典碼調(diào)用相應(yīng)服務(wù)接口,并將客戶端的數(shù)據(jù)傳入相應(yīng)服務(wù)接口 ;相應(yīng)服務(wù)接口根據(jù)字典碼解析出數(shù)據(jù),進(jìn)行處理,并將數(shù)據(jù)返回給服務(wù)器;所述服務(wù)器從服務(wù)得到返回的數(shù)據(jù)后,根據(jù)請(qǐng)求ID對(duì)應(yīng)存儲(chǔ),并計(jì)算出要返回的數(shù)據(jù)的數(shù)據(jù)大小。所述客戶端從服務(wù)器獲取數(shù)據(jù)包括所述服務(wù)器再次收到請(qǐng)求后,將與所述請(qǐng)求ID應(yīng)的數(shù)據(jù)項(xiàng)打包后返回所述客戶端,所述客戶端將返回的數(shù)據(jù)存入分配的內(nèi)存區(qū)域中。所述服務(wù)器將與所述請(qǐng)求ID應(yīng)的數(shù)據(jù)項(xiàng)打包后返回所述客戶端后,該方法還包括所述服務(wù)器刪除自身存儲(chǔ)的與所述請(qǐng)求ID對(duì)應(yīng)的數(shù)據(jù)。該方法還包括所述客戶端根據(jù)字典碼解析存儲(chǔ)在內(nèi)存區(qū)域中的數(shù)據(jù),并返回給用戶。 一種實(shí)現(xiàn)進(jìn)程間數(shù)據(jù)傳遞的系統(tǒng),至少包括客戶端和服務(wù)器;其中, 客戶端,用于在用戶需要將數(shù)據(jù)發(fā)送到服務(wù)器時(shí),向服務(wù)器發(fā)送第一請(qǐng)求;接收到來自服務(wù)器的數(shù)據(jù)大小信息,分配存儲(chǔ)空間,向服務(wù)器發(fā)送第二請(qǐng)求;將從服務(wù)器獲得的數(shù)據(jù)存儲(chǔ)在分配的存儲(chǔ)空間;服務(wù)器,用于接收來自客戶端的第一請(qǐng)求,獲取請(qǐng)求的數(shù)據(jù)并確定請(qǐng)求的數(shù)據(jù)的數(shù)據(jù)大小,將得到的數(shù)據(jù)大小返回給客戶端;接收來自客戶端的第二請(qǐng)求,將客戶端需要的數(shù)據(jù)返回給客戶端。所述客戶端,還用于將所述數(shù)據(jù)按照J(rèn)CE語(yǔ)法結(jié)構(gòu)生成用于Symbian的對(duì)象數(shù)據(jù)結(jié)構(gòu)。所述服務(wù)器,還用于刪除自身存儲(chǔ)的返回給客戶端的數(shù)據(jù)。從上述本發(fā)明提供的技術(shù)方案可以看出,包括將數(shù)據(jù)按照J(rèn)CE語(yǔ)法結(jié)構(gòu)生成用于Symbian的對(duì)象數(shù)據(jù)結(jié)構(gòu);用戶需要將數(shù)據(jù)從Client發(fā)送到Server時(shí),Server根據(jù)Client的請(qǐng)求,獲取請(qǐng)求的數(shù)據(jù)并確定請(qǐng)求的數(shù)據(jù)的數(shù)據(jù)大小,將得到的數(shù)據(jù)大小通知Client ;而Client根據(jù)通知的數(shù)據(jù)大小分配存儲(chǔ)空間,并再次向Server請(qǐng)求數(shù)據(jù)并獲取數(shù)據(jù)。本發(fā)明方法基于SymbianC/S方式,提供了用于Client和Server的、可以將JCE生成的用戶對(duì)象數(shù)據(jù)結(jié)構(gòu)打包和解包的功能,方便了將JCE生成的對(duì)象數(shù)據(jù)結(jié)構(gòu)序列化到連續(xù)平坦的內(nèi)存區(qū)域中,并統(tǒng)一不同數(shù)據(jù)結(jié)構(gòu)之間的接口,方便了用戶調(diào)用,并支持了所有用戶自定義結(jié)構(gòu),靈活適應(yīng)了需求變更,加快了程序開發(fā)速度;Client根據(jù)實(shí)際接收的數(shù)據(jù)的大小,合理分配了內(nèi)存,節(jié)約了空間資源。
圖I為本發(fā)明實(shí)現(xiàn)進(jìn)程間數(shù)據(jù)傳遞的方法的流程圖;圖2為本發(fā)明實(shí)現(xiàn)進(jìn)程間數(shù)據(jù)傳遞的系統(tǒng)的組成結(jié)構(gòu)示意圖;圖3為本發(fā)明實(shí)現(xiàn)進(jìn)程間數(shù)據(jù)傳遞的方法的實(shí)施例的流程示意圖。
具體實(shí)施例方式圖I為本發(fā)明實(shí)現(xiàn)進(jìn)程間數(shù)據(jù)傳遞的方法的流程圖,如圖I所示,包括步驟t00 :將數(shù)據(jù)按照J(rèn)CE語(yǔ)法結(jié)構(gòu)生成用于Symbian的對(duì)象數(shù)據(jù)結(jié)構(gòu)。
JCE,是 ICE (Internet Communications Engine)開源中間件中編解碼的子集,J在這里是精簡(jiǎn)的意思。JCE是一種類C++語(yǔ)言的標(biāo)識(shí),開發(fā)者根據(jù)JCE的標(biāo)識(shí)進(jìn)行定義,借助工具即可實(shí)現(xiàn)快速生成具體的對(duì)象及對(duì)象接口文件。本步驟中,用戶將需要實(shí)現(xiàn)的數(shù)據(jù)結(jié)構(gòu),按照J(rèn)CE的語(yǔ)法標(biāo)識(shí)實(shí)現(xiàn),通過工具生成實(shí)際的對(duì)象數(shù)據(jù)結(jié)構(gòu),具體生成的方法屬于本領(lǐng)域技術(shù)人員的公知技術(shù),這里強(qiáng)調(diào)的是按照J(rèn)CE的語(yǔ)法標(biāo)識(shí)來實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)的定義。由于JCE采用類C++語(yǔ)法標(biāo)識(shí),解釋器可以根據(jù)JCE語(yǔ)法格式生成用于Symbian的對(duì)象數(shù)據(jù)結(jié)構(gòu)。因此,如果開發(fā)者需要修改數(shù)據(jù)結(jié)構(gòu),只需要通過修改JCE編碼標(biāo)識(shí),按照J(rèn)CE格式來重新生成對(duì)象及對(duì)象接口文件即可,這就避免了用戶生成自定義數(shù)據(jù)結(jié)構(gòu)的復(fù)雜過程,尤其地,在需求不一定時(shí),避免了數(shù)據(jù)結(jié)構(gòu)經(jīng)常變化而導(dǎo)致的頻繁重新定義數(shù)據(jù)結(jié)構(gòu)的問題。也就是說,本步驟基于JCE編碼技術(shù)實(shí)現(xiàn)對(duì)象定義,滿足了用戶語(yǔ)義在Client和Server之間傳輸。當(dāng)用戶需求發(fā)生變更時(shí),可以通過修改JCE編碼標(biāo)識(shí),來重新生成對(duì)象及對(duì)象接口文件,也減少了開發(fā)時(shí)間。步驟tOt :用戶需要將數(shù)據(jù)從Client發(fā)送到Server時(shí),將生成的對(duì)象數(shù)據(jù)結(jié)構(gòu) 轉(zhuǎn)換為客戶端內(nèi)統(tǒng)一的數(shù)據(jù)結(jié)構(gòu),將數(shù)據(jù)序列化到連續(xù)平坦的內(nèi)存區(qū)域中,并將其打包為Symbian系統(tǒng)的標(biāo)準(zhǔn)描述符后傳送給服務(wù)器。本步驟具體包括當(dāng)用戶需要將數(shù)據(jù)從Client發(fā)送到Server時(shí),首先將生成的該需要發(fā)送的數(shù)據(jù)的對(duì)象數(shù)據(jù)結(jié)構(gòu)統(tǒng)一為Client的內(nèi)部數(shù)據(jù)結(jié)構(gòu),以適配用戶的不同的數(shù)據(jù)結(jié)構(gòu)在Client內(nèi)部的傳遞;然后,為該數(shù)據(jù)分配內(nèi)存,Symbian利用系統(tǒng)的應(yīng)用程序編程接口(API)實(shí)現(xiàn)一個(gè)到內(nèi)存的字節(jié)一級(jí)讀寫工具,利用JCE生成的對(duì)象接口,即可將該數(shù)據(jù)到連續(xù)平坦的內(nèi)存區(qū)域中,具體實(shí)現(xiàn)屬于本領(lǐng)域技術(shù)人員的慣用技術(shù)手段,這里不再贅述;接著,將該數(shù)據(jù)作為請(qǐng)求打包為Symbian系統(tǒng)的標(biāo)準(zhǔn)的描述符,同時(shí),為了在Server端唯一標(biāo)識(shí)該請(qǐng)求,生成唯一請(qǐng)求ID ;生成該次數(shù)據(jù)的字典碼;將生成的字典碼、請(qǐng)求ID,以及描述符一起傳遞給 Server。步驟102 =Server收到Client的請(qǐng)求數(shù)據(jù)后,獲取請(qǐng)求的數(shù)據(jù)并確定請(qǐng)求的數(shù)據(jù)的數(shù)據(jù)大小,將得到的數(shù)據(jù)大小通知Client。本步驟具體包括Server收到Client的請(qǐng)求數(shù)據(jù)之后,先分析數(shù)據(jù),將所有的請(qǐng)求以ID為索引,存儲(chǔ)到一張表格中;解析其中的字典碼,根據(jù)字典碼調(diào)用相應(yīng)服務(wù)接口,并將Client的數(shù)據(jù)傳入相應(yīng)服務(wù)接口 ;相應(yīng)服務(wù)接口根據(jù)字典碼解析出數(shù)據(jù),進(jìn)行處理,并將數(shù)據(jù)返回給Server ;Server從服務(wù)得到返回的數(shù)據(jù)后,先根據(jù)ID,將數(shù)據(jù)插入表中對(duì)應(yīng)項(xiàng),將從服務(wù)返回的數(shù)據(jù)大小信息通知給Client。步驟103 =Client根據(jù)通知分配存儲(chǔ)空間,并再次向Server請(qǐng)求數(shù)據(jù)并獲取數(shù)據(jù)。本步驟具體包括=Client根據(jù)獲得的數(shù)據(jù)大小,分配相應(yīng)大小的內(nèi)存區(qū)域;再次向Server發(fā)起請(qǐng)求,并將上次請(qǐng)求ID以及分配的內(nèi)存區(qū)域傳遞給Server。這樣,根據(jù)實(shí)際接收的數(shù)據(jù)的大小,合理分配了內(nèi)存,節(jié)約了空間資源。Server收到請(qǐng)求后,根據(jù)ID在表中查找對(duì)應(yīng)的數(shù)據(jù)項(xiàng),將數(shù)據(jù)打包,返回Client,同時(shí)將表中的對(duì)應(yīng)項(xiàng)刪除,Client將返回的數(shù)據(jù)存入分配的內(nèi)存區(qū)域中,這就完成了一次完整的交互。最后,Client根據(jù)字典碼解析存儲(chǔ)在內(nèi)存區(qū)域中的數(shù)據(jù),并返回給用戶。對(duì)于用戶來說整個(gè)過程是透明的。在使用過程中,Client接口可以支持多次并發(fā)調(diào)用,并且是根據(jù)用戶自定義數(shù)據(jù)大小分配內(nèi)存的。本發(fā)明方法基于SymbianC/S方式,提供了用于Client和Server的、可以將JCE生成的用戶對(duì)象數(shù)據(jù)結(jié)構(gòu)打包和解包的功能,方便了將JCE生成的對(duì)象數(shù)據(jù)結(jié)構(gòu)序列化到連續(xù)平坦的內(nèi)存區(qū)域中,并統(tǒng)一不同數(shù)據(jù)結(jié)構(gòu)之間的接口,方便了用戶調(diào)用,并支持了所有用戶自定義結(jié)構(gòu),靈活適應(yīng)了需求變更,加快了程序開發(fā)速度;Client根據(jù)實(shí)際接收的數(shù)據(jù)的大小,合理分配了內(nèi)存,節(jié)約了空間資源。由于Server通過ID索引表和字典碼記錄了不同請(qǐng)求的信息,所以這種方式提供了動(dòng)態(tài)的、基于異步多次請(qǐng)求并發(fā)的機(jī)制。圖2為本發(fā)明實(shí)現(xiàn)進(jìn)程間數(shù)據(jù)傳遞的系統(tǒng)的組成結(jié)構(gòu)示意圖,如圖2所示,至少包 括客戶端和服務(wù)器,其中,客戶端,用于在用戶需要將數(shù)據(jù)從Client發(fā)送到Server時(shí),向服務(wù)器發(fā)送第一請(qǐng)求;接收到來自服務(wù)器的數(shù)據(jù)大小信息,分配存儲(chǔ)空間,向服務(wù)器發(fā)送第二請(qǐng)求;將從服務(wù)器獲得的數(shù)據(jù)存儲(chǔ)在分配的存儲(chǔ)空間;服務(wù)器,用于接收來自客戶端的第一請(qǐng)求,獲取請(qǐng)求的數(shù)據(jù)并確定請(qǐng)求的數(shù)據(jù)的數(shù)據(jù)大小,將得到的數(shù)據(jù)大小返回給客戶端;接收來自客戶端的第二請(qǐng)求,將客戶端需要的數(shù)據(jù)返回給客戶端。所述客戶端,還用于將所述數(shù)據(jù)按照J(rèn)CE語(yǔ)法結(jié)構(gòu)生成用于Symbian的對(duì)象數(shù)據(jù)結(jié)構(gòu)。所述服務(wù)器,還用于刪除自身存儲(chǔ)的返回給客戶端的數(shù)據(jù)。圖3為本發(fā)明實(shí)現(xiàn)進(jìn)程間數(shù)據(jù)傳遞的方法的實(shí)施例的流程示意圖,如圖3所示,包括以下步驟步驟300 :用戶將需要實(shí)現(xiàn)的數(shù)據(jù)結(jié)構(gòu),按照J(rèn)CE的語(yǔ)法標(biāo)識(shí)實(shí)現(xiàn),通過工具生成實(shí)際的對(duì)象數(shù)據(jù)結(jié)構(gòu)。 JCE采用類C++語(yǔ)法標(biāo)識(shí),解釋器可以根據(jù)JCE語(yǔ)法格式生成用于Symbian的對(duì)象數(shù)據(jù)結(jié)構(gòu),如果開發(fā)者需要修改數(shù)據(jù)機(jī)構(gòu),只需要按照J(rèn)CE格式重新生成即可,這就免去了用戶生成自定義數(shù)據(jù)結(jié)構(gòu)的過程。尤其是在需求不一定時(shí),避免了數(shù)據(jù)結(jié)構(gòu)經(jīng)常變化導(dǎo)致的頻繁重新定義數(shù)據(jù)結(jié)構(gòu)的問題。步驟301 步驟302 :當(dāng)用戶需要將數(shù)據(jù)從Client發(fā)送到Server時(shí),需要調(diào)用客戶端中的數(shù)據(jù)轉(zhuǎn)換(RQQSession)模塊,RQQSession模塊有兩個(gè)作用,一是實(shí)現(xiàn)抽象統(tǒng)一接口,可以適配用戶不同的數(shù)據(jù)結(jié)構(gòu)在客戶端內(nèi)部傳遞,二是建立對(duì)服務(wù)器的數(shù)據(jù)請(qǐng)求(CQQDataRequest),提供異步多次請(qǐng)求并發(fā)的機(jī)制,如圖3所示,其過程包括RQQSession 模塊將數(shù)據(jù)傳入 CQQDataRequest 模塊,CQQDataRequest 模塊將數(shù)據(jù)序列化到連續(xù)平坦的內(nèi)存區(qū)域中,然后打包為Symbian系統(tǒng)的標(biāo)準(zhǔn)描述符,為了在Server端唯一標(biāo)識(shí)該請(qǐng)求,生成唯一請(qǐng)求ID。同時(shí),生成該次數(shù)據(jù)的字典碼,字典碼和ID以及描述符一起傳遞給Server。步驟303 步驟305 :Server收到Client的請(qǐng)求后,分析數(shù)據(jù),將所有的請(qǐng)求以ID為索引記錄到一張表格中,解析字典碼,根據(jù)字典碼調(diào)用相應(yīng)服務(wù)接口,并將Client的數(shù)據(jù)傳入相應(yīng)具體服務(wù)。相應(yīng)具體服務(wù)接口根據(jù)字典碼解析出數(shù)據(jù),進(jìn)行處理,并將數(shù)據(jù)返回給 Server.。步驟306 步驟309 =Server從具體服務(wù)得到要返回給Client的數(shù)據(jù)后,根據(jù)ID,將數(shù)據(jù)插入表中的對(duì)應(yīng)項(xiàng),計(jì)算出要返回的數(shù)據(jù)大小,然后將數(shù)據(jù)大小返回給Client的CQQDataRequest模塊,CQQDataRequest模塊自動(dòng)根據(jù)數(shù)據(jù)大小,在Client分配相應(yīng)大小的內(nèi)存區(qū)域,這時(shí),CQQDataRequest模塊會(huì)再次請(qǐng)求Server,并將上次請(qǐng)求ID以及該內(nèi)存區(qū)域傳遞給Server。步驟310 步驟311 =Server收到ID后,在表中查找對(duì)應(yīng)的數(shù)據(jù)項(xiàng),將數(shù)據(jù)項(xiàng)打包,發(fā)送給到Client 的CQQDataRequest模塊準(zhǔn)備好的內(nèi)存區(qū)域中,同時(shí),刪除表中的對(duì)應(yīng)項(xiàng),并告知Client返回?cái)?shù)據(jù)已經(jīng)準(zhǔn)備好,Client從所述內(nèi)存區(qū)域中取回?cái)?shù)據(jù),這樣便完成了一次完整的交互。由于Server通過ID索引表和字典碼記錄了不同請(qǐng)求的信息,因此,本發(fā)明方法提供了動(dòng)態(tài)的、基于異步多次請(qǐng)求并發(fā)的機(jī)制。 步驟312 步驟313 =CQQDataRequest模塊將拿到的數(shù)據(jù)根據(jù)字典碼進(jìn)行解析,將數(shù)據(jù)通過RQQSession模塊返回給用戶。對(duì)于用戶來講,整個(gè)數(shù)據(jù)交互過程是透明的。在使用過程中,Client可以支持多次并發(fā)調(diào)用,并且是根據(jù)用戶自定義數(shù)據(jù)大小分配的內(nèi)存,因此,達(dá)到了合理分配內(nèi)存,節(jié)約空間資源的目的。以上所述,僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種實(shí)現(xiàn)進(jìn)程間數(shù)據(jù)傳遞的方法,用戶需要將數(shù)據(jù)從客戶端發(fā)送到服務(wù)器時(shí),其特征在于,包括 將生成的對(duì)象數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為客戶端內(nèi)統(tǒng)一的數(shù)據(jù)結(jié)構(gòu),將數(shù)據(jù)序列化到內(nèi)存區(qū)域中,并將其打包為Symbian系統(tǒng)的標(biāo)準(zhǔn)描述符后傳送給服務(wù)器; 服務(wù)器收到客戶端請(qǐng)求數(shù)據(jù)后,獲取請(qǐng)求的數(shù)據(jù)并確定請(qǐng)求的數(shù)據(jù)的數(shù)據(jù)大小,將得到的數(shù)據(jù)大小通知客戶端; 客戶端根據(jù)通知分配存儲(chǔ)空間,并再次向服務(wù)器請(qǐng)求數(shù)據(jù)并獲取數(shù)據(jù)。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于,該方法之前還包括所述客戶端將數(shù)據(jù)按照J(rèn)CE語(yǔ)法結(jié)構(gòu)生成用于Symbian的對(duì)象數(shù)據(jù)結(jié)構(gòu)。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述標(biāo)準(zhǔn)描述符中還包括用于在所述服務(wù)器端唯一標(biāo)識(shí)所述請(qǐng)求的請(qǐng)求ID,以及所述數(shù)據(jù)的字典碼。
4.根據(jù)權(quán)利要求I或2所述的方法,其特征在于,所述服務(wù)器確定請(qǐng)求的數(shù)據(jù)的數(shù)據(jù)大小包括 所述服務(wù)器先分析接收到的數(shù)據(jù),將所有的請(qǐng)求以請(qǐng)求ID為索引進(jìn)行存儲(chǔ);解析接收到的字典碼,根據(jù)字典碼調(diào)用相應(yīng)服務(wù)接口,并將客戶端的數(shù)據(jù)傳入相應(yīng)服務(wù)接口 ;相應(yīng)服務(wù)接口根據(jù)字典碼解析出數(shù)據(jù),進(jìn)行處理,并將數(shù)據(jù)返回給服務(wù)器; 所述服務(wù)器從服務(wù)得到返回的數(shù)據(jù)后,根據(jù)請(qǐng)求ID對(duì)應(yīng)存儲(chǔ),并計(jì)算出要返回的數(shù)據(jù)的數(shù)據(jù)大小。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述客戶端從服務(wù)器獲取數(shù)據(jù)包括所述服務(wù)器再次收到請(qǐng)求后,將與所述請(qǐng)求ID應(yīng)的數(shù)據(jù)項(xiàng)打包后返回所述客戶端,所述客戶端將返回的數(shù)據(jù)存入分配的內(nèi)存區(qū)域中。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述服務(wù)器將與所述請(qǐng)求ID應(yīng)的數(shù)據(jù)項(xiàng)打包后返回所述客戶端后,該方法還包括所述服務(wù)器刪除自身存儲(chǔ)的與所述請(qǐng)求ID對(duì)應(yīng)的數(shù)據(jù)。
7.根據(jù)權(quán)利要求5所述的方法,其特征在于,該方法還包括所述客戶端根據(jù)字典碼解析存儲(chǔ)在內(nèi)存區(qū)域中的數(shù)據(jù),并返回給用戶。
8.一種實(shí)現(xiàn)進(jìn)程間數(shù)據(jù)傳遞的系統(tǒng),其特征在于,至少包括客戶端和服務(wù)器;其中, 客戶端,用于在用戶需要將數(shù)據(jù)發(fā)送到服務(wù)器時(shí),向服務(wù)器發(fā)送第一請(qǐng)求;接收到來自服務(wù)器的數(shù)據(jù)大小信息,分配存儲(chǔ)空間,向服務(wù)器發(fā)送第二請(qǐng)求;將從服務(wù)器獲得的數(shù)據(jù)存儲(chǔ)在分配的存儲(chǔ)空間; 服務(wù)器,用于接收來自客戶端的第一請(qǐng)求,獲取請(qǐng)求的數(shù)據(jù)并確定請(qǐng)求的數(shù)據(jù)的數(shù)據(jù)大小,將得到的數(shù)據(jù)大小返回給客戶端;接收來自客戶端的第二請(qǐng)求,將客戶端需要的數(shù)據(jù)返回給客戶端。
9.根據(jù)權(quán)利要求8所述的系統(tǒng),其特征在于,所述客戶端,還用于將所述數(shù)據(jù)按照J(rèn)CE語(yǔ)法結(jié)構(gòu)生成用于Symbian的對(duì)象數(shù)據(jù)結(jié)構(gòu)。
10.根據(jù)權(quán)利要求9所述的系統(tǒng),其特征在于,所述服務(wù)器,還用于刪除自身存儲(chǔ)的返回給客戶端的數(shù)據(jù)。
全文摘要
本發(fā)明公開了一種實(shí)現(xiàn)進(jìn)程間數(shù)據(jù)傳遞的方法及系統(tǒng),包括將數(shù)據(jù)按照J(rèn)CE語(yǔ)法結(jié)構(gòu)生成用于Symbian的對(duì)象數(shù)據(jù)結(jié)構(gòu);用戶需要將數(shù)據(jù)從Client發(fā)送到Server時(shí),Server根據(jù)Client的請(qǐng)求,獲取請(qǐng)求的數(shù)據(jù)并確定請(qǐng)求的數(shù)據(jù)的數(shù)據(jù)大小,將得到的數(shù)據(jù)大小通知Client;而Client根據(jù)通知的數(shù)據(jù)大小分配存儲(chǔ)空間,并再次向Server請(qǐng)求數(shù)據(jù)并獲取數(shù)據(jù)。本發(fā)明方法基于SymbianC/S方式,提供了用于Client和Server的、可以將JCE生成的用戶對(duì)象數(shù)據(jù)結(jié)構(gòu)打包和解包的功能,方便了將JCE生成的對(duì)象數(shù)據(jù)結(jié)構(gòu)序列化到連續(xù)平坦的內(nèi)存區(qū)域中,并統(tǒng)一不同數(shù)據(jù)結(jié)構(gòu)之間的接口,方便了用戶調(diào)用,并支持了所有用戶自定義結(jié)構(gòu),靈活適應(yīng)了需求變更,加快了程序開發(fā)速度;Client根據(jù)實(shí)際接收的數(shù)據(jù)的大小,合理分配了內(nèi)存,節(jié)約了空間資源。
文檔編號(hào)G06F9/54GK102750186SQ201110097858
公開日2012年10月24日 申請(qǐng)日期2011年4月19日 優(yōu)先權(quán)日2011年4月19日
發(fā)明者任橋 申請(qǐng)人:騰訊科技(深圳)有限公司