(計算機軟件與理論專業(yè)論文)面向嵌入式系統(tǒng)xmlrpc的分析與實現(xiàn).pdf_第1頁
(計算機軟件與理論專業(yè)論文)面向嵌入式系統(tǒng)xmlrpc的分析與實現(xiàn).pdf_第2頁
(計算機軟件與理論專業(yè)論文)面向嵌入式系統(tǒng)xmlrpc的分析與實現(xiàn).pdf_第3頁
(計算機軟件與理論專業(yè)論文)面向嵌入式系統(tǒng)xmlrpc的分析與實現(xiàn).pdf_第4頁
(計算機軟件與理論專業(yè)論文)面向嵌入式系統(tǒng)xmlrpc的分析與實現(xiàn).pdf_第5頁
已閱讀5頁,還剩53頁未讀, 繼續(xù)免費閱讀

(計算機軟件與理論專業(yè)論文)面向嵌入式系統(tǒng)xmlrpc的分析與實現(xiàn).pdf.pdf 免費下載

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

摘要 隨著嵌入式系統(tǒng)和分御式計算的迅速發(fā)展 信息共享的程度日益提高 目前 嵌入式系統(tǒng)接入i n t e r n e t 技術(shù)已經(jīng)成熟 嵌入式系統(tǒng)的遠(yuǎn)程過程調(diào)用已成為最 新技術(shù)熱點 本文首先討論現(xiàn)有的遠(yuǎn)程過程調(diào)用技術(shù)的研究現(xiàn)狀及其在嵌入式系統(tǒng)中的 應(yīng)用 說明研究嵌入式系統(tǒng)遠(yuǎn)程過程調(diào)用的必要性和重要性 指出了嵌入式系統(tǒng) 遠(yuǎn)程調(diào)用開發(fā)中存在的困難與問題 本文的主體部分討論了x m l r p c 規(guī)范以及其計算方式 深入地分析了 x m l r p c 的5 a v a 實現(xiàn)的體系結(jié)構(gòu) 基于該體系結(jié)構(gòu)提出了適用于嵌入式系統(tǒng)的c 語言丌發(fā)的x m l r p c 遠(yuǎn)程過程調(diào)用應(yīng)用實現(xiàn)的體系框架 并設(shè)計了相應(yīng)的簡單的 動態(tài)內(nèi)存管理 實現(xiàn)了在嵌入式系統(tǒng)平臺互異 內(nèi)存有限的情況下基于x m l 消 息傳遞的遠(yuǎn)程過程調(diào)用的c 語言開發(fā)的一般化的應(yīng)用程序框架 通過實驗測試表 明 使用該框架易于實現(xiàn)嵌入式系統(tǒng)的分布式編程 最后論文對設(shè)計和應(yīng)用嵌入式系統(tǒng)的遠(yuǎn)程過程調(diào)用進(jìn)行了簡單總結(jié)和展望 嵌入式系統(tǒng)的遠(yuǎn)程過程調(diào)用是將x m l r p c 應(yīng)用在資源有限的嵌入式系統(tǒng)上 這是 最新發(fā)展起來的 論文指出了尚未考慮和有待于進(jìn)一步研究和探討的地方 關(guān)鍵字 嵌入式系統(tǒng)x m l r p c 遠(yuǎn)程過程調(diào)用 應(yīng)用程序框架 嵌入式i n t e r n e t動態(tài)內(nèi)存管理 a b s t r a c t w i t ht h er a p i dd e v e l o p m e n to fe m b e d d e ds y s t e ma n dd i s t r i b u t ec o m p u t i n g t h e t e c h n o l o g yo fe m b e d d e ds y s t e ma c c e s s i n gt oi n t e m e tf o ri n f o r m a t i o ns h a r i n gh a s i m p r o v e d r e m o t ep r o c e s sc a l l r p c o f e m b e d d e ds y s t e mh a sb e c o m et h el a t e s ta n d h o tt e c h n o l o g y a tt h e b e g i n n i n go ft h i sa r t i c l e d i s c u s s s o m ed i f f e r e n tm o d e l so fr p c t e c h n o l o g yn o wb e i n gu s e d a p p l i c a t i o n so fe m b e d d e ds y s t e mi n i n t e r n e to ft h e m t u r ei si n t r o d u c e da n ds h o w st h ei n e v i t a b i l i t yo fr e s e a r c h i n gr p co fe m b e d d e d s y s t e m a tt h es a m et i m e t h ed i f f i c u l t i e so fd e s i g n i n ge m b e d d e ds y s t e mr e m o t ec a l l a r em e n t i o n e d t h em a i np a r to ft h i st h e s i se x p l a i n st h ed e t a i lo fc o m p u t i n gm o d e l so f x m l r p c a n a l y s e st h ei m p l e m e n t a t i o no fx m l r p cf o rj a v a t h e nb a s e dt h a t a r c h i t e c t u r e d e s i g n s a n o t h e rf r a m e w o r ku s i n gcl a n g u a g ef o rx m l r p ci n e m b e d d e ds y s t e m a n da c c o r d i n gt h a ta r c h i t e c t u r eg i v e ss i m p l ea n dd y n a m i cm e m o r y m a n a g e m e n t t os o l v et h ep r o b l e mt h a t i nt h ec o n d i t i o no fd i f f e r e n tp l a t f o r m sa n d l i m i t e dr e s o u r c et os e n dm e s s a g e si ne m b e d d e ds y s t e m t h a ta r c h i t e c t u r ei sa c o m m o nu s e df r a m e w o r ku s i n gcl a n g u a g ef o rx m l r p ci ne m b e d d e ds y s t e m t h r o u g ht h et e s t i tc o u l db ed e m o n s t r a t e dt h a ta r c h i t e c t u r ef r a m e w o r ki se a s ya n d e f f i c i e n tt ou s ei nd i s t r i b u t e dp r o g r a m s i nt h el a s tp a r to f t h i st h e s i s s u m m a r ya n dl o o kf o r w a r dt h ed e s i g no f x m l r p c i ne m b e d d e ds y s t e m r p cf o re m b e d d e ds y s t e mi sc o m p l i c a t e dx m l r p cu s i n gi n l i m i t e dr e s o u r c ed e v i c e s i ti sal a t e s tt e c h n o l o g ya n dn o tp e r f e c ta tt h i st i m e a n d a n o t h e rb r a n d n e wi d e at od e v e l o px m l r p co ne m b e d d e dd e v i c e s w h i c hi sw o r t h y o ff a r t h e rs t u d y i n ga n dr e s e a r c h i n g a tt h ee n d s h o wt h ep r o b l e m ss h o u l db e c o n s i d e r e di nt h ef u t u r e k e y w o r d e m b e d d e ds y s t e m x m l r p ca p p l i c a t i o np r o g r a m m i n ga r c h i t e c t u r e e m b e d d e di n t e r n e t m e m o r ym a n a g e m e n t i i i 柚嵌入式系統(tǒng)x m l r p c 的分析與實現(xiàn) 1 1 嵌入式系統(tǒng)概論 第一章緒論 隨著數(shù)字信息技術(shù)的發(fā)展 計算機不再局限于以前p c 機 而是包括形態(tài)各 異 性能干差萬別的各類嵌入式系統(tǒng) 從基于群集的超級計算機到嵌入于冰箱 中的微控制器 嵌入式計算機是以嵌入式系統(tǒng)的形式隱藏在各種裝置 產(chǎn)品和系 統(tǒng)中 用戶一般覺察不到其存在 什么是嵌入式系統(tǒng)呢 嵌入式系統(tǒng)是為滿足某種特殊功能的電腦軟件和硬 件的綜合體 也可以涵蓋機械或其它附屬裝置 可以認(rèn)為凡是帶有微處理器的專 用軟硬件系統(tǒng)都可以稱為嵌入式系統(tǒng) 典型的定義是 以應(yīng)用為中心 以計算機 技術(shù)為基礎(chǔ) 軟硬件可裁剪 適合應(yīng)用系統(tǒng)對功能 可靠性 成本 體積和功耗 要求的專用計算機系統(tǒng)l 嵌入式計算機相對于普通計算機系統(tǒng)有如下特征 硬件特性方面 很強的專用性 嵌入式系統(tǒng)的個性很強 不同的應(yīng)用對嵌入 式系統(tǒng)的具體要求截然不同 通常都面向用戶的產(chǎn)品特定開發(fā) 系統(tǒng)中的c p u 大多工作在為特定用戶群定制的環(huán)境中 低功耗 體積小 集成效率高 系統(tǒng) 配置突出效率 去除冗余 力爭用最小的系統(tǒng)完成目標(biāo)功能 特別在一些手持設(shè) 備中更是這樣 軟件特性方面 嵌入式軟件的研發(fā)與硬件緊密相關(guān) 針對具體硬件平臺進(jìn)行的 嵌入式操作系統(tǒng)內(nèi)核較傳統(tǒng)的操作系統(tǒng)小得多 功能實現(xiàn)相對簡單 軟件代碼 要求高效率和高可靠性 軟件運行空間有限 運行效率高 1 2 研究嵌入式系統(tǒng)遠(yuǎn)程調(diào)用的必要性 隨著嵌入式系統(tǒng)和網(wǎng)絡(luò)技術(shù)的迅猛發(fā)展 信息共享的程度日益提高 嵌入式 系統(tǒng)接入i n t e r n e t 已成為必然 目前嵌入式系統(tǒng)接入i n t e r n e t 的基本技術(shù)已經(jīng) 山向嗽入式系統(tǒng)x m l r p c 的分析與實現(xiàn) 成熟 可利用現(xiàn)有的網(wǎng)絡(luò)進(jìn)行全球范圍的通信 不需要另外構(gòu)造專用的通信線路 可利用現(xiàn)有的公開協(xié)議 傳輸速度 傳輸質(zhì)量都有 定的保證 但是接入只是手 段而不是最終目的 嵌入式?jīng)]備接入i n t e r n e t 的目標(biāo)應(yīng)該是服務(wù) 將w e b s e r v i c e 延伸到嵌入式系統(tǒng)中 解決松散網(wǎng)絡(luò)中跨平臺嵌入式系統(tǒng)的 程序調(diào)用 r p c 遠(yuǎn)程過程調(diào)用 并不是新概念 作為一個客戶端 服務(wù)器系統(tǒng) 在一臺機器上訓(xùn)用一個過程 這個過程并不在本機上執(zhí)行 而是通過網(wǎng)絡(luò) 在 r p c 服務(wù)器上真i f 地執(zhí)行被調(diào)用的過程 r p c 服務(wù)器把處理結(jié)果達(dá)成包發(fā)送回來 給調(diào)用者 調(diào)用的程序e j 接著執(zhí)行下去 雖然這樣的系統(tǒng)增加了一些負(fù)載和延遲 它 乜能允許低處理能力的機器防問 高處理能力的資源 它也允許應(yīng)用程序通過網(wǎng)絡(luò)上機器來增強自己的處理能力 可能出現(xiàn)的應(yīng)用有 專家遠(yuǎn)程治療 將反映人體感覺的數(shù)據(jù)作為載體傳輸?shù)?專家計算機 再將結(jié)果返回用戶 用于家庭網(wǎng)絡(luò)如沈碗機 機頂盒 自動調(diào)溫器 等 今后的嵌入設(shè)備 呵以在原有硬件不變的情況下 通過網(wǎng)絡(luò)升級軟件而提供 更好的服務(wù) 有利于設(shè)備維護(hù)和延長產(chǎn)品生命周期 1 3 現(xiàn)有的遠(yuǎn)程調(diào)用技術(shù) 過去已有這種實現(xiàn)遠(yuǎn)程過程調(diào)用協(xié)議 如c o r b a c o m m o no b j e c tr e q u e s t b r o k e ra r c h i t e c t u r e 公共對象請求代理程序體系結(jié)構(gòu) d c o m d i s i r i b u t e d c o m p o n e n to b j e c tm o d e l 分粕式組件對象模型 r m i j a v ar e m o t em e t h o d i n v o c a t ej a v a 遠(yuǎn)程方法調(diào)用 等 這些都屬于分布式對象系統(tǒng) 客戶端和服務(wù)端 是緊耦合的關(guān)系 發(fā)送方需要對接收方的情況相當(dāng)了解 發(fā)送方既需要考慮接受 方對消息的解釋應(yīng)用等 也需要了解接發(fā)雙方之間的通信情況 相互關(guān)聯(lián)性強 3 1 緊耦合系統(tǒng)經(jīng)常需要握手 并且如果服務(wù)器升級為另一個新的格式 將很容易導(dǎo) 致這種握手失敗 c o r b a 和d c o m 的復(fù)雜在于協(xié)議的定義 開發(fā)和部署的基礎(chǔ)構(gòu) 造 組件對象模型較復(fù)雜 且在客戶端和服務(wù)器兩端采用的都是動態(tài)分配端口 r m i 則影響范圍局限在啦個程序語言上 3 對許多嵌入式系統(tǒng)計算平臺來說 在 低內(nèi)存容量6 4 k b 或更少的環(huán)境內(nèi)是沒有足夠的功能來處理一個完整的d c o m 或 c o r b a 方案 目前實現(xiàn)r p c 的兩種主要方法x m l r p c 和s o a p s i m p l eo b j e c ta c c e s s p r o t o c o l 簡單對象存取協(xié)議 都是屬于消息傳遞系統(tǒng) 客戶端和服務(wù)端是松耦合 的關(guān)系 是在傳輸級上創(chuàng)建通信 唯一需要考慮的是接受方能否辨識發(fā)送的消息 內(nèi)容 它們不要求系統(tǒng)間如此嚴(yán)格的理解 x m l 僅是在其問傳遞的簡單文本 基于 x m l 的組件框架是能夠被升級的 多個方法的調(diào)用能夠被打包在請求里 x m l r p c 面向嵌入式系統(tǒng)x m l r p c 的分析與宴現(xiàn) 和s o a p 都需要消息開銷 都需要x m l 解析器使之有效 傳遞速度則比c o r b a 要慢 下圖為緊耦合與松耦合兩種的遠(yuǎn)程方法調(diào)用的x m l 過程比較 2 晴習(xí) g e t n a m e0 服 請求 服 務(wù) 務(wù) g e t i d 0 器 器 請求 1 2 s u b m i t 回復(fù) 請水 m e t h o d s 服 g e t n a m e0 服 務(wù) g e t i d 0 務(wù) 器器 s u b m i t 1 2 回復(fù) 圖卜3 1 緊耦合與松耦合遠(yuǎn)程方法調(diào)用比較 i 4 存在的問題 1 嵌入式系統(tǒng)平臺差異性問題 嵌入式系統(tǒng)如何以統(tǒng)一的方式發(fā)布自身的請求服務(wù) 如何與客戶端進(jìn)行通 信 應(yīng)該提供怎樣的數(shù)據(jù)格式來組織傳輸數(shù)據(jù) 如何保證這些數(shù)據(jù)能夠使用統(tǒng)一 的標(biāo)準(zhǔn)和規(guī)范 應(yīng)該使用怎樣過程調(diào)用接口才能使程序看到對同一數(shù)據(jù)的表 示 通過網(wǎng)絡(luò)傳輸數(shù)據(jù)的安全性機制如何解決 4 2 資源有限性 嵌入式系統(tǒng)的資源限制是嵌入式系統(tǒng)中長期存在的問題 資源限制造成的其 功能完整性的限制 對c 語言的嵌入式開發(fā)人員來說需要考慮內(nèi)存管理以及從體 系結(jié)構(gòu) 程序效率上來增強設(shè)計的高效性等方面的問題 通用計算機上的應(yīng)用模式不能完全適用嵌入式系統(tǒng) 傳統(tǒng)嵌入式系統(tǒng)中沒有 現(xiàn)成答案 面向嵌入式系統(tǒng)x m i r p c 的分析與實現(xiàn) 1 5 本文的工作 目前在嵌入式系統(tǒng)應(yīng)用軟件中 由于c 語言可移植性強 代碼可以優(yōu)化 并 能直接利用c p u 的硬件特性進(jìn)行程序設(shè)計 直接操作微控制器的特點 使得嵌入 式系統(tǒng)c 應(yīng)用程序還比較普遍 因此本文研究的是基于x m l r p c 規(guī)范 使用c 語言建立和實現(xiàn)的嵌入式系統(tǒng)的遠(yuǎn)程過程調(diào)用的體系框架 使一些嵌入式系統(tǒng)實 現(xiàn)簡單的w e b s e r v i c e 本論文的研究內(nèi)容 1 本淪文前面分析嵌入式系統(tǒng)連入i n t e r n e t 應(yīng)用有廣闊前景 在接入技 術(shù)已經(jīng)成熟基礎(chǔ)上 提出研究實現(xiàn)遠(yuǎn)程調(diào)用的必要性 介紹幾種遠(yuǎn)程調(diào)用技術(shù)的 模型 嵌入式系統(tǒng)遠(yuǎn)程調(diào)用存在的問題 并提出本文的工作 2 詳細(xì)分析x m l r p c 的規(guī)范 計算方式以及與s o a p 的比較 3 深入分析x m l r p c 的j a v a 實現(xiàn)的體系結(jié)構(gòu) 4 結(jié)合嵌入式系統(tǒng)的特點 基于j a v a 實現(xiàn)的體系結(jié)構(gòu)提出適用于c 語言嵌 入式系統(tǒng)x m l r p c 實現(xiàn)的體系框架 并設(shè)計了相應(yīng)的簡單的動態(tài)內(nèi)存管理算法 實現(xiàn)在嵌入式系統(tǒng)平臺互異 內(nèi)存有限的情況下實現(xiàn)基于x m l 消息傳遞的遠(yuǎn)程 過程調(diào)用的應(yīng)用程序框架 通過實驗測試表明 實現(xiàn)的應(yīng)用程序框架簡單有效 易于嵌入式系統(tǒng)的分布式編程 5 論文結(jié)尾部分對設(shè)訓(xùn)和應(yīng)用嵌入式系統(tǒng)的遠(yuǎn)程過程調(diào)用進(jìn)行總結(jié)和展望 f i 向嵌入式系統(tǒng)x m l r p c 的分析與實現(xiàn) 第二章x m l r p c 概述 2 1x m l r p c 的概述 x m l r p c 是一種規(guī)范和一組實現(xiàn)方案 x m l r p c 是在r p c 的基礎(chǔ)上發(fā)展的 x m l r p c 采用h t t p 為底層通訊協(xié)議 x 禮為數(shù)據(jù)編碼的格式 用h t t pp o s t 向 w e b 服務(wù)器發(fā)送一個包含方法名和變元表的x m l 文檔 服務(wù)器用指定的變元調(diào)用 方法 然后將方法返回值包裝在另一個x m l 文檔中 將其發(fā)送回客戶機 x m l r p c 的幾個重要特點 7 j 1 幾乎與平臺無關(guān) 用x m l r p c 進(jìn)行分布式計算時 無需關(guān)心具體的網(wǎng)絡(luò) 平臺和操作系統(tǒng) 進(jìn)行x m l r p c 調(diào)用時 發(fā)出請求報文及響應(yīng)報文者可以用統(tǒng)一 的h t t p 報文格式 x m l r p c 對底層的網(wǎng)絡(luò)協(xié)議沒有特別的要求 網(wǎng)絡(luò)有很強的 適應(yīng)性 2 客戶端和服務(wù)端可以完全分離 客戶端和服務(wù)器端可以使用完全不同的語 言 x m l 可以解決語言所產(chǎn)生的數(shù)據(jù)結(jié)構(gòu)的不同 另外 客戶端和服務(wù)器端的結(jié) 構(gòu)相互獨立 只要方法名字不變 服務(wù)器端的任何變化都不會影響到客戶端 這 樣就可以隨便增加服務(wù) 或者改變服務(wù)端的實現(xiàn)方法 2 2x 肌 r p c 規(guī)范 2 2 1x m l r p c 的核心構(gòu)件 x m l r p c 的核心構(gòu)件基本上只有幾個元素和一些數(shù)據(jù)類型元素組成f 7 一 1 x m l r p c 的元素 m e t h o d c a l l 這是任何x m l r p c 文檔的根元素 它包含m e t h o d n a m e m e t h o d n a m e 該元素包含被調(diào)用方法名 被調(diào)用方法可以是執(zhí)行進(jìn)入請求 叫向嗽入式系統(tǒng)x m i r p c 的分 j i 與實脫 的腳本 數(shù)據(jù)庫表中單元的名或文件的路徑 x m l r p c 請求中提供被調(diào)用方法的參數(shù) 該元素可能有任意多 個p a r a m 元素作為子元素 每個p a f a m 元素又有v a l u e 元素作 為子元素 該元素包含一個標(biāo)量值 由元素名指出的類型 此元素也可 能是d a t a 元素的子元素 它包含的子數(shù)據(jù)類型元素有 i 4 i n t b o o e a n s t r i n g d o u b l e d a t e t i m e i s 0 8 6 0 1 和b a s e 6 4 該元素可包含一個子元素 m e m b e r m e m b e r 包含兩個子元素 n a m e 和v a u e 該元素表示s t r u c t 數(shù)據(jù)類型的一個成員 該元素為s t r u c t 元素的成員元素提供一個名字 與s t r u c t 元素不同 該數(shù)據(jù)類型元素沒有子元素n a m e 內(nèi)容 由d a t a 和v a l u e 元素定義的一維對象集合組成 2 數(shù)據(jù)類型 i n t 帶符號的3 2 位整數(shù) 由i 4 和i n t 元素表示 s t r i n g a s c i t 串 b o o l e a n 由b o o le a n 元素表示真或假 d o u b l e 由d o u b l e 元素表示的雙精度浮點數(shù) d a t e t i m e i s 0 8 6 0 1 日期和時i n x m i r p c 不支持時區(qū) b a s e 6 4 任意長度的原始二進(jìn)制數(shù)據(jù) 使用b a s e 6 4 編碼 b a s e6 4 元素表示 a r r a y相同數(shù)據(jù)類型的序列 由a r r a y 元素表示一維數(shù)組 s t r u c t 由s t r u c t 元素表示的關(guān)鍵字一值對集合 其中關(guān)鍵字是字符串 值 為任何類型 2 2 2 x m l r p c 標(biāo)準(zhǔn) 1 h t t p 報頭要求 x m l r p c 請求必須是通過h t t p 標(biāo)準(zhǔn)的p o s t 方法 一個用戶代理 u s e r a g e n t 和主機 h o s t 必須被指定 內(nèi)容形式 c o n t e n t t y p e 是t e x t x m l 最后正確的 內(nèi)容長度 c o n t e n t l e n g t h 應(yīng)被給出而且必須正確 2 x m l r p c 請求報頭 盯 y 曲 嘴 m 船 血向瞄入式系統(tǒng)x m l r p c 的分析與實現(xiàn) 負(fù)載傳遞使用x m l 只有一個 結(jié)構(gòu)體 其中必須包含一個 子元素 該子元素包含一個字符串 它描述了一個將被激活的遠(yuǎn)程 方法的名字 對服務(wù)器來說 它 f 確標(biāo)明了一個方法的名字 如果這個方法含有參數(shù) 元素必須包含一個 元素 也 可包含多個 每一個均有一個 主題 它們的順序被浚方法接口 所定義 3 參數(shù)指定 被指定作為參數(shù)的值被分為標(biāo)量形式 數(shù)組和結(jié)構(gòu) 標(biāo)量形式有 整形 邏輯型 字符串型 雙精度型 日期型 數(shù)組 由a r r a y 元素表示 一個 包含唯一的 元素 其中又包含 一些內(nèi)容參數(shù)的v a l u e 元素 a r r a y 元素可包含數(shù)組和結(jié)構(gòu) 可被遞歸 適用于 兩種情況 將傳送的數(shù)組由一系列的參數(shù)所組成 參數(shù)很多并且希望以數(shù)組 形式傳送而不是采取分散的個體形式g s 結(jié)構(gòu) 結(jié)構(gòu)在 元素中指定 允許對值的順序采取一些智能的辦法 它不像數(shù)組由一個簡單的順序 它包含一個或幾個 元素 依次有 和 元素保存數(shù)據(jù) 結(jié)構(gòu)也可遞歸 4 響應(yīng)報頭 響應(yīng)的第一行將返回2 0 0o k 的h t t p 報頭 除非服務(wù)器有低級錯誤 c o n t e n t t y p e 內(nèi)容形式 t e x t x m l c o n t e n t l e n g t h 正確的內(nèi)容長度 5 響應(yīng)報文 響應(yīng)的有效負(fù)載必須有一個結(jié)構(gòu) 元素包含一個唯一的 元素 該元素封裝了一個唯一的 該 元素又包含唯一的 元素 6 出錯響應(yīng) 在 元素里包含一個 元素 該元素又包含一個 元素 元素包含有兩個數(shù)據(jù)的 元素 一個用 值調(diào) 用錯誤代碼 另一個是 來指明出錯原因 叫 h j f 挺入式系統(tǒng)x m i r p c 的分析與實脫 2 2 3 x m l r p c 計算模式 x m l r p c 用h t t p 傳輸x m l 文檔 執(zhí)行遠(yuǎn)程機器上的代碼 不設(shè)計自己的網(wǎng)絡(luò) m 議 不需要把信息包裝成c g i 請求和h t m l 格式從服務(wù)器中取回 其工作原理 把r p c 請求編碼成x m l 后 通過標(biāo)準(zhǔn)h t t p 連接發(fā)送到服務(wù)器或者監(jiān)聽程序 監(jiān) 聽程序解碼x m l 執(zhí)行被請求的過程 然后把結(jié)果打包成x m l 發(fā)送回客戶端 客 戶端對x m l 解碼 把結(jié)果轉(zhuǎn)換成相應(yīng)語言的標(biāo)準(zhǔn)數(shù)據(jù)類型 繼續(xù)執(zhí)行口 x m l r p c 的實現(xiàn)是基于h t t pp o s t 的方法 所有的通信都是在h t t p 上工作的 消息體使用x m l 標(biāo)記 其包含著遠(yuǎn)程服務(wù)器上執(zhí)行的方法和這些方法所使用的全 部參數(shù) 返回的響應(yīng)也是基于x m l 的 一個過程調(diào)用的參數(shù)和返回值可以是簡單的數(shù)據(jù)形式 也可以是較復(fù)雜的 數(shù)據(jù)結(jié)構(gòu) 過程調(diào)用必須有一個返回值 它可以是帶有許多值的結(jié)構(gòu)組成 如通過 數(shù)組和結(jié)構(gòu)實現(xiàn)的復(fù)雜的記錄和列表結(jié)構(gòu)或返回一個圖像 例如 需要兩個整數(shù)相加的功能 把a d d i n t i n t 方法注冊到服務(wù)器功能接 口上 客戶機只需向r p c 服務(wù)器調(diào)用功能 要求參數(shù)的類型 個數(shù) 順序符合規(guī) 定的接口要求 r p c 服務(wù)器將選擇一個真正的遠(yuǎn)程過程方法進(jìn)行調(diào)用 并把結(jié)果 返回客戶機 7j 如圖 x m l r p c 服務(wù)器 1 驗證報文的 合法性 2 搜索注冊服 務(wù)器 3 找到相慮的 a d d i n t i n t 方 法 4 改變接收到 的報文頭部和 過程名 發(fā)到 一 揪慌柵 遠(yuǎn)程機器上 5 把返回結(jié)果 返回給客戶機 圖2 2 1x i v l l r p c 計算模式 r 曲向嵌入式系統(tǒng)x m l r p c 的分析與實現(xiàn) 2 3x m l r p c 與s o a p 的比較 x m l r p c 和s o a p 兩者都是目前基于x m l 實現(xiàn)消息傳遞的兩種主要方法 x m l r p c 設(shè)計的目標(biāo)是尋找一個簡單和有效 同時容易實現(xiàn)的請求和接受信 息的方法 以便快速運行在不同操作系統(tǒng)不同環(huán)境下的軟件通過i n t e r n e t 進(jìn)行 遠(yuǎn)程過程調(diào)用 s o a p 具有基本的x m l r p c 特性 彌補了x m l r p c 的不足 它為傳輸更復(fù)雜的 信息而設(shè)計 有重要的安全機制和魯棒的對象模型 但相對而言復(fù)雜 s o a p 包含有三個部分 信封頭 定義描述信息的框架 編碼規(guī)則 用來表示應(yīng)用程序 的特定數(shù)據(jù)類型的機制 r p c 表示 表示遠(yuǎn)程過程調(diào)用和應(yīng)答的協(xié)議 s o a p 與x m l r p c 的不同主要有 3 1 0 l 用戶可定義數(shù)據(jù)類型 指定接收者的能力 消息指定處理控制 具體比較如下表 比較 x m l r p cs o a p 命名結(jié)構(gòu)體和數(shù)組不可以可以 指定專r j 的字符集不可以可以 指定數(shù)據(jù)類型不可以可以 指定接收者不可以可以 需要輯戶端理解不需要 可以 消息指定處理指令不可以 可以 面向特點 過程 對象 狀態(tài)無狀態(tài)有狀態(tài) 遞送機制僅h 丁 p 的p o s th r r p s m t p p o p 3 等協(xié)議 總之 x m l r p c 具有穩(wěn)定的代碼 更簡單的接口 更少的開銷 占用更少的 帶寬 可以使用更少處理資源來做同樣的工作 是一個輕量型的協(xié)議 實現(xiàn)更為 容易 x m l r p c 的簡單性對于實現(xiàn)遠(yuǎn)程控制是足夠的 實現(xiàn)上也容易和方便 而 s o a p 支持的數(shù)據(jù)類型的特性在嵌入式系統(tǒng)中可以避免 叫向嵌入式系統(tǒng)x m i r p c 的分析與實現(xiàn) 第三章x m l r p c 的j a v a 實現(xiàn)分析 3 1x m l r p c 的j a v a 實現(xiàn)體系結(jié)構(gòu) 1 9 9 8 年 u s e r l a n d 公司的執(zhí)行總裁d a v ew i n e r 首先在公司網(wǎng)站上發(fā)表了 通過x m l 在i i t m l 上實現(xiàn)r p c 的想法 并且d a v e w in e r 與c 0 m 小組采用了x m l 為請求和應(yīng)答進(jìn)行編碼 編寫了最初的規(guī)范 發(fā)布了一種集成的互聯(lián)網(wǎng)內(nèi)容系統(tǒng) f r o n t i e r 5 1 它使用x m l r p c 向數(shù)據(jù)庫中對象發(fā)布請求 f r o n i t e r 使用j a v a 實現(xiàn)x m l r p c 其實現(xiàn)的x m lr p c 的主要體系結(jié)構(gòu)包括 以下幾個類庫t 1 3 1 4 15 1 進(jìn)行編解碼工作的解析器類 提供基本功能的核心類x m l r p c 用于連接到x m l r p c 服務(wù)器的x m l r p c c i i e n t 類 用于監(jiān)聽 接受r p c 請求的服務(wù)器端x m l r p c s e r v e r 類 允許通過x m l 編碼處理來進(jìn)行控制x m l r p c 交互基本連接的x m i r p c h j f i d l e r 及幫助支持類 產(chǎn)生的異常x m l r p c e x c e p t i o n 類 為處理x m l r p c 請求而定制簡單h t t p 服務(wù)器w e b s e r v e r 類 總運行過程框圖如下 圖3 1 1 模塊總運行過程框圖 r 曲向嵌入式系統(tǒng)x m l r p c 的分析與實現(xiàn) w e b s e r v e r 中封裝請求模塊及s o c k e t 通信等模塊在s o c k e t 通信之前通 過封裝請求模塊 把請求封裝成一定格式的標(biāo)準(zhǔn)請求 發(fā)往后端封裝請求又能 夠?qū)Ψ祷財?shù)據(jù)做一些格式處理 使之生成標(biāo)準(zhǔn)的格式發(fā)往前端 3 2 主要類庫的處理 3 2 1 解析器 1 解析器概述 解析器是一個最基本也是最重要的工具 每個x m l 應(yīng)用程序都包含解析器 解析器是處于應(yīng)用程序和x m l 文件之間的軟件組件 它是一個很底層的庫 它的 功能有三個方面 首先 它讀入一個x m l 文檔 其次 它按照語法檢查該文檔 然后它構(gòu)建一個應(yīng)用程序能使用的數(shù)據(jù)結(jié)構(gòu) 解析器的目標(biāo)是把錯綜復(fù)雜的語法 對 丌發(fā)人員屏蔽起來 1 x m l 解析器有兩種類型 非驗證的和驗證的 它與應(yīng)用程序的接口有兩種 利用基于對象的a p i 文檔對象模型d o m 和利用基于事件的a p i s a x i l d o m 是通過在內(nèi)存中明確地建立一個對象樹和應(yīng)用程序進(jìn)行交互 占用內(nèi) 存相當(dāng)大 工件效率低下會造成服務(wù)器崩潰 s a x 不在內(nèi)存中明確地創(chuàng)建文檔樹 它使應(yīng)用程序能夠使用最有效的方法來 存儲數(shù)據(jù) 消耗更少的資源 給開發(fā)人員更多的控制權(quán) 效率更高 2 s a x 的結(jié)構(gòu) s a x 本質(zhì)上是由許多j a v a 接口構(gòu)建而成 s a x l 0 的幾個主要接1 3 a t t r i b u t e l i s t 接口 該接口是出現(xiàn)在特定起始標(biāo)記中的一組屬性 s a x 解析器實現(xiàn)這個接口 d o c u m e n t h a n d l e r 接口 s a x 中最常用的接口 是x m l 文檔事件的通知 是大部分s a x 應(yīng)用程序所 實現(xiàn)的主要接口 該接口主要方法 s t a r t d o c u m e n t0 e n d d o c u m e n t0 向應(yīng)用程序通知文檔的開始或結(jié)束 s t a r t e e m e n t0 e n d e l e m e n t0 向應(yīng)用程序通知開始或結(jié)束標(biāo)記 c h a r a c t e r s0接收字符數(shù)據(jù)向應(yīng)用程序發(fā)出通知 e n t i t y r e s 0 1 v e r 接口 山 嵌入式系統(tǒng)x m l r p c 的分析與實璣 該接口用來識別實體 當(dāng)x m l 文檔包含外部實體引用時 解析器通常會自 動分析u r l 定位并解析相關(guān)的文件 返回的是一個i n p u t s o u r c e 對象 e r r o r h a n d l e r 接口 該接口定義錯誤事件 分別對就錯誤的三個級別 警告通知 可恢復(fù)的錯 誤 致命的錯誤 l o c a t o r 接口 該接口用來確定源x m l 文檔的當(dāng)前位置 以便將s a x 事件和文檔位置關(guān)聯(lián) 起來 p a r s e r 接口 該接口是所有s i x 解析器必須實現(xiàn)的基本接e 1 它允許應(yīng)用程序為不同類 型的事件注冊處理器 并從u r i 或者字符流初始化一 次解析 該接口所定義的主要方法 p a r s e 0解析x m l 文檔 s e t d o c u m e n t h a n d l e r0 允許應(yīng)用程序注冊文檔事件處理器 s e t e n t i t y r e s 0 1 v c r0允許應(yīng)用程序注冊定制的實體分析器 s e t e r r o r h a n d l e r0 允許應(yīng)用程序注冊錯誤事件處理器 s a x1 0 的幾個主要的類 h a n d l e r b a s e 類 這是由s a x 本身提供的默認(rèn)基類 這個類實現(xiàn)了d o c u m e n t h a n d l e r d t d h a n d l e r e n t i t y r e s o l v e r e r r o r h a n d l e r 4 個接口的默認(rèn)行為 i n p u t s o u r c e 類 利用此類 s a x 應(yīng)用程序可以將有關(guān)的輸入源的信息封裝在一個對象之 中 i n p u t s o u r c e 對象通過如下3 種方式為解析器提供輸入 u r i 系統(tǒng)標(biāo)志符 r e a d e r 傳遞統(tǒng)一碼字符流 以及i n p u t s o u r c e 傳遞未解析的字節(jié)流 應(yīng)用程序可通過兩種方式將輸入源傳遞解析器 作為p a r s e r p a r s e r0 方 法的參數(shù)或者e n t i t y r e s 0 1 v e r r e s o l v e r e n t i t y 方法的返回值 s a x e x c e p t i o n 類 該類用于表示解析器或者應(yīng)用程序在處理過程中檢測到的錯瀑 可以封裝 普通的s a x 錯誤或者警告 x m l 解析器為每類x m l 數(shù)據(jù)執(zhí)行到應(yīng)用程序的回調(diào) 元素 及其屬性 字符數(shù)據(jù) 處理指令 符號或注釋 即應(yīng)用程序通過回調(diào)來處理x m l 數(shù)據(jù) 叫向嵌入式系統(tǒng)x m l r p c 的分析與實現(xiàn) 3 2 2 核心類x m l r p c 抽象類x m r p c 繼承父類h a n d e r b a s e 為x m l r p c 提供基本的功能 比如解 析參數(shù)或把7 a v a 對象編碼成x m l r p c 格式 x m l r p c 類主要包括的方法有 1 定義x m l r p c0 構(gòu)造方法 用于允許服務(wù)器端開發(fā)人員定制和x m i 一r p c 類 型相應(yīng)的j a v a 對象類型 2 設(shè)置可獲取所提供的s a x 解析器 定義并加載解析器名方法 s e t d r i v e r0 3 解析輸入流的同步方法p a r s e i n p u t s t r e a m 創(chuàng)建1 2 8 個字符緩沖區(qū) 對象 對解析器類實例化 注冊文檔事件處理器 錯誤事件處理器 對輸入的流 進(jìn)行解析操作 s a x 解析器調(diào)用的事件處理方法有 文檔丌始事件處理方法s t a r t e l e m e n t s t r i n g a t t r i b u t e 文檔結(jié)束事件處理方法e n d e l e m e n t s t r i n g 文檔內(nèi)容處理方法c h a r a c t e r c h i n t i n t 在解析處理過程中 使用堆棧為s a x 應(yīng)用程序保持上下文信息 在出現(xiàn) s t a r t e l e m e n t 0 事件時使元素名稱 或其他標(biāo)識符 入棧 將其數(shù)值為字符則將 字符串加入緩沖區(qū) 對于數(shù)值類型 需要轉(zhuǎn)換成相應(yīng)的類型 對于出現(xiàn) e n d e l e m e n t 事件時再將元素出棧 使用堆棧存儲元素e e 用整個文檔需要少得多 的內(nèi)存 4 定義錯誤處理方法 e r r o r0 可恢復(fù)錯誤處理方法 f a t a l e r r o r 致命錯誤處理方法 5 定義了 個v a l u e 類 用于指示從r e q u e s t 請求中解析的值 該類包含以下方法 設(shè)置v a l u e 類型為字符類型的構(gòu)造方法v a l u e0 通知新元素已被解析方法e n d e l e m e n t0 設(shè)置對象為相應(yīng)的j a v a 數(shù)值的類型數(shù)據(jù)類型s e t t y p e0 為元素設(shè)置字符數(shù)據(jù)并解釋成相應(yīng)的元素類型c h a r a c t e r d a t a 叫向嵌入式系統(tǒng)x m ir p c 的分析與實現(xiàn) 3 2 3 核心類x m l r p c c li e n t x m l r p c c i i e n t 類實現(xiàn)x m l r p c i l a n d l er 接口 該類主要包含的方法 1 客戶端構(gòu)造函數(shù)x m r p c c l i e n t0 根據(jù)參數(shù)構(gòu)建客戶端 若有異??蓲?出異常處理 2 根據(jù)用戶名和密碼 發(fā)置基本的認(rèn)證 s e t b a sic a u t h e n tic a t i o n s t r i n gu s e r s t r i n gp a s s w o r d 3 定義重要的類 w o r k e r 該類包含 異步線程的肩動方法 s t a r t 0 r u n 0 異步線程的運行方法 e x e c u t e a s y n c0 執(zhí)行調(diào)用方法 e x e c u t e s t r i n gm e t h o d v e c t o rp a r a m s 執(zhí)行步驟 首先設(shè)置并清空緩沖區(qū) 創(chuàng)建x m l w r i t e r 類的對象w r i t e r 用于輸出序列 化x m l 文檔 根據(jù)方法名和參數(shù)向量調(diào)用w r ir e q u e s t w r i t e r m e t h o d p a r a m s 生 成一個x m lr p c 請求報文格式 再將該報文到緩沖區(qū) 由w r i t e r f l u s h 0 將緩 沖區(qū)數(shù)據(jù)寫入一個數(shù)據(jù)流 然后創(chuàng)建u r i c o n n e c t i o n 類 設(shè)置與h t t p 連接有關(guān)的選項 用給定的協(xié) 議與遠(yuǎn)程對象的實際連接 用u r l 的信息構(gòu)造一個請示獲得來自連接的響應(yīng) 關(guān) 閉連接 打丌連接 接收從服務(wù)器的響應(yīng) 并進(jìn)行解析 如響應(yīng)出錯 給與出錯 代碼及出錯信息 4 定義異步數(shù)據(jù)類c a l i d a t a 該類包含的變量有字符串成員 參數(shù)向量 回調(diào)參數(shù) 指向下一個請示調(diào)用線程 定義構(gòu)造方法c a d a t a 0 為各成員賦值 5 定義執(zhí)行x m i r p c 請求的實體e x e c u t e s t r i n gm e t h o d v e c t o rp a r a m s 定義執(zhí)行x m l r p c 請求異步執(zhí)行線程方法e x e c ut e a s y n c s t r i n gm e t h o d v e c t o rp a r a m s a s y n c c a l1 b a c kc a l b a c k 該執(zhí)行方法將獲得w o r k e r 的對象實 例 再調(diào)用w o r k e r 類的e x e c u t e 方法 對異步線程使用隊列來管理 6 定義4 個同步方法 獲得工作請求或請求線程方法 g e t w o r k e r b o o l e a na s y n 釋放工作請求的方法 r e l e a s e w o r k e r w o r k e rw b o o l e a na s y n c 異步線程對象入隊列方法 e n q u e u e s t r i n gm e t h o d v e c t o rp a r a m s a s y n c c a ll b a c kc a ll b a c k 異步線程對象出隊列方法 d e q u e u e 0 面i 柚嵌入式系統(tǒng)x m l r p c 的分析與實現(xiàn) 3 2 4 核心類x m l r p c s e r v e r 一個多線程可使用的x m l r p c 服務(wù)端對象 它不打開s e r v e rs o c k e t s 而 是通過發(fā)送一個x m l r p c 輸入流到e x e c u t e 方法來獲得 若要找開一個h t t p 偵 聽器 應(yīng)使用w e b s e r v e r 類 x m l r p c s e r v e r 類主要包含的方法 1 定義x m l r p c s e r v e r0 構(gòu)造方法 創(chuàng)建一個線程堆棧及處理器映射對象 2 增加管理器方法a d d h a n d l e r s t r i n gh a n d l e r n a m e o b j e c th a n d l e r 3 刪除管理器方法r e m o v e h a n d e r s t r i n gh a n d l e r n a m e 4 返回x m l r p c 管理器映射的方法g e t h a n d l e r m a p p i n g 5 運行方法e x e c u t e0 用于解析請求并執(zhí)行管理器方法 返回x m l 文檔格 式的結(jié)果 如需要用戶認(rèn)證 則根據(jù)用戶名和密碼去執(zhí)行認(rèn)證過程 再創(chuàng) 建x m l r p c w o r k e r 對象 并執(zhí)行x m l r p c w o r k e r 的方法 3 2 5 x m l r p c h a n d l e r 處理模塊 x m 3 r p e s e r v e r 類使用h a n d i e r 管理器接口來調(diào)用一個r p c 管理器的方法 因 此在服務(wù)器端建立管理器映射接口 獲取相應(yīng)的管理器類 主要有以下h a n d l e r 接口 1 x m l r p c h a n d l e r m a p p i n g 接口為x m l r p e s e r v e r 提供處理器映射接口 由d e f a u l t h a n d l e r m a p p i n g 類實現(xiàn) 該類通過方法名注冊一個的管理器 映射 也可以刪除 查找處理器映射 2 x m l r p c h a n d l e r 接口x m l r p c s e r v e r 使用此接口凋用一個r p c 處理器 此接口通過i n v o k e r e c h o m u l t i c a l l 類來實現(xiàn) i n v o k e r 類將調(diào)用與 x m l r p c 請求匹配的調(diào)用方法 e c h o 類用于返回參數(shù) m u l t i c a l l 用于 多線程調(diào)用 3 c o n t e x t x m l r p c h a n d l e r 接口此接口通過s y s t e m h a n d l e r 類實現(xiàn) 該 類包含調(diào)用x m l r p c 的標(biāo)準(zhǔn)系統(tǒng) 它有3 個構(gòu)造函數(shù) 以產(chǎn)生一個實例 調(diào)用不同的處理器 還可以增加或刪除處理器 其執(zhí)行方法是處理一些 實體引用 4 a u t h e n t i c a t e d x m l r p c 接口用于處理h t t p 認(rèn)證的處理器 此接口 通過a u t h d e m o 類實現(xiàn) 該類只有一個執(zhí)行方法 e x e c u t e0 用于驗證使 用者身份 如果無此用戶 返回異常信息 i f i 柚嵌入式系統(tǒng)x m i r p c 的分析與實現(xiàn) 3 2 6 x m l r p c w o r k e r 類 該類用于連接x m r p c 請求處理器x m l r e q u e s lpr o c e s s o f 和x m l r p c 響應(yīng)處 理器x l n l r e s p n s e p r o c e s s o r 以處理單線程的請求 該類主要包含 i 定義3 個主要的類變量 分別是x m l r p c 請求處理器類型 x m r p c 響應(yīng) 處理措類型 x m l r p c h a n d l e r 管理器類型 2 定義構(gòu)造方法 創(chuàng)建上述類變量對象的實例建立專門的映射 3 定義用于傳送專門的請求到h a n d l e r 處理器的方法 4 定義執(zhí)行方法e x e c u t e i n p u t s o u r c ei s x m l r p c c o n t e x tc o n t e x t i j 方法調(diào)用請求處理器類x m l r p c r e q u e s t p r o c e s s 中的處理請求方法 讀 入請求 解析輸入的流 從中獲取方法名 請求參數(shù) 獲取相應(yīng)的處理映射 再 根據(jù)處理的映射及請求信息調(diào)用管理器方法獲取響應(yīng) 建立響應(yīng)對象 調(diào)用響應(yīng) 處理類x m lr p c r e s p o n s e p r o c e s s 獲耿相應(yīng)的處理器映射 將響應(yīng)結(jié)果返回給 r e s p o n s e 對象 r e s

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論