999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

代碼生成技術在數據序列化方面的應用

2019-09-10 07:22:44戚艷兵楊佳
計算機與網絡 2019年13期

戚艷兵 楊佳

摘要:作為提高軟件開發效率和開發質量的一種技術,代碼生成技術一直受到軟件開發人員的重視。針對用于數據序列化的代碼生成技術在可移植性及封裝、解析效率等方面的問題,設計了一種可以快速生成數據序列化或反序列化代碼的方法。該方法以協議原型定義文件為基本輸入,通過嚴格高效的轉換策略,自動生成數據序列化或反序列化、日志以及邊界檢查等代碼。該方法具有數據結構輕便高效、代碼易于移植以及二進制數據流傳輸方式等優點。通過實際項目應用表明,該數據序列化代碼生成技術有效提高了嵌入式應用軟件的開發效率及可移植性,并且實現了嵌入式平臺之間數據的高效可靠傳輸。

關鍵詞:代碼生成;序列化;邊界檢查;嵌入式平臺

中圖分類號:TP311文獻標志碼:A文章編號:1008-1739(2019)13-52-4

0引言

在通信與電子信息行業,數據序列化技術一直是數據交換的重要組成部分[1]。尤其是在嵌入式軟件開發過程中,隨著規模的擴大和設計復雜度的提高,用戶需求或軟件設計框架變更的成本也越來越高,尤其是作為軟件工程重要組成部分的數據交換模塊,變更在所難免。加上大型軟件開發通常由很多人共同參與,編碼風格難以統一,編碼水平參差不齊,尤其是在數據序列化和參數邊界檢查過程中,容易出現問題。如何在保證系統可靠性和穩定性的同時提高軟件開發效率,已經成為嵌入式軟件開發中的重要問題。

代碼生成技術是一種利用程序生成代碼的技術[2],與手工書寫代碼相比,有效解決了人工編寫軟件代碼工作量大、錯誤率高的問題,大大提高了軟件開發效率和代碼質量,降低了軟件開發風險。針對現有嵌入式平臺代碼生成器框架生成代碼固化[3-4]、無法體現業務過程以及使用不夠靈活等特點,提出了一種針對嵌入式平臺的數據序列化代碼生成方法。提供一種用來序列化結構化數據的代碼生成方法,可以使用該技術將格式化協議序列化或反序列化成需要傳輸的數據流。提供了統一且跨平臺的應用程序編程接口API,為嵌入式環境下的協議處理提供高效、靈活、具備嚴格邊界檢查的代碼生成技術。

1數據序列化代碼生成技術設計

嵌入式平臺的數據序列化代碼生成方法要考慮的需求[5-6]主要有運行效率、穩定性和系統的開發效率。為了實現更簡單、更準確且更快捷的開發,系統的可維護性一方面要盡量減少代碼中的循環和判斷分支,另外一方面是對通信協議進行修改不應導致需要重新編譯整個系統,對代碼量和風格進行有效管理;改進后的系統應該提供方便統一的API。

數據序列化代碼生成框架如圖1所示,協議原型定義文件用于描述通信協議報文格式,輸入協議原型定義文件后需要對其進行檢查,協議解析模塊則負責將協議原型定義文件規范為代碼生成器能夠理解的格式,再根據模板引擎翻譯的設計模板結合系統參數生成對應的代碼。整個過程實現了將軟件平臺無關的協議報文格式翻譯成平臺相關的數據序列化代碼的過程。

1.1協議原型定義文件設計

數據通信過程中,需要采用一定的通信協議報文格式,而作為描述通信協議報文格式的一種手段,需要用到協議原型定義文件。只有收發雙方遵循約定好的固定格式收發數據,平臺才能夠對報文進行序列化和反序列化。

針對嵌入式平臺,通過設計自定義的描述性語言來良好地定義程序中需要用到數據格式。為了讓代碼生成方法實現高效靈活,使用的協議格式定義盡可能簡化。對應協議原型文件,一個數據流稱之為一個“message”,一個“message”對應一個C程序中的結構體,“message”之間可以嵌套;“message”中的每一行稱之為一個字段,一個字段描述一個程序中的數據類型,每個字段對應若干個字段標簽。

