一種網絡應用程式數據交換機制的製作方法
2023-05-04 10:00:06
專利名稱:一種網絡應用程式數據交換機制的製作方法
技術領域:
本發明一般的涉及通信領域。更具體的,本發明涉及用於網絡應用程式之間傳送數據的方法和系統。
背景技術:
毋庸置疑,網絡的迅速發展已經影響到人們的日常生活。現在更多的人習慣發送電子郵件,而不是通過普通的的郵政服務發送消息,並且從網站上閱讀每日的新聞時事,而不是通過廣播或則報刊等傳統媒體。還可通過電子商務進行貿易。所有這一切都成為了當今的時尚。
上述的網絡的各種應用,都可歸納為網絡應用程式。網絡應用程式至少包括兩個程序主體,並且分布於網絡的不同節點,程序主體之間通過網絡協議由一方發起進行握手連接。連接完成後程序主體之間可進行數據交換從而滿足程序功能的需求。例如電子郵件程序,用戶起草完郵件點擊發送的時候,用戶操作的程序主體通過網絡協議向遠程郵件伺服器程序主體發起握手連接,連接完成後發送郵件數據給伺服器程序主體,伺服器接收完成後返回確認消息,關閉連接。
網絡協議包括了網絡物理層、數據鏈路層、網間層、傳輸層,這四層協議是網絡的的基本組成要素,也是網絡應用程式運行的基本環境。網絡應用程式的一方發出的握手連接信號遞交給傳輸層,由傳輸層再遞交給網間層進行網絡尋徑,網間層再遞交給數據鏈路層進行物理編址最後通過物理層傳輸到另一方程序主體的物理層,另一方網絡協議再經過相反的轉換把物理層信號轉換到傳輸層後遞交給程序主體。本發明的數據交換機制位於傳輸層之上,歸屬於應用層協議類型。
程序主要由可執行代碼和數據組成,單機運行的程序代碼和數據是合體為一的,可執行代碼在單一電腦上運行,並且讀取和保存數據均在本機上,這和網絡應用程式的重要區別在於數據的存放位置。網絡應用程式的可執行代碼所需要的數據位於網絡的不同節點,不同節點在物理上可能是遠在千裡外的另一城市,節點間程序主體通過如上所述的網絡協議進行連接。不同節點的程序必須收到所需的數據後方可完成相應功能。例如用戶端郵件程序必須接收到伺服器發送的信件數據後才可完成接收功能,並將郵件顯示出來,如沒有接收到數據則無法完成郵件顯示功能。
目前,網絡程序設計者一般都是自定義本程序的數據交換規則,如郵件程序數據交換規則定義為,首先用戶端發送Mail [email protected],然後伺服器返回250 OK,依次類推來完成數據交換。目前通常的做法主要存在兩個問題1、數據交換規則只能限定於本程序使用。
2、不能自適應新的數據類型,增加數據類型必須修改規則。
本發明主要解決以上兩個問題,本發明數據交換機制可以通用於各網絡程序,而且能夠自動適應新的數據類型,包括二進位數據。這將極大提高網絡程序的開發效率。
發明內容
本發明主要在於提供一套完整的網絡應用程式數據交換機制,首先按照本發明對數據進行建模,本發明包括一套完整的數據建模語言。完成建模後再按照本發明中傳輸規則對數據模型進行傳輸,數據的傳輸是雙工模式,任何網絡節點的數據發送和接受都依據本發明中的傳輸規則進行傳輸。最後對接收的數據模型進行解析,依據本發明中的解析規則形成數據結構體,提供給程序使用。
本發明主要由以下三部分組成,下面逐一進行描述一、數據建模部分數據建模語言定義如下(本建模語言採用BNF方法定義)符號示意::=定義為 非終端符號[]可選{}重複0-n|或則 \必選一
<oOBJECT>::=OBJECT<oBase><oName><CR><oBEGIN><CR>{<oName>.<oAttribute><CR>}{<oName>.<oMatrix> <CR>}{<oOBJECT> <CR>}<oEND><CR><oBase>::=<Alpha>{<Character>}<oName>::=<Alpha>{<Character>}<oBEGIN>::={<oEND> ::= }<oAttribute>::=\<oAttr_1>|<oAttr_2>\<oAttr_1>::=<Character>=["]<Character>["]<oAttr_2>::=<oBase>=<oName>|<oExtend><oMatrix>::=\<oMatr_1>|<oMatr_2>|<oMatr_3>|<oMatr_4>\<oMatr_1>::=<Character>[]=["]<Character>["]{,["]<Character>["]}<oMatr_2>::=<oBase>[]=<oName>|<oExtend>{,<oName>|<oExtend>}<oMatr_3>::=<Character>[<Digit>{<Digit>}]=<Character><oMatr_4>::=<oBase>[<Digit>{<Digit>}]=<oName>|<oExtend><oExtend>::=<oName>.<oName>{.<oName>}<Character>::=<Alpha>|<Digit>|<Special>{<Alpha>|<Digit>|<Special>}<Alpha> ::=a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z<Digit> ::=0|1|2|3|4|5|6|7|8|9<Special>::=+|-|*|/|<|>|.|,|;| |_|!|@|#|$|%|^|amp;|*|(|)|[|]<CR>::=Enter Keybr/
二、傳輸規則部分一個數據包由如下格式的10段連續組成,各段位長如下所標註| 1 | 1 | n | m | 1 | n | m | 1 | n | m |第1段表示數據類型,共分為EmObject,EmAttribute,EmMatrix,EmBinary,EmEnd第2段表示下一段n的長度第3段表示下一段m的長度第4段表示數據體第5段表示下一段n的長度第6段表示下一段m的長度第7段表示數據體第8段表示下一段n的長度第9段表示下一段m的長度第10段表示數據體三、解析機制部分接收方對數據進行解析後形成數據結構體,數據結構的名字可在程序代碼中任意定義,這樣滿足了不同數據類型的組合定義需求。數據結構體中的數據名稱根據數據模型定義而動態創建,這樣滿足了新增數據類型的擴充需求。
圖1是本發明的系統流程圖首先從A01開始,節點A程序運行。
進入A02點,根據本發明中的語法規則進行數據建模。
進入A03點,根據本發明中的傳輸規則對數據進行打包。
進入B01點,節點B程序接收數據。
進入B02點,根據本發明中的解析規則,B程序對數據解析。
進入B03點,根據B02的解析形成數據體。
進入B04點,節點B程序調用A程序傳遞過來的數據。
進入B05點,節點B程序對數據進行建模。
進入B06點,節點B程序傳輸數據給A程序。
進入A04點,節點A程序接收數據。
進入A05點,節點A程序對數據進行解析。
進入A06點,根據A05的數據形成數據體。
進入A01點,節點A程序調用B程序傳遞過來的數據。
圖2是單一個節點程序所具備的基本功能
具體實施例方式
以下舉例來詳細說明本發明的實施方式。
設想將要開發一個遠程考試的網絡應用程式,程序分為考生部分和伺服器部分。考生部分程序在參加考試者家庭電腦上運行,負責獲取題目填寫答案發送給伺服器,最後獲取分數。伺服器部分在培訓中心運行,負責發送題目給考生,判斷答案是否正確,最後給考生發送分數。
本程序涉及的數據如下試題部分試題編號、試題內容、試題答案考生部分準考證號、姓名、分數根據本發明建立數據模型如下OBJECT wxEXAMINATION aExam{ aExam.No=1 aExam.Content=「《望廬山瀑布》的作者是誰?」aExam.Result=「李白」}OBJECT wxSTUDENT aStudent{ aStudent.No=200811863 aStudent.Name=王智勇}br/考生啟動程序後,首先形成數據模型為aStudent,依據本發明中的規則形成如下數據包進行發送(中間的符號|這裡作為分割顯示用,空格是便於閱讀)EmObject |1|9|wxSTUDENT|1|8|aStudent |1|0|EmAttribute |1|2| No |1|9| 200811863|1|0|EmAttribute |1|4| Name|1|6|王智勇|1|0|EmEnd|1|0|1|0|1|0|伺服器部分接收到如上數據包後進行解析,依據本發明將解析出如下的動態數據結構體wxSTUDENT aStudentaStudent(「No」)
aStudent(「Name」)伺服器程序根據數據結構體aStudent來訪問No和Name欄位的內容。依此記錄該生開始考試。伺服器以同樣的原理將wxEXAMINATION試卷的數據發送給考生部分程序。考生部分程序根據數據體aExamination來顯示試題。
當需要增加新的數據類型的時候,例如需要增加輸入考生的身份證號碼。依據本發明只需要對wxSTUDENT做屬性增加即,增加後如下所示OBJECT wxSTUDENT aStudent{aStudent.No=200811863aStudent.Name=王智勇aStudent.ID=320211750418091}再依據本發明傳遞到伺服器後,伺服器部分程序同樣還是使用數據體aStudent來訪問,該數據體將自動增加ID屬性,伺服器程序可直接通過aStudent(「ID」)來訪問該數據。
如將試卷定義為只可n個特殊考生參加,則數據模型可定義為OBJECT wxEXAMINATION aExam{aExam.No=1aExam.Content=「《望廬山瀑布》的作者是誰?」aExam.Result=「李白」aExam.wxSTUDENT=aStudent,bStudent,cStudent}通過本發明的數據模型和解析機制的配合來實現了對新增數據類型的無縫處理,再結合本發明傳輸機制使得新增加數據類型不影響程序的已有結構,原程序可以立刻訪問到新增加的數據而不需要做任何額外的工作。並且本發明可描述關係型數據、樹形數據、和網狀數據。
另外綜上所述,本發明網絡程序數據交換機制可適用於任何類型的網絡應用程式的開發,極大簡化了網絡程序開發中的數據處理部分工作。
權利要求
1.一種網絡應用程式數據交換機制,包括將原始數據建成統一數據模型的數據建模語言;將數據模型形成網絡數據包的數據傳輸規則;將數據包中數據進行解析,形成數據體規則;
2.如權利要求1所述的網絡應用程式數據交換機制,其中,該數據建模語言可適應各種類型的數據,包括數字、文本、特殊符號、二進位等。並可實現對關係、網狀、和樹形結構數據進行描述。
3.如權利要求1所述的網絡應用程式數據交換機制,其中,該數據模型在新增加數據類型時不影響原有的程序結構,而且可以在不增加、不修改程序代碼的前提下讓原有程序訪問到新增加的數據。
4.如權利要求1所述的網絡應用程式數據交換機制,其中,該數據傳輸規則在完成傳輸數據的同時保證了數據流量的最小化,以動態大小數據包形式傳輸。
5.如權利要求1所述的網絡應用程式數據交換機制,其中,該數據傳輸規則不受建模語言中新增加數據類型影響,可自適應新增加的數據類型。
6.如權利要求1所述的網絡應用程式數據交換機制,其中,該數據解析規則不受建模語言中新增加數據類型影響,可自適應新增加的數據類型。
全文摘要
本發明主要在於提供一套完整的網絡應用程式數據交換機制,首先按照本發明對數據進行建模,本發明包括一套完整的數據建模語言。完成建模後再按照本發明中傳輸規則對數據模型進行傳輸,數據的傳輸是雙工模式,任何網絡節點的數據發送和接受都依據本發明中的傳輸規則進行傳輸。最後對接收的數據模型進行解析,依據本發明中的解析規則形成數據結構體,提供給程序使用。本發明本數據交換機制可以通用於各類型網絡程序,而且能夠自動適應新的數據類型,包括二進位數據。這將極大提高網絡程序的開發效率。
文檔編號H04L12/58GK101068241SQ20071001995
公開日2007年11月7日 申請日期2007年2月5日 優先權日2007年2月5日
發明者柏基幹 申請人:柏基幹