




已閱讀5頁,還剩82頁未讀, 繼續免費閱讀
(計算機軟件與理論專業論文)基于xml的安全通信xml+engine.pdf.pdf 免費下載
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
基于x m l 的安全通信平臺一一x m l e n g i n e 摘要 學科名稱 計算機軟件與理論 論文名稱 基于x l d l 的安全通信一me n g i n e 碩士研究生 鄧彥杰 導師 周明天 隨著w e bs e r v i c e 技術的流行 作為w e bs e r v i c e 基礎協議的x m l 變得越來 越重要 同時 x m l 作為一種事實上的數據表示標準 越來越多的公司在通過 網絡傳輸結構化數據時采用x m l x m l 文檔的安全性變得愈加重要 x m l e n g i n e 基于x m l 的安全通信平臺 是出于對x m l 消息安全功能的 設計考慮 為將來網絡中基于x m l 信息的w e b 服務提供了安全而有效的信息保 障 本課題設計并實現了基于x m l 的信息安全通信平臺 首先我們提出了 x m l e n g i n e 中文名稱x m l 引擎 這個基本概念 介紹了研發的技術背景 在 x m l l 0 規范和s o a p 規范1 0 2 版本的基礎上 總體描述了在開發過程中所涉 及到的x m l s o a p w e bs e r v i c e 應用密碼學及x m l 安全的基本知識 從而 給出了x m l e n g i n e 體系結構的模型 并在l i n u x 平臺下詳細闡述了實現 x m l e n g i n e 的方法和步驟 在本項目中 本人承擔了構建w e bs e r v i c e 典型應用的任務 該應用是基于 j 2 e e 設計和實現的 應用完成后經過測試完全達到了設計要求 本文詳細給出 了該應用的設計和實現過程 關鍵詞x m l 安全x m l 引擎加密 解密簽名 驗證w e bs e r v i c e 應用 基于x m l 的安全通信平臺一一x m l e n g i n e a b s t r a c t w i t ht h ep o p u l a r i z a t i o no fw e b s e r v i c e s x m l w h i c hi st h eb a s i cp r o t o c o lo f w e bs e r v i c e s b e c o m e sm o r ea n dm o r e i m p o r t a n t a tt h es a m et i m e x m l a sad e f a c t os t a n d a r do fd a t ap r e s e n t a t i o n m o r ea n dm o r ec o m p a n ya d o p t sx m lw h e n t r a n s m i t t i n g s t r u c t u r ed a t a t b r o u l g hn e t w o r k s o t h e s e c u r i t y o fx m ld o c u m e n t b e c o m e sm o r e i m p o r t a n tt h a ne v e r b e f o r e x m l e n g i n e x m l b a s e di n f o r m a t i o ns e c u r i t yp l a t f o r m i sd e s i g n e dt op r o v i d e t h es e c u r ea n de f f e c t i v eg u a r a n t e et ot h ew e bs e r v i c e sb a s e do nx m l i nt h ei n t e r n e t t h er e s e a r c hs u b j e c ta c c o m p l i s h e dt h ed e s i g na n di m p l e m e n to ft h ei n f o m l a t i o n s e c u r i t y c o m m u n i c a t i o n p l a t f o r m b a s e do nx m lt h eb a s i c c o n c e p t i o n o f x m l e n g i n e a n dt h et e c h n i c a lb a c k g r o u n do ft h es u b j e c ta r ep r e s e n t e df i r s t l y t h e n t h eb a s i cp r i n c i p l eo f x m l s o a p w e b s e r v i c e s a p p l i e dc r y p t o g r a p h ya n dx m l s e c u r i t yi n v o l v e di nt h es u b j e c ta r ed e s c r i b e d i na d d i t i o n t h et h e s i si n t r o d u c e st h e x m l e n g i n e a r c h i t e c t u r ea n d e x p l a i n e s t h e i m p l e m e n t m e t h o da n d s t e p o f x m l e n g i n e u n d e rl i n u x p l a t f o r m i nt h e p r o j e c t ia l t lr e s p o n s i b l ef o rt h ed e v e l o p m e n t o fw e bs e r v i c e sa p p l i c a t i o n w h i c ha d o p t sj 2 e ea r c h i t e c t u r e n o w t h ea p p l i c a t i o na c h i e v e st h er e q u i r e m e n to f d e s i g n a n dt h et h e s i si l l u s t r a t e st h e p r o c e s s o ft h e a p p l i c a t i o nd e s i g n a n d i m p l e m e n t a t i o n i nd e t a i l k e y w o r d s x m l s e c u r i t yx m l e n g i n ee n c r y p t d e c r y p ts i g n a t u r e v e r i f yw e b s e r v i c e 獨創性聲明 本人聲明所呈交的學位論文是本人在導師指導下進行的研究工 作及取得的研究成果 據我所知 除了文中特別加以標注和致謝的地 方外 論文中不包含其他人已經發表或撰寫過的研究成果 也不包含 為獲得電子科技大學或其它教育機構的學位或證書而使用過的材料 與我一同工作的同志對本研究所做的任何貢獻均已在論文中作了明 確的說明并表示謝意 簽名 望壘囊 玉 日期 眸 三月 日 關于論文使用授權的說明 本學位論文作者完全了解電子科技大學有關保留 使用學位論文 的規定 有權保留并向國家有關部門或機構送交論文的復印件和磁 盤 允許論文被查閱和借閱 本人授權電子科技大學可以將學位論文 的全部或部分內容編入有關數據庫進行檢索 可以采用影印 縮印或 掃描等復制手段保存 匯編學位論文 保密的學位論文在解密后應遵守此規定 簽名 聳參立一 導師簽名 日期 w 基于x m l 的安全通信平臺 一x m le n g i n e 1 1 課題背景 第一章引言 1 1 1 作為w e bs e r v i c e 基礎的x m l 的安全性越來越重要 構建大型應用時 通常要在不同計算機上進行并發工作 這樣更加有效 甚 至可能是必需的 強大的計算機和網絡帶來了分布式計算的現象 把計算分布在 網絡上 而不是只在中央計算機上進行 n 層應用程序把應用程序分布在多臺計 算機上 例如 三層應用程序可能把用戶界面放在一臺計算機上 把業務邏輯處 理放在一臺計算機上 數據庫放在一臺計算機上 它們在應用程序運行時進行交 互 為了讓分布式系統正確工作 整個網絡中不同計算機上執行的應用程序組件 通常包裝成編程對象 要進行通信 許多公司和組織開發了自己的分布式組件 問通信技術 對象管理組織o m g 的公用請求代理體系結構 c o m m o n0 b i e c t r e q u e s t b r o k e ra r c h i t e c t u r e c o r b a 微軟公司的分布式組件對象模型 d i s t r i b u t e dc o m p o n e n to b j e c tm o d e l d c o m s u n 公司的i n t e r n e t 對象請求 代理間協議上的遠程方法調用 r e m o t em e t h o di n v o c a t i o n i n t e r n e t i n t e r o r b p r o t o c o l r m i i i o p 和i b m 公司的分布式對象模型 d i s t r i b u t e ds y s t e mo b j e c t m o d e l d s o m 等 這些技術的每一個都能使不同語言 不同實現版本和不同地 點運行的程序能夠像在同一計算機上一樣進行通信 但是 這些技術的相互之間的互操作性 與不同廠家和平臺的軟件之間共享 數據和相互通信的能力 非常有限 例如 兩個最流行的技術d c o m 和c o r b a 就很難相互通信 d c o m 和c o r b a 組件通常通過c o m c o r b a 橋進行通信 如果d c o m 與c o r b a 的基礎協議發生改變 則編程人員必須修改這個橋 反 映所作的這些改變 另外 這些分布式對象協議在i n t r a n e t 環境下工作得很好 而將其用于公共的i n t e r n e t 就會有很多問題 為了解決安全問題 許多組織都在 其公共的w e b 服務器和訪問這些服務器的大眾之間架設一道防火墻 由于防火 墻的存在影響了分布式對象協議的使用 這些問題影響了分布式計算幫助業務過 程集成與自動化的能力 基于這些原因出現了w e bs e r v i c e 技術 w e bs e r v i c e 技術解決了互操作性有 限的問題 從而提高了分布式計算的功能 與d c o m 和c o r b a 不同的是 w e b 莖5 x m l 的安全通信平臺一 x m l e n g i n e s e r v i c e 用開放的標準 非專屬標準 進行操作 理論上 w e bs e r v i c e 可以讓任 何兩個軟件組件相互通信 不管組件用什么技術生成 放在什么平臺上 另外 基于w e bs e r v i c e 的應用程序也更容易調試 因為w e bs e r v i c e 用基于文本的通 信協議而不是d c o m 與c o r b a 采用的二進制通信協議 隨著w e bs e r v i c e 技術的流行 作為w 曲s e r v i c e 基礎協議的x m l 變得越來 越重要 同時 由于x m l 是數據事實上的表示標準 越來越多的公司在通過網 絡傳輸結構化數據時采用x m l x m l 文檔的安全性變得愈加重要 1 1 2 傳統的信息安全不能滿足x m l 安全的需要 象其它任何文檔一樣 可以將x m l 文檔整篇加密 然后安全地發送給 個 或多個接收方 例如 這是s s l 或t l s 的常見功能 但是更令人感興趣的是 如何對同一文檔的不同部分進行不同處理的情況 x m l 的一個有價值的好處是 可以將一整篇x m l 作為一個操作發送 然后在本地保存 從而減少了網絡通信 量 但是 這就帶來了一個問題 如何控制對不同元素組的授權查看 商家可能 需要知道客戶的名稱和地址 但是 無需知道任何正在使用的信用卡的各種詳細 信息 就像銀行不需要知道購買貨物的詳細信息一樣 可能需要防止研究人員看 到有關個人醫療記錄的詳細信息 而管理人員可能正好需要那些詳細信息 但是 應該防止他們查看醫療歷史 而醫生或護士可能需要醫療詳細信息和一些 但不 是全部 個人資料 x m l 語言的強項之一是 搜索是明確的 無二義性的 d t d 或s c h e m a 提 供了相關語法的信息 如果將包括標記在內的文檔的一部分作為整體加密 就會 喪失搜索與那些標記相關的數據的能力 此外 如果標記本身被加密 那么一旦 泄漏 它們將被利用對采用的密碼術進行純文本攻擊 x m l 是因特網以及近來w e b 服務持續增長和開發的主要支持者 但是 在實 現x m l 語言的全部能力之前 還有許多與安全性相關的工作要做 目前 加密 整個x m l 文檔 測試其完整性和確認其發送方的可靠性是一個簡單的過程 但 是 越來越有必要對文檔的某些部分也使用這些功能 以便以任意順序加密信息 和認證鑒別不同用戶或發起方 同時與h t m l 相比 x m l 的出現也使得數字簽 名的實施與安全傳送能夠得以實現 在與x m l 相關的安全性領域方面的開發規 基于x m l 的安全通信平臺一一x m le n g i n e 范中最重要部分是x m l 加密 x m l 簽名 x a c l 和s a m l 等 1 2 作者的主要工作 作者首先對x m l 引擎 x m l e n g i n e 系統所涉及到的x m l 及s o a p 規范 應用密碼學知識和w 3 c 有關x m l 安全的標準進行簡要介紹 對p k i 的基本知 識進行概要說明 并在此基礎上提出一個完整可行的x m l e n g i n e 模型 并在 l i n u x 平臺上實現這一模型 對具體的實現步驟和細節進行詳細描述 作為一 個新產品應該與具體的應用結合起來 為此我們專門設計和實現了一個網絡數字 社區一網上書店 將x m l e n g i n e 服務器明的部署到網絡中 對其中諸如用戶信 用卡號和密碼等敏感信息進行加密和簽名 以體現充分體現x m l e n g i n e 的特點 和優勢 在整個過程中作者主要從事其中的x m l 解析器 典型應用模塊的需求分析 概要設計 詳細設計 代碼編碼和測試工作 與小組成員一起參與x m l e n g i n e 整個項目的總體設計和規劃 最后的總體測試和部署 應該來講基于x m i 的應用 越來越多 但針對x m l 的安全提出的時間不長 雖然國內外對其的研究已經不少 但針對其開發的應用產品還不多見 在x m l 安全的標準和一些關鍵問題上一方面 仍有廣闊的研究空間 另一方面x m l e n g i n e 作為一個大型系統 它的相關標準龐 雜 涉及多方面的知識和技術 在有了第一階段的產品后還有進一步完善和擴展 1 3 各章節安排 第一章 引言 主要介紹課題的來源和背景 作者的主要工作 文章的章節安排 等 第二章 x m l 概述 介紹了x m l 概念 語法 格式 解析 顯示等相關理論 知識 第三章 w e bs e r v i c e 概述 介紹了w e bs e r v i c e 概念 s o a p w s d l u d d i 等相關理論知識 第四章 x m l 安全和s o a p 安全基礎 本章在第二章 第三章的基礎之上 主 要是針對w 3 c 所提出的有關x m l 加密和解密 x m l 簽名和驗證的規范 進行 詳細介紹 第五章 x m l 安全平臺一一x m l e n g i n e 的設計 首先給出x m l e g n i n e 相關的 定義 然后介紹了x m l e n g i n e 服務器的結構 應用環境和處理流程 從系統架 構角度分析了x m l e n g i n e 的應用和部署等 第六章 構建w e bs e r v i c e 典型應用一一數字書店 用以測試x m l e n g i n e 在實 莖 墨塑l 的安全通信平臺一 x m l e n g i n e 際應用中的功能和效果 首先介紹了本應用使用的技術 m v c 設計模式概念 j a x r p c 概念 s o a p 工具包a x i s 概念等 然后介紹本應用在系統中的地位 作用 設計目標 功能等 最后從兩個方面 一個方面是客戶和服務器端 另一 個方面是m v c 的m v c 三部分 詳細給出設計和實現步驟 并通過抓包的 方式測試應用的設計效果和x m l e n g i n e 服務器的工作狀況 第七章 今后的工作 本章中作者闡述了系統存在的不足以及系統未來的發展思 路 1 4 小結 本章介紹課題的研究背景 作者在課題中所做的主要工作 以及全文的章節 安排 下幾章將對開發x m l e n g i n e 產品過程中所涉及到的相關基礎概念體系 技術框架以及研究應用現狀做一個綜述 基于x m l 的安全通信7 r 臺一一x m l e n g i n e 2 1 什么是x m l 第二章 x m l 概述 x m l 是e x t e n s i b l em a r k u pl a n g u a g e 的簡寫 是一種擴展性標記語言 x m l 并不是標記 語言 它只是用來創造標記語言 比如h t m l 化學標記語言c m l 數學標記語言m a t h m l 的元語言 x m l 來源于s g m l s g m l 全稱是 s t a n d a r dg e n e r a l i z e dm a r k u pl a n g u a g e 通用標記語言標準 它是標志語言的標準 也就是說所有標記語言都是依照 s g m l 制定的 當然包括h t m l s g m l 的覆蓋面很廣 兒是有一定格式的文 件都屬于s g m l 比如報告 樂譜等等 h t m l 是s g m l 在網絡上最常見的文 件格式 而x m l 就是s g m l 的簡化版 只不過省略了其中復雜和不常用的部分 那 么有了h t m l 為什么還需要用x m l x m l 是可擴展的 而h t m l 是靜態的 有限的標記集無法滿足日益增長的數據描述要求 x m l 大大豐富了h t m l 的描 述功能 可以描述非常復雜的w e b 頁面 如復雜的數學表達式 化學方程式等 而h t m l 只能描述數據的顯示樣式 沒有語義 因此在電子數據交換 查詢數 據庫中的數據等方面存在極大不足 h t m l 中數據與其顯示樣式完全混在一起 的 數據的可重用性差 如果要換顯示形式你不得不重新編碼所有這樣的h t m l 文件 x m l 是結構化的 好處是使x m l 文件易于被程序處理 便于數據共享 2 2 格式良好的x m l 文件一x m l 語法 在x m l 中 格式良好 有著明確的標準 即是要遵守x m l l 0 規范中的 語法規則 x m l 必須符合規范 才能被正確解釋處理 一個x m l 文件最基本的構成是 x m l 聲明 也是處理指示的 種 處理指示 可選 x m l 元素 苧i 羔m l 的安全通信平臺一 x m le n g i n e 2 2 1x m l 聲明 一個x m l 文件 最好以一個x m l 聲明作為開始 之所以說 最好 是因 為x m l 聲明在文件中是可選內容 可加可不加 但w 3 c 推薦加入這一行聲明 一個完整的x m l 聲明是這樣的 v e r s i o n 屬性 指明所采用的x m l 的版本號 s t a n d a l o n e 屬性 缺省為y e s 這個屬性表明該x m l 文件是否和一個d t d 文件 文件配套使用 e n c o d i n g 屬性 缺省為u t f 一8 編碼標準 如下是幾種常見的編碼 簡體中文 碼 g b 2 3 1 2 繁體中文碼 b i g 5 西歐字符 u t f 一8 如果標簽是用中文來寫 的 就要用e n c o d i n g g b 2 3 1 2 2 2 2 x m l 元素 元素是x m l 文件內容的基本單元 從語法上講 一個元素包含一個起始標 記 一個結束標記以及標記之間的數據內容 其形式是 標記 數據內容 標記 元素中還可以再嵌套別的元素 一個x m l 文檔有且只有一個根元素 起始 和結束標記之問出現的所有合法字符都是數據內容 都被忠實地傳給x m l 處理 程序 比方說 一段文字叫格式 格式 一段文字 ab 上表中左邊和右邊所列出的元素標簽及內容均一致 但二者卻是不同的 因 為b 中多了兩個換行符 在屏幕上顯示的時候分成了三行 所以象換行 回車 這類不可見字符也是作為x m l 文檔中的有效字符來處理 1 字符引用 為了避免把數據內容和標記中需要用到的一些特殊符號相混淆 x m l 還提 苧王x m l 的安全通信平臺一 x m i e n g i n e 供 t n n 的字符引用 字符引用實際上也是實體引用 后面介紹 常見的 5 種字符引用如下表所示 字符實體引用 g t a m p q u o t a p o s 這樣 如果我們需要在 示例 這個元素中出現文本 張三 正確的寫法應該是 示例 1 t 姓 g t 張z l t 姓名 舀 示例 2 標記 所有符號 和符號 之間的內容都稱為標記 基本形式為 標記名 屬性名 屬性取值 x m l 對于標記的語法規定要比h t m l 要嚴格得多 標記必不可少 任何一 個形式良好的x m l 文件中至少要有一個元素 大小寫有所區分 在h t m l 中 標記 h e l l o 和 h e l l o 是一回事 但在x m l 中 它們是兩個截然不同的標 記 要有正確的結束標記 結束標記除了要和開始標記在拼寫和大小寫上完全 相同 還必須在前面加上一個斜杠 為了簡便起見 空標記直接在開始標 記的最后慣以斜杠 來確認 標記與標記之間要正確嵌套 l k 女r l s a m p l e 是錯誤的 正確 基于x m l 的安全通信平臺一一x m l e n g i n e 寫法是 s a m p l e 標記命名要合法 一般標記應該以字母 下劃 線 一 或冒號 開頭 后面跟字母 數字 句號 冒號 下劃線或連字 符 但是中間不能有空格 而且任何標記不能以 x m l 起始 另外 最好 不要在標記的開頭使用冒號 盡管它是合法的 但可能會帶來混淆 在x m l l 0 標準中允許使用任何長度的標記 不過 現實中的x m l 處理程序可能會要求標 記的長度限制在一定范圍內 對于標記中的屬性 是指對標記的進一步描述和說明 標記中可以包含任意 多個屬性 在標記中 屬性以名稱 取值對出現 屬性名不能重復 名稱與取值 之間用等號 分隔 且取值用引號引起來 例如 a l e x 用屬性 s e x 來指明 a u t h o r 的性別是 m a l e x m l 中屬性是自己定義的 雖然屬性使用比較方便 但是有時候屬性不易 擴充和被程序操作 所以凡是用到屬性的地方也可以用子元素來代替 例如上面 的代碼可以改成這樣 a l e x f e r n a l e 2 2 3 處理指示 處理指示是用來給處理x m l 文件的應用程序提供信息的 也就是說 x m l 分析器可能對它并不感興趣 而把這些信息原封不動地傳給x m l 應用程序 然 后 這個應用程序來解釋這個指示 遵照它所提供的信息進行處理 或者再把它 原封不動地傳給下一個應用程序 正如我們前面看到的 x m l 聲明就是一個處 理指示 所有的處理指示應該遵循下面的格式 處理指示名處理指示信息 由于x m l 聲明的處理指示名是 x m l 因此其它處理指示名不能再用 x m l 例如 我們使用一個處理指示來指定與這個x m l 文件配套使用的樣式單的類型 基于x m l 的安全通信 f 臺一一x m l e n g i n e 及文件名 2 2 4 實體 實體主要是用來代替字符數據的 它可以節省大量的錄入工作 實體同樣必 須要格式良好 假如你為你的信件署名定義了一個實體l e t t e r s i g n 它代表下面這 一大段文本 張三 某網絡公司銷售部門 北京市海淀區中關村8 8 號 1 0 0 0 0 0 那么以后當你的x m l 文件中出現 信件 元素時 就可以這樣寫 信件 收件人 李四 收件人 主題 h e l l o 主題 正文 h e l l o l e t t e r s i g n 正文 信件 1 實體的類型 實體包括兩種類型 一般實體和參數實體 一般實體 定義一般實體的格式如下 e n t i t y 實體名 文本內容 另外 你也可以指定一個實體代替一個外部文件的內容 此時要使用s y s t e m 這個關鍵字 例如 e n t i t y l e t t e r s i g ns y s t e m h t t p w w w m y d o m a i n c o m l e t t e r s i 舀ax m l 參數實體 與一般實體相同 參數實體既可以是內部的也可以是外部的 不過 參數實 體只用在d t d 中 參數實體的格式與一般實體很類似 只不過中間要加卜 符 例如 基十x m l 的安全通信平臺一 x m l e n g i n e e n t i t y 實體名 文本內容 2 實體的使用 實體的使用包括兩部分 實體聲明和實體引用 實體聲明 對于實體的聲明應該放在文件類型d o c t y p e 中 d o c t y p e 一般放在文件 頭 即x m l 聲明和d t d 之后 x m l 元素之前 g f 4 來 x m l 文件就變為 下面的形式 x m lv e r s i o n 1 0 具體數據內容 實體引用 實體引用指的是引用一個在實體聲明中已經聲明過的一個實體 實體引用的 形式很簡單 實體名 實體引用一般有如下幾點規則 在引用x m l 實體之前 必須已經在x m l 文件中對此實體進行過聲明 在實體引用中不能出現空格 也就是說 l e t t e r s i g n 的用法會引起錯誤 盡管在一個實體中可以再引用其它實體 但是不能出現循環引用 也就是說 一個實體不能引用它自己 同樣 也不能出現實體a 引用實體b 然后實體 b 再反過來引用實體a 的情況 實體引用不能在d o c t y p e 聲明中出現 實體引用的文本必須是形式良好的x m l 完整的實體聲明和實體引用的例子 d o c t y p e 聯系人列表 o 基于x m l 的安全通信平臺一一 m le n g i n e 張三 a 公司 a 公司地址 姓名醇 李四 b 公司 b 公司地址 地址 王五叫姓名 b 公司 b 公司地址 地址 叫聯系人列表 從這個例子中可以看出 一旦哪個公司搬家了 只須改變實體聲明中有關該 公司的地址 所有這個公司的聯系人的地址也就都改過來了 2 3 有效的x m e 文檔 格式良好的x m l 不一定是有效的x m l 文件 比如 聯系人列表 張三 0 0 1 0 0 2 a 公司 李四 0 0 2 b 公司 基于x m l 的安全通信平臺一一x m le n g i n e 聯系人列表 這個x m l 文檔是格式良好的 但燒不是有效的 因為 i d 號被賦予兩個公 司 而且兩個人的i d 號是一樣的 沖突了 這就是結構良好的x m l 文檔沒有 語義匏潤蘧 d t d 幫s c h e m a 藏是簿決這個閹熬熬 2 3 1d t d 翻s c h e m a l d4 l i 文件類型描述d t d d o c u m e m t y p e d e f i n i t i o n 怒用來掐述一個標i g n 言的 語法秘溺匯表 也就楚定義了文蛙竣繁體縫梭以及文佟的語法 d t d 翹定了一 個解析器為了解釋一個 有效的 x m l 文件所需要知道的所有規則的細節 個畜效茲x m l 文件不兔誨接愛任意茲標淀 使瘸豹任何括記都藜在d t d 內聲翻 而且必須以d t d 允許的方式使用 所以d t d 就是用求解決這類有效性問題的 2 使溺d t d 靜方法 內部d t d s t a n d a l o n e y e s 在x m l 文件的序言部分加入一個d t d 描述 加入的位置是緊接在x m l 處 理指示之后 d o c t y p e 欞元素名 元素描述 爹 文件體 步 部d t d s t a n d a l o n e n o 外部d t d 的好處是 它可以方便高效地被多個x m l 文件所共事 你只要 寫一個d t d 文俘 就可以被多個飆文件掰引用 x m l 聲明中必須說明這個文件不是自成一體的 即s t a n d a l o n e 穗性的屬性 值是n o 同時 在d o c t y p e 聲明中 應該加入s y s t e m 屬性 x m lv e r s i o n 1 0 e n c o d i n g g b 2 3 1 2 s t a n d a l o n e n 0 公用d t d 外部d t d 一個系統內可共享的d t d 目前 已經有數量眾多的寫好的d t d 2 墨 蘭堅蘭塑窒竺望 童 墮二二苧堅生星 竺 文件可以利用 針對不同的行業和應用 這些d t d 文件已經建立了通用的元素 和標簽規則 你不需要自己重新創建 只要在他們的基礎e 加入你需要的新標識 這就需要公用d t d 兩個相同行業不同地區的人使用同一個d t d 文件來作為文 檔創建規范 那么他們的數據就很容易交換和共享 引用公共d t d 的形式為 3 s c h e m a d t d 最大的局限是不能對元素內容提供足夠的控制 例如 d t d 無法指定 0 9 0 1 2 0 0 0 有效而 e g g s t o a s t c o f f e e 無效 相 對于d t d 我們總結s c h e m a 的優勢有如下幾條 一致性 實際上d t d 是x m l 體系中的異類 它的書寫結構和x m i 文件的結構仿 佛有著天壤之別 后者清晰直觀 前者復雜晦澀 s c h e m a 建立在x m l 之上 本身也是一種x m l 使用者不必再為了搞懂d t d 而去重新學習 另一方面 它 可以被現有的x m l 編輯制作工具所編輯 被x m l 語法分析器所解析 被x m l 應用系統所利用 既有投資得到了最大程度的保護 擴展性 雖然d t d 中也定義了一些數據類型 但那都是針對屬性類型而定義的 而 且類型非常有限 沒有數據類型 無形之中大大增加了程序員的開發難度和工作 量 何況電子交易過程中不可避免地會出現大量的數據轉換 整型 實型 布爾 型 日期型的數據層出不窮 d t d 顯然招架不住 s c h e m a 對d t d 進行了擴充 引入了數據類型 很好地解決了這一問題 易用性 x m ls c h e m a 取代d t d 的另一個原因要歸結于d o m 和s a x 關于d o m 和s a x 的概念將在后面章節中詳細論述 作為一種x m la p i d o m 和s a x 只是對x m l 實例文檔有效 對于d t d 則無能為力 你不可能期望通過d o m 或 s a x 來判定一個元素的屬性類型或者某個元素的子元素允許出現的次數 當然 這都是x m l 分析器的本職工作 但是 一旦有了s c h e m a 這個問題便不復存 在 因為此時對于x m l 文檔結構的描述已變成為s c h e m a 一一種 格式良好 的 x m l 文檔 用d o m 和s a x 去訪問當然不在話下啦 規范性 基于x m l 的安全通信平臺一一x m l e n g i n e 同d t d 一樣 s c h e m a 也提供了一套完整的機制以約束x m l 文檔中標記的 使用 但相比之下 后者基于x m l 更具有規范性 s c h e m a 利用元素的內容和 屬性來定義x m l 文檔的整體結構 如哪些元素可以出現在文檔中 元素間的關 系是什么 每個元素有哪些內容和屬性 以及元素出現的順序和次數等等 一目 了然 2 4x m l 文件的解析 處理x m l 文檔的應用程序都需要一個x m l 解析器 x m l 解析器的作用是 文檔中提取實際的數據 然后創建一系列的事件或者是新的數據結構 解析器也能夠檢查文檔是否是格式良好的 也就是說是否嚴格的遵守了x m l 規范 而這是處理x m l 文檔之前就必須進行的工作 解析器還應該能夠判斷一個文檔是否是有效的 如果該文檔有一個 d t d s c h e m a 的話 當前比較常見解析器有 i b mx m l 4 j a p a c h ex e r c e s s u np r o j e c tx m i c r o s o f tm s x m l i e 5 0 以上版本已經集成了m s x m l 解析器 o r a c l ex m lp a r s e rf o rj a v a 以及j a m e sc l a r kx p 等 2 5x m l 文件的顯示 x m l 文檔本身是重內容而不重形式 x m l 的顯示 般用樣式單來描述文檔 的顯示效果 樣式單是一種專門描述結構文檔表現方式的文檔 它既可以描述這 些文檔如何在屏幕上顯示 也可以描述它們的打印效果 甚至聲音效果 樣式單 一般不包含在x m l 文檔內部 而以獨立的文檔方式存在 w 3 c 給出了兩種樣式 單語言的推薦標準 一種是層疊樣式單c s s c a s c a d i n gs t y l es h e e t s 另一種是 可擴展樣式單語言x s l e x t e n s i b l es t y l e s h e e tl a n g u a g e 如圖2 1 就是一個用 i e 打開的未有樣式單簡單的例子 基于x m l 的安全通信平臺一一x m l e n g i n e 圖2 1 用i e 打開的沒有樣式單的x m l 文檔 2 6 應用程序接口 處理x m l 文檔是由解析器來完成的 應用程序要創建 訪問和操作一個 x m l 文件就需要一個x m l 解析器的接口 w 3 c 和x m l d e v 郵件列表成員分 別提出的兩個標準應用程序接口 d o m 和s a x d o m 和s a x 在應用程序開發過程中所處地位可以用下圖2 2 來表示 圖2 2 d o m 和s a x 從圖中可以看出 應用程序不是直接對x m l 文檔進行操作的 而是首先由 莖士蘭竺 塑室全婆墮蘭笪二二苧竺 墅型蘭 x m l 分析器對x m l 文檔進行分析 然后 應用程序通過x m l 分析器所提供的 d o m 接1 3 或s a x 接口對分析結果進行操作 從而間接地實現了對x m l 文檔的 訪問 1 d o m d o m 的全稱是d o c u m e n t o b j e c t m o d e l 也即文檔對象模型 在應用程序中 基于d o m 的x m l 分析器將一個x m l 文檔轉換成 個對象模型的集合 通常 稱d o m 樹 應用程序正是通過對這個對象模型的操作 來實現對x m l 文檔數 據的操作 通過d o m 接1 2 1 應用程序可以在任何時候訪問x m l 文檔中的任何 一部分數據 因此 這種利用d o m 接口的機制也被稱作隨機訪問機制 d o m 接1 5 1 提供了一種通過分層對象模型來訪問x m l 文檔信息的方式 這些 分層對象模型依據x m l 的文檔結構形成了一棵節點樹 無論x m l 文檔中所描 述的是什么類型的信息 即便是制表數據 項目列表或一個文檔 利用d o m 所 生成的模型都是節點樹的形式 也就是說 d o m 強制使用樹模型來訪問x m l 文檔中的信息 由于x m l 本質上就是一種分層結構 所以這種描述方法是相當 有效的 2 s a x s a x 的全稱是s i m p l e a p i s f o r x m l 也即x m l 簡單應用程序接口 與d o m 不同 s a x 提供的訪問模式是一種順序模式 這是一種快速讀寫x m l 數據的方 式 當使用s a x 分析器對x m l 文檔進行分析時 會觸發一系列事件 并激活 相應的事件處理函數 應用程序通過這些事件處理函數實現對x m l 文檔的訪問 因而s a x 接口也被稱作事件驅動接口 3 d o m 和s a x 的比較 d o m 樹所提供的隨機訪問方式給應用程序的開發帶來了很大的靈活性 它 可以任意地控制整個x m l 文檔中的內容 然而 由于d o m 分析器把整個x m l 文檔轉化成d o m 樹放在了內存中 因此 當文檔比較大或者結構比較復雜時 對內存的需求就比較高 而且 對于結構復雜的樹的遍歷也是一項耗時的操作 所以 d o m 分析器對機器性能的要求比較高 實現效率不十分理想 不過 由 于d o m 分析器所采用的樹結構的思想與x m l 文檔的結構相吻合 同時鑒于隨 機訪問所帶來的方便 因此 d o m 分析器還是有很廣泛的使用價值的 基于x m l 的安全通信平臺一一x m l e n g i n e s a n 分析器在對x m l 文檔進行分析時 觸發了一系列的事件 由于事件觸發 本身是有時序性的 因此 s a x 提供的是一種順序訪問機制 對于已經分析過的 部分 不能再倒回去重新處理 s a x 之所以被叫做 簡單 應用程序接v 1 是因為 s a x 分析器只做了一些簡單的工作 大部分工作還要由應用程序自己去做 也就 是說 s a y 分析器在實現時 它只是順序地檢查x m l 文檔中的字節流 判斷當 前字節是x m l 語法中的哪 部分 是否符合x m l 語法 然后再觸發相應的事件 而事件處理函數本身則要由應用程序自己來實現 同d o m 分析器相比 s a x 分 析器缺乏靈活性 然而 由于s a x 分析器實現簡單 對內存要求比較低 因此實 現效率比較高 對于那些只需要訪 h x m l 文檔中的數據而不對文檔進行更改的 應用程序來說 s a x 分析器更為合適 基于x m l 的安全通信平臺一 x m l e n g i n e 3 1基本概念 第三章 w e bs e r v i c e 概述 w e bs e r v i c e 是能夠基于網絡 尤其是基于萬維網 w o r l dw i d ew 曲 直接調 用的能夠處理離散任務或連續任務的軟件模型 目前較為流行的應用是 由一家 公司對其專有數據進行封裝 提供w e bs e r v i c e 然后其它公司就可以通過i n t e r n e t 來動態使用這些在線服務 這為未來全球的電子商務發展提供了新的標準和架 構 w e bs e r v i c e 是獨立的 模塊化的應用 能夠通過因特網來描述 發布 定位 以及調用 在w e bs e r v i c e 的體系架構中包括三個角色 服務提供者 s e r v i c e p r o v i d e r 服務請求者 s e r v i c er e q u e s t o r 服務注冊器 s e r v i c er e g i s t r y 角色問 主要有三個操作 發布 p u b l i s h 查找 f i n d 綁定 b i n d 圖3 1 清楚的描述了三種角色 以及角色之間的作用關系 圖3 1 w e bs e r v i c e 關系圖 w e b 服務是位于應用程序代碼和應用程序之間的一個接口 它的作用相當于 一個抽象層 將應用平臺與編程語言相關的細節 如怎樣調用應用程序代碼 等 分隔開 這個標準化的抽象層意味著任何支持w e b 的服務的編程語言都可以訪 問應用程序提供的功能 w e b 服務是以一種與平臺無關的方式提供了這種跨平臺 的互操作性 基于x m l 的安牟通信平臺一一x m l e n g i n e 平臺和編程 語言相關的 w e b 服務 崎一 語言未知的 圖3 2w e b 服務在應用程序客戶和應用程序代碼之間提供了一個抽象層 3 2w e bs e r v i c e 協議標準 3 2 1 簡單對象訪問協議 s o a p s o a p 是s i m p l eo b j e c ta c c e s sp r o t o c o l 的縮寫 是一種基于x m l 的不依賴 傳輸協議的表示層協議 用來在分散或分布式的應用程序之間方便地以對象的形 式交換數據 在s o a p 的下層 可以是h t t p h t t p 也可以是s m t p p o p 3 還 可以是為一些應用而專門設計的特殊的通信協議 s o a p 是序列化調用位于遠程系統上的服務所需信息的標準方法 這些信息 可以使用一種遠程系統能夠讀懂的格式通過網絡發送到遠程系統 而不必關心遠 程系統運行于何種平臺或者使用何種語言編寫 s o a p 以x m l 格式提供了一個 簡單 輕量的用于在分散或分布環境中交換結構化和類型信息的機制 s o a p 本 身并沒有定義任何應用程序語義 如編程模型或特定語義的實現 實際上它通過 提供一個有標準組件的包模型和在模塊中編碼數據的機制 定義了一個簡單的表 示應用程序語義的機制 這使s o a p 可用于聯合各種現有的網絡協議和格式 包 括h t t p s m t p 和m i m e 并可被用于消息傳遞到r p c 的各種系統 s o a p 解決了通過防火墻傳送往返于遠程應用程序的消息的問題 除了通過 某些預先設定的作為特定用途的端口 防火墻通常禁止通過其它端口進行遠程通 訊 這就出現了一個問題 大部分分布式協議不使用分配的端口 而是動態地選 擇端口 微軟s o a p 技術實現的解決方案是通過h t t p 的8 0 端口傳送對遠程進 程的調用 這個遠程調用使用x m l 定義消息請求或響應的格式 把調用附加到 h t t p 協議的頂部 這個技術的優點之一就是降低通過防火墻傳送消息的復雜 性 但是8 0 端口通常還用來作為w e b 通信之用 所以可能會降低其效率 s o a p 可以用來解決因特網應用程序的交互性問題 你可以使用一種平臺無 基于x m l 的安全通信平臺 一x m l e n g i n e 關性方式在遠程 或本地 服務器上訪問對象和服務 現在的互聯網世界由不同 的操作系統 不同的防火墻 不同的產生遠程過程
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 服裝內容推廣方案(3篇)
- DB23-T2959-2021-篤斯越桔種質資源圃營建技術規程-黑龍江省
- DB23-T2881-2021-沙地云杉播種育苗技術規程-黑龍江省
- 國際醫療中心管理制度
- 國企采購需求管理制度
- 培訓學校支出管理制度
- 尾氣回收設施管理制度
- 供電單位復工方案(3篇)
- 合同存檔安全管理制度
- 養殖企業飼料管理制度
- SA8000:2014社會責任-中文
- 四年級如何進行有效期末復習課件
- 腫瘤醫院推廣方案
- 動物出血性肺炎預防與治療
- 公路工程安全風險辨識與防控手冊
- 研究生開題報告評審表
- 統編版語文二年級下冊《黃帝的傳說》教學課件
- 海南大學本科畢業論文正文范文
- SCA涂膠機定量機維護作業指導書
- XX跨境電商公司運營人員晉升及淘汰制度方案
- 構建中學人工智能教育的教學計劃
評論
0/150
提交評論