為了能夠準確描述每個字段的特征,需要對字段類型、字段聲明和字段標簽進行定義。為了支持跨平臺操作,需要根據字段特征對運行平臺的各個數據類型進行重新定義和內存分配,根據父子數據流之間的關系判定每個字段的優先級和嵌套關系。字段標簽還描述了字段的邊界特征,通過定義default,min,max,step標簽來規范字段數據的有效范圍,從而利用代碼生成器生成判斷序列化或反序列化的相關字段是否合法的代碼。

原型定義文件的數據結構如下:

1.2模板庫框架設計

通用的代碼生成系統模板原理是把靜態內容寫成模板[7-8],把動態內容用特殊標記嵌在模板內,然后通過代碼生成器將動態標記賦值,即可生成按照模板定制生成具體文件[9-10]。

不同于基于通用模板的代碼生成系統,針對嵌入式平臺的數據交換格式化需求,設計了一套由操作系統抽象層、功能模板層和代碼模板層自下而上組成的模板庫,如圖2所示。

操作系統抽象層主要針對嵌入式平臺的系統API和內存等特性進行管理。為了支持跨平臺操作,需要對操作系統進行抽象,根據字段類型針對平臺的各個數據類型進行重新定義,進行內存管理,提供調試所需的底層函數,檢測大小端模式并對不同平臺的系統API函數進行封裝、抽象。操作系統抽象層為功能模板層和代碼模板層提供了統一的接口使得生成的代碼滿足跨平臺數據交換格式化的需求。功能模板層作為中間層,主要為代碼模板層提供功能庫支持,如序列化與反序列化、日志輸出、邊界檢查以及功能開關等功能模板供上層調用。代碼模板層根據功能模板層和操作系統抽象層提供的內容,通過代碼生成器對動態標記進行賦值,完成最終的代碼,并且能夠根據需要方便快捷地生成對應平臺下的動態、靜態鏈接庫。

1.3代碼生成模塊

根據協議原型定義文件描述通信協議報文格式,利用協議檢查模塊對輸入進行詳細檢查。然后,協議解析模塊負責將協議原型定義文件規范為代碼生成器能夠理解的格式,再結合用戶的輸入參數,如大小端選擇,是否生成日志打印等參數輸入,選擇對應的代碼模板以及模板引擎,進行翻譯生成對應的代碼,實現將軟件平臺無關的協議報文格式翻譯成平臺相關的數據序列化代碼的過程,開發人員可對生成的代碼進行修改。

生成的代碼接口包括初始化協議結構體函數接口;負責網絡字節序、主機字節序轉換函數接口;負責日志輸出函數接口;協議結構體到序列化數據流的封裝代碼(序列化),序列化數據流到協議結構體的解析代碼(反序列化);負責字段的參數范圍檢查函數接口。例如,對于每個字段會生成一個參數范圍檢查函數(check)、一個獲取最大值函數(get_max_value)、一個獲取最小值函數(get_min_value)以及一個獲取默認值函數(get_default_value)。

2數據序列化代碼生成技術對比

序列化技術的發展從傳統的具有可讀性、結構嚴謹的XML,到輕量級的數據交換格式JSON,再到Google的Protobuf,序列化領域里,各種解決方案都在不斷地改進和優化以適應大數據時代的需求。

為了驗證本文提出的代碼生成技術在數據序列化方面的性能,提出了一個基于嵌入式平臺的基準化性能分析方案,選取了目前常用的序列化工具,包括XML,JSON,Google的proto-buf,用來測試其在嵌入式平臺下的性能。測試環境:MPC8360,基于powerpc e300核心,主頻533 Hz,512 M DDR2 SDRAM,Linux版本:2.6.30。所有工具均使用同一段協議數據。為了保證公平性,實例的所有字段都必須被解析,并且需要在不對字段進行壓縮的情況下進行,測試數據如圖3和圖4所示。

圖3中總時間開銷包括創建對象、序列化以及反序列化的總時間;單位ns。在給定條件下,綜合圖3性能數據對比可以發現,對于一條消息數據,XML,JSON的總時間開銷最長,而PROTO-BUF耗時較短,本文方法耗時最短。

圖4的字節數表示對象序列化之后的長度,即所占空間大小。在給定條件下,綜合圖4性能數據對比可以發現,對于一條消息數據,XML,JSON生成的消息長度最長,而PROTO-BUF較短,本文方法生成的消息長度最短。驗證結果表明,本文提出的針對數據序列化的代碼生成技術在嵌入式平臺的應用中與現有技術相比在時間和空間開銷上有一定的優勢。而嵌入式領域中,時間和空間的開銷是2個極其重要的指標。

3應用實例

為了驗證數據序列化代碼生成技術能夠有效提高嵌入式應用軟件的開發效率及可擴展性,實現了嵌入式平臺之間數據的高效和可靠傳輸,選取了實際應用的基于網管代理與站控應用管理系統,開發基于嵌入式IMX6Q核心板卡,操作系統為Linux。網管代理與站控應用管理系統負責完成對遠端站站內本地通信設備的監視與控制管理,并將本地設備參數及狀態向中心站設備管理系統發送,接收中心站的監視管理。網管代理與站控應用管理系統具備實時監控、快速響應和使用方便等特點。該平臺的數據序列化/反序列化使用了數據序列化代碼生成技術來實現。

網管代理與站控軟件采用B/S模式軟件架構,該系統由6個子系統構成:Web訪問服務、訪問控制單元、數據庫(DB)、數據訪問服務單元、設備采集單元以及日志管理單元組成。每個軟件單元又包含多個實現具體功能的軟件模塊,系統結構如圖5所示。

Web訪問服務負責與用戶進行交互,配置和監控設備與鏈路信息。訪問控制單元負責協議轉換,分發指令。數據訪問服務單元為網管代理與站控軟件提供數據庫讀、寫訪問操作支持,為其他內部軟件模塊提供公共的數據庫訪問能力。設備采集單元是站控軟件的前端處理進程,負責采集被管設備的運行參數、生成告警事件以及向被管設備轉發用戶的設備控制命令。日志管理單元支持包括運行日志、操作日志、通信日志及告警日志等信息。

Web訪問服務與訪問控制單元、訪問控制單元與設備采集單元、設備采集單元與數據訪問服務單元之間的數據交互均采用數據序列化代碼生成技術,序列化業務數據流程如圖6所示。

通過代碼生成技術在該系統的數據序列化方面的應用,基于業務過程的數據流能夠被快速實現,為軟件的快速開發打下了良好的基礎。該系統軟件的設計更多的是對軟件框架和業務過程的綜合設計與實現。能夠快速開發軟件協議并能靈活應對協議變化的方法在系統的軟件研發中占據重要地位,基于本文代碼生成技術的優勢是用戶根據需求自定義分層模板,分層結構使其易于復用;模板作為代碼的原型,生成的代碼可讀性強;模板與數據分離,當需修改代碼時,只需修改模板,易于維護。測試結果表明,該數據傳輸協議實現了網關和應用數據平臺之間數據的高效和可靠傳輸。

4結束語

針對嵌入式平臺的數據序列化需求,本文提出了一種代碼生成方法,使用該方法能夠將約定的通信協議序列化或反序列化成需要傳輸的二進制數據流。該方法以協議原型定義文件為基本輸入,通過嚴格高效的轉換策略,自動生成數據序列化或反序列化、日志輸出以及邊界檢查等代碼。生成的代碼具有一致的應用程序編程接口API,能夠為嵌入式環境下的協議處理提供高效、靈活、嚴格的邊界檢查服務。代碼具有良好的可讀性及可維護性,通過代碼生成工具的使用,極大地縮短了開發人員的工作量,有效提升了系統開發的效率、可維護性和可移植性。最后,在網管代理與站控的通信系統中,針對各個單元之間的數據序列化需求,引入了本文提出的代碼生成技術,在實際應用中得到了充分驗證。

參考文獻

[1]史棟杰.五種快速序列化框架的性能比較[J].電腦知識與技術,2010, 6(34):9710-9711.

[2]肖寒.J2EE平臺下代碼自動生成技術研究[J].電腦知識與技術,2009,5(20): 5421-5422,5434.

[3]張濤,黃強,毛磊雅,等.一個基于JSON的對象序列化算法[J].計算機工程與應用,2007,43(15):98-100,133.

[4]管太陽.基于模板的自動代碼生成技術的研究[D].成都:電子科技大學,2007.

[5]王海波,耿暉,姜吉發,等.基于XML的數據交換的實現[J].計算機應用,2001, 21(4): 67-68.

[6]董玉明.代碼生成技術在管理信息系統開發中的研究與應用[D].長春:吉林大學,2012.

[7]劉青.基于Protocol Buffer的即時通信監控系統設計與實現[D].武漢:華中科技大學,2013.

[8]魯杰,王永斌,劉宏波.基于XML的報務系統數據分發機制研究[J].計算機工程與設計, 2010, 31(12): 2707-2709.

[9] Alonso D,Vicente-Chicote C,Sanchez P,et al. Automatic Ada Code Generation Using a Model-Driven Engineering Approach[J]. Lecture notes in Computer Science,2007(4498): 168-179.

[10]胡晨光,嚴捷豐,高正東,等.一種類的序列化與反序列化框架[J].電腦知識與技術,2009,5(24):6739-6741.

主站蜘蛛池模板: 91在线中文| 久久www视频| 热re99久久精品国99热| 精品亚洲国产成人AV| 国产乱人伦AV在线A| 天天色天天操综合网| 久久亚洲日本不卡一区二区| 亚洲欧美精品在线| 国产亚洲高清在线精品99| 亚洲IV视频免费在线光看| 国产91小视频| 久久熟女AV| 国产成人精品亚洲日本对白优播| 亚洲精品桃花岛av在线| 91麻豆精品视频| 国产自产视频一区二区三区| 自拍亚洲欧美精品| 久久伊人操| 97色婷婷成人综合在线观看| 色欲不卡无码一区二区| 精品国产福利在线| 亚洲色图另类| 福利国产微拍广场一区视频在线| 亚洲国产第一区二区香蕉| 99精品在线看| 亚洲欧美不卡| 亚洲Va中文字幕久久一区 | 波多野结衣在线se| 日本精品中文字幕在线不卡| 久久人人97超碰人人澡爱香蕉| 欧美国产中文| 特级毛片8级毛片免费观看| 呦系列视频一区二区三区| 欧美三级视频网站| 玖玖精品视频在线观看| 日韩免费成人| jijzzizz老师出水喷水喷出| 午夜在线不卡| 日韩a级毛片| 99热这里只有精品免费| 九九线精品视频在线观看| 四虎AV麻豆| 美女扒开下面流白浆在线试听| 91视频首页| 亚洲婷婷丁香| 日韩高清在线观看不卡一区二区| 日本不卡在线播放| 亚洲中文无码h在线观看| 国产精品免费电影| 国产熟睡乱子伦视频网站| 亚洲欧美另类久久久精品播放的| 亚洲国模精品一区| 人妻丰满熟妇AV无码区| 最新午夜男女福利片视频| 在线视频亚洲欧美| 中文字幕永久视频| 99一级毛片| 国产在线专区| 91亚瑟视频| 综合人妻久久一区二区精品 | 欧美色99| 国产区成人精品视频| AV在线天堂进入| 亚洲精品动漫| 久久精品国产精品国产一区| 亚洲最黄视频| 国产成人精品一区二区秒拍1o| 久久精品国产免费观看频道| 久久这里只精品国产99热8| 婷婷六月激情综合一区| 国产精品入口麻豆| 无码高潮喷水专区久久| 国产成人一区在线播放| 亚洲国产无码有码| 国产va免费精品观看| 精品一区二区三区视频免费观看| 国产香蕉97碰碰视频VA碰碰看| 亚洲无线一二三四区男男| 久久黄色小视频| 97青草最新免费精品视频| 国产精品免费电影| 国产激情国语对白普通话|