版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 學號: </p><p><b> 常 州 大 學</b></p><p><b> 畢業(yè)設計(論文)</b></p><p><b> ?。?012屆)</b></p><p> 題 目 基于Web服務的分布式異
2、構數(shù)據(jù)庫集成研究 </p><p> 學 生 </p><p> 學 院 專業(yè)班級 </p><p> 校內指導教師 專業(yè)技術職務
3、 </p><p> 校外指導老師 專業(yè)技術職務 </p><p><b> 二○一二年六月</b></p><p> 基于Web服務的分布式異構數(shù)據(jù)庫集成研究</p><p> 摘 要:隨著企業(yè)的快速發(fā)展和不斷擴充,對企業(yè)內部
4、新舊系統(tǒng)之間的數(shù)據(jù)、信息進行整合和共享,實現(xiàn)企業(yè)信息數(shù)據(jù)一體化日趨重要。但是,由于企業(yè)內部之間采用的系統(tǒng)以及數(shù)據(jù)庫存在分布性和異構性,這必然會促進企業(yè)應用集成的發(fā)展。</p><p> 本文首先介紹了分布式系統(tǒng)的概念、國內外發(fā)展現(xiàn)狀,以及分布式系統(tǒng)的體系結構和特點。接著介紹了異構數(shù)據(jù)庫集成的現(xiàn)狀,以及異構數(shù)據(jù)相互集成的方法。然后對各種異構數(shù)據(jù)集成技術方案進行了分析,闡述了各自的優(yōu)缺點。最后通過設計和開發(fā)一個基于
5、WCF Data Service 的數(shù)據(jù)集成案例,在此案例中主要使用了基于XML的數(shù)據(jù)標準OData。</p><p> 實踐證明,基于EntityFramework以及DataService的分布式異構數(shù)據(jù)集成方案,可以很好的降低系統(tǒng)集成對客戶端的限制,對于分布式異構數(shù)據(jù)集成具有較高的參考價值,該方案同樣適用于手機等開發(fā)平臺。</p><p> 關鍵字:異構;分布式;Web服務;數(shù)據(jù)
6、集成 </p><p> Web service based on Distributed Heterogeneous Database Integration Research</p><p> Abstract:With the rapid development of enterprises and expanding,of enterprise internal data be
7、tween new and old system,information integration and sharing,realize enterprise information data integration are becoming more and more important.But,Because the enterprise interior is adopted between the system and the
8、database is distributed and heterogeneous,this will promote the development of the enterprise application integration.</p><p> This paper first introduced the concept of distributed systems,the domestic and
9、 foreign development present situation,and distributed system structure and characteristics.Then it introduces the present situation of the integration of heterogeneous database,and each other of heterogeneous data integ
10、ration method.And then to all sorts of heterogeneous data integration technology solutions are analyzed,expounds the advantages and disadvantages of each. Finally through the design and development of </p><p&g
11、t; Practice proves,based on EntityFramework and DataService distributed heterogeneous data of integrated solutions,can be very good to reduce the system integration on client limit,for distributed heterogeneous data int
12、egration is of high reference value,the plan also apply to cell phone development platform.</p><p> Keywords: heterogeneous; distributed; Web Service;data integration</p><p><b> 目 錄</
13、b></p><p><b> 摘要I</b></p><p><b> 目錄III</b></p><p><b> 1 前言1</b></p><p><b> 2 相關技術2</b></p><p>
14、2.1分布式數(shù)據(jù)庫系統(tǒng)2</p><p> 2.1.1 基本概念2</p><p> 2.1.2 分布式數(shù)據(jù)庫系統(tǒng)的特點2</p><p> 2.1.3 分布式數(shù)據(jù)庫的體系結構3</p><p> 2.1.5 分布式數(shù)據(jù)庫系統(tǒng)的現(xiàn)狀3</p><p> 2.2 異構數(shù)據(jù)庫系統(tǒng)4</p>
15、<p> 2.2.1 異構數(shù)據(jù)庫系統(tǒng)概述4</p><p> 2.2.2 異構數(shù)據(jù)集成現(xiàn)狀4</p><p> 2.2.2 異構數(shù)據(jù)庫系統(tǒng)之間數(shù)據(jù)轉換以及集成5</p><p> 2.3 各種異構、分布數(shù)據(jù)信息集成技術的比較7</p><p> 2.3.1 ODBC技術7</p><p&g
16、t; 2.3.2 CORBA8</p><p> 2.3.3 COM/DCOM技術10</p><p> 2.3.4 Web Service技術10</p><p> 2.3.5 XML技術12</p><p> 3 本文用到的技術17</p><p> 3.1 REST17</p>
17、<p> 3.2 WCF Data Service18</p><p> 3.2.1 WCF Data Service系統(tǒng)架構19</p><p> 3.2.2 使用WCF Data Service的OData數(shù)據(jù)發(fā)布前后比較22</p><p> 3.3 Entity Framework23</p><p>
18、 3.3 .1 Entity Framework 系統(tǒng)架構23</p><p> 3.3.2 Entity Framework概念模型查詢24</p><p> 3.4 LINQ24</p><p> 4 基于Web Service的分布式異構數(shù)據(jù)庫數(shù)據(jù)集成設計26</p><p> 4.1 系統(tǒng)框架26</p>
19、<p> 4.2 框架分析26</p><p> 4.3設計要點26</p><p> 4.4 查詢接口27</p><p> 4.5 集成Data Service模塊設計27</p><p> 4.5.1 Server 端模塊設計27</p><p> 4.5.2 Client 模
20、塊設計31</p><p> 4.6實際運行效果32</p><p> 4.6.1數(shù)據(jù)庫數(shù)據(jù)準備32</p><p> 4.6.2 構建相應的Edmx模型以及WCF Data Service33</p><p> 4.6.3集成數(shù)據(jù)模型34</p><p> 4.6.3客戶端顯示35</p&
21、gt;<p> 5 總結與展望37</p><p> 5.1論文工作總結37</p><p> 5.2未來工作展望37</p><p><b> 參考文獻38</b></p><p><b> 致謝39</b></p><p><b&g
22、t; 1 前言</b></p><p> 隨著信息技術的高速發(fā)展,數(shù)據(jù)庫技術得到了快速的發(fā)展與應用,在現(xiàn)在的各大企事業(yè)單位中,所運行著的數(shù)以百萬記的應用程序的后臺無不存在著各種數(shù)據(jù)庫,從大型的Oracle,Microsoft SQL Server、DB2到免費的MySQL或者小型的Access數(shù)據(jù)庫。這些數(shù)據(jù)庫在企業(yè)的各種業(yè)務活動中扮演著極其重要的地位。這些數(shù)據(jù)庫根據(jù)原先的需求進行創(chuàng)建,以及管理,
23、各個數(shù)據(jù)庫之間無論是物理上還是在邏輯上都存在著千差萬別的區(qū)別。每個數(shù)據(jù)庫都有著自己的模式以及數(shù)據(jù)模型,通常表現(xiàn)為以下幾個方面:1)數(shù)據(jù)庫運行體系的差別,其主要包括大型機,小型機,PC以及嵌入式系統(tǒng)。2)數(shù)據(jù)庫所運行的操作系統(tǒng)的差別。主要包含Microsoft windows,Unix,Linux等。3)數(shù)據(jù)庫DBMS系統(tǒng)的差異,由于數(shù)據(jù)庫軟件的更新?lián)Q代,企事業(yè)單位中存在大量的不同數(shù)據(jù)模型的數(shù)據(jù)庫,包含關系型數(shù)據(jù)庫,網絡型的數(shù)據(jù)庫以及面向
24、對象和基于文件的數(shù)據(jù)庫。4)數(shù)據(jù)結構的異構,這個主要表現(xiàn)在各大數(shù)據(jù)庫提供商雖然提供了標準SQL接口,但是其SQL語法會有略微的差別,造成數(shù)據(jù)結構上的異構出現(xiàn)。</p><p> 隨著網絡的高速發(fā)展,企事業(yè)中各種應用的呈現(xiàn)明顯增長的態(tài)勢,其后臺數(shù)據(jù)量也呈現(xiàn)指數(shù)級的增長,數(shù)據(jù)庫也從本來的單機數(shù)據(jù)庫向數(shù)據(jù)庫集群方向發(fā)展,數(shù)據(jù)庫也變得越來越復雜。另外企業(yè)中的各種應用由于其相對獨立性,并沒有為后期數(shù)據(jù)集成留好接口,這些相
25、對獨立的系統(tǒng)在企業(yè)發(fā)展過程中制約了企業(yè)的信息集成,之間沒有相互連接的通道,且通常被封存在不同的主機,數(shù)據(jù)庫服務器上,為了構建企業(yè)的信息集成以及信息共享的系統(tǒng),有必要對這些異構的數(shù)據(jù)庫進行相互串聯(lián),因此如何實現(xiàn)這些異構數(shù)據(jù)庫的信息共享成為當前企事業(yè)單位的當務之急,分布式異構數(shù)據(jù)集成成為一個關鍵點。</p><p><b> 2 相關技術</b></p><p> 2
26、.1分布式數(shù)據(jù)庫系統(tǒng)</p><p> 2.1.1 基本概念</p><p> 分布式數(shù)據(jù)庫(DDBS)指的是物理上處于不同地點但是邏輯上相對集中的數(shù)據(jù)庫系統(tǒng),分布式數(shù)據(jù)庫使用網絡將不同物理地點的數(shù)據(jù)庫實例進行集中管理以及控制,并將它們連接起來形成一個統(tǒng)一邏輯上集成的數(shù)據(jù)庫系統(tǒng)。因此簡單的說,分布式數(shù)據(jù)庫就是數(shù)據(jù)庫系統(tǒng)和網絡的結合。</p><p> 分布式數(shù)
27、據(jù)庫系統(tǒng)由兩部分構成,其一就是上述的分布式數(shù)據(jù)庫,其二是分布式數(shù)據(jù)庫管理系統(tǒng)(DDBMS),后者負責對前面的位于各處的數(shù)據(jù)庫進行集成以及管理,負責其在分布式環(huán)境下的數(shù)據(jù)存取,使得數(shù)據(jù)保持一致性、安全性以及完整性。</p><p> 分布式數(shù)據(jù)庫系統(tǒng)按照其范圍不同,可以分為全局數(shù)據(jù)庫和局部數(shù)據(jù)庫兩種,其中全局數(shù)據(jù)庫由全局數(shù)據(jù)庫管理系統(tǒng)來進行管理,而局部數(shù)據(jù)庫則由相對應的數(shù)據(jù)庫管理系統(tǒng)來進行管理。同樣的,如果應用程
28、序只是訪問一個數(shù)據(jù)庫實例的話,那么該應用稱為本地應用,如果應用涉及兩個或者兩個以上數(shù)據(jù)庫的數(shù)據(jù),那么該應用可以稱之為全局應用。</p><p> 因此,從分布式數(shù)據(jù)庫的定義中可以看出,對于狹義的分布式數(shù)據(jù)庫定義,可以認為是包含兩個或者兩個以上節(jié)點的數(shù)據(jù)庫才可稱為分布式數(shù)據(jù)庫系統(tǒng)。</p><p> 2.1.2 分布式數(shù)據(jù)庫系統(tǒng)的特點</p><p> 分布式數(shù)
29、據(jù)庫由于其特殊性,有以下的特點。</p><p> (1)物理上大多不在同一區(qū)域:顧名思義,分布式數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù)分別存儲于網絡的各個角落,其存儲點的物理位置以網絡連接,并且可能相差幾千公里。</p><p> (2)邏輯上可以視為一個數(shù)據(jù)庫:雖然分布式數(shù)據(jù)庫的數(shù)據(jù)分布于各處,但是這些分散的數(shù)據(jù)在邏輯上是一個整體,可以被分布式數(shù)據(jù)庫用戶以一個統(tǒng)一的方式訪問。</p>&
30、lt;p> (3)本地數(shù)據(jù)庫的獨立性:分布式數(shù)據(jù)庫由多個本地數(shù)據(jù)庫構成,且每個數(shù)據(jù)庫的DBMS也千差萬別,管理數(shù)據(jù)的方式也隨著數(shù)據(jù)庫廠家的不同而不同。且本地數(shù)據(jù)庫一般情況下也是局部應用的后臺數(shù)據(jù)提供者。因此,脫離分布式數(shù)據(jù)庫的范疇,本地數(shù)據(jù)庫也可以自成一體,進行常規(guī)的數(shù)據(jù)管理以及計算。</p><p> (4)數(shù)據(jù)的獨立性:由于分布式數(shù)據(jù)庫的設計中非常關鍵的一點就是數(shù)據(jù)的透明性,因此,在用戶使用分布式數(shù)
31、據(jù)庫的時候,通常不必關注數(shù)據(jù)的拷貝存在于哪個服務器,以及本地數(shù)據(jù)庫軟件支持哪種數(shù)據(jù)模型等問題。</p><p> (5)數(shù)據(jù)的冗余:根據(jù)數(shù)據(jù)庫設計的三大范式,一般不建議在數(shù)據(jù)庫設計中存在大量的冗余數(shù)據(jù),其一,冗余數(shù)據(jù)增加了數(shù)據(jù)的存儲空間,還有一個最大的問題就是數(shù)據(jù)各個副本之間的數(shù)據(jù)的一致性無法得到保證。但是數(shù)據(jù)冗余對于分布式數(shù)據(jù)庫來說卻是一個優(yōu)化的工具,因為在分布式數(shù)據(jù)庫中,由于各個子數(shù)據(jù)庫存在于各個不同的物理
32、位置,由于網絡或者數(shù)據(jù)庫系統(tǒng)問題,通常會造成災難性的后果,造成整個基于分布式數(shù)據(jù)庫系統(tǒng)的應用整體癱瘓,因此在數(shù)據(jù)庫系統(tǒng)設計中需要考慮的一個點就是數(shù)據(jù)庫數(shù)據(jù)的適量冗余,以此來提高數(shù)據(jù)的可靠性以及可用性。同時由于系統(tǒng)各個節(jié)點的冗余數(shù)據(jù)的存在,可以大大減少網絡的負載,使得整個基于分布式數(shù)據(jù)庫的應用的性能得以大大提升。</p><p> (6)事務的分布性:在本地化的數(shù)據(jù)庫中一個很關鍵的技術就是事務,在企業(yè)級應用中為了
33、防止系統(tǒng)出錯,可以大量使用了該技術,對于所有可能拋出異常的數(shù)據(jù)庫操作進行commit以及rollback操作。而同樣的需求也存在于分布式數(shù)據(jù)庫中,由于數(shù)據(jù)分布于不同的地點,事務的分布性也成為分布式數(shù)據(jù)庫的一個特點。</p><p> 2.1.3 分布式數(shù)據(jù)庫的體系結構</p><p> 圖2.1 分布式數(shù)據(jù)庫體系結構</p><p> 上圖給出了分布式系統(tǒng)的體
34、系結構,在整個分布式數(shù)據(jù)庫中,數(shù)據(jù)的描述以及其相關的meta-data,也有全局和局部之分,其通常包含數(shù)據(jù)表,數(shù)據(jù)視圖以及存儲過程等的分布式訪問。</p><p> 2.1.5 分布式數(shù)據(jù)庫系統(tǒng)的現(xiàn)狀</p><p> 分布式數(shù)據(jù)庫系統(tǒng)從出現(xiàn)到現(xiàn)在已經有了20多年的歷史,從概念模型到現(xiàn)在相對成熟的系統(tǒng)的分布式平臺,其間經歷了一個從產生到發(fā)展的過程[1]。分布式數(shù)據(jù)庫實現(xiàn)所需要的很多問題
35、得到解決。發(fā)展到現(xiàn)在,分布式數(shù)據(jù)庫技術已經相對成熟,各大數(shù)據(jù)庫廠商都在不斷推出基于自身產品的分布式數(shù)據(jù)庫產品以占據(jù)這個市場,其中不乏大型數(shù)據(jù)庫廠商,比如Microsoft 以及IBM,Oracle等,但是分布式數(shù)據(jù)庫技術不是簡單的將數(shù)據(jù)庫技術和網絡技術簡單結合就可以的,分布式數(shù)據(jù)庫系統(tǒng)有自己的特色,且由于數(shù)據(jù)的分布性,使得其技術發(fā)展一直存在一個很大的瓶頸,相關的基于分布式數(shù)據(jù)庫的應用的推廣也都被推遲甚至取消,數(shù)據(jù)操作完全透明,性能堪比本
36、地數(shù)據(jù)庫的商用系統(tǒng)還是很難見到。</p><p> 國內對于分布式數(shù)據(jù)庫的研究大概從上世紀80年代開始,比較有名的是由中科院和上??茖W技術大學以及華師大合作開發(fā)的C-Porel系統(tǒng)以及東北大學的DMD/FO 系統(tǒng),以及華中科技大學研制的DM2多媒體分布式數(shù)據(jù)庫,其在很大程度上解決了分布式數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)的透明共享的技術難題,對分布式數(shù)據(jù)庫技術的發(fā)展起到了積極地推動作用。</p><p>
37、 2.2 異構數(shù)據(jù)庫系統(tǒng)</p><p> 2.2.1 異構數(shù)據(jù)庫系統(tǒng)概述</p><p> 異構數(shù)據(jù)庫是指異構的多數(shù)據(jù)庫系統(tǒng)之間相互作用,在保證每個獨立的數(shù)據(jù)庫系統(tǒng)自身的應用特性、完整性控制和安全性控制的前提下,邏輯上形成一個統(tǒng)一的整體,使用戶訪問這些異構數(shù)據(jù)庫,如同訪問一個集中式數(shù)據(jù)庫一樣,不必關心各個局部數(shù)據(jù)庫之間的硬件不同、操作系統(tǒng)的不同、通訊方式的不同、DBMS不同和語義的
38、不同。建立異構數(shù)據(jù)庫系統(tǒng)的目的就是要屏蔽掉各局部數(shù)據(jù)庫的不同,建立統(tǒng)一的全局數(shù)據(jù)模式或全局外視圖,使用戶對數(shù)據(jù)庫進行透明訪問。</p><p> 2.2.2 異構數(shù)據(jù)集成現(xiàn)狀</p><p> 對異構數(shù)據(jù)的訪問、信息集成并不是一個新的課題,已經歷時二十多年的歷史了,經歷了專用網關、C/S(ODBC)結構、B/S(CORBA、DCOM/COM)結構。到目前Web Service的發(fā)展階段
39、。異構數(shù)據(jù)庫集成系統(tǒng)的研究一直是國內外數(shù)據(jù)庫領域中的一個研究熱點,幾家大型的數(shù)據(jù)庫廠商在其主流數(shù)據(jù)庫產品同構復制的基礎上,進一步提出了各自的方案,其中Oracle使用透明網關技術,IBM使用CCD(一致變化數(shù)據(jù)表),微軟公司則提出出版者/訂閱者方案。國外眾多的研究機構已經開展了這些方面的研究。</p><p> 比較著名的有美國的密歇根-迪兒波恩大學、斯坦福大學TSIMMIS等項目,國內研究機構比如華南農業(yè)大學
40、也進行了類似系統(tǒng)的研究,現(xiàn)有的主要系統(tǒng)列舉如下。</p><p> (1)TSIMMIS系統(tǒng):是一個研究多數(shù)據(jù)庫系統(tǒng)的產品。它采用對象交換模型(Object Exchange Model,OEM)。在該系統(tǒng)中,沒有模式和對象的概念,即沒有必要定義對象的結構,每個對象實例本身就已包含了它自己的模式。OEM采用一種稱為MSL(Mediator Specification Language)的查詢語言。中間件和封裝器
41、用MSL描述,而且這些組件可以通過MSL規(guī)格說明自動生成。TSIMMIS需要較多的人工干預,自動化集成程度低。</p><p> (2)MIND系統(tǒng):MIND是由IBM公司資助的一個基于CORBA的多數(shù)據(jù)庫項目,主要利用面向對象的技術,開發(fā)了兩個基本的組件:全局數(shù)據(jù)管理器,本地數(shù)據(jù)管理器,各自負責對數(shù)據(jù)的管理。</p><p> (3)ADDS(Amoco Distributed Da
42、tabase System):ADDS是Amoco公司推出的異構數(shù)據(jù)庫解決方案,它使用了一個擴展的關系代數(shù)查詢語言,支持ANSI SQL的一個子集。ADDS的全局數(shù)據(jù)庫模式是通過定義CDB(Composite Database)來建立的,即將局部數(shù)據(jù)庫(LDB)模式映射到聯(lián)邦模式上,并將該映射存儲到ADDS的數(shù)據(jù)字典中。用戶可以共享CDB,但是只有經過授權的用戶才能訪問指定的CDB。CDB支持的DBMS包括IMS,SQL/DS,DB2,
43、RIM,INGRES以及Focus。ADDS的工作環(huán)境主要是在VMS和MVS操作系統(tǒng)下的大型機以及Unix操作系統(tǒng)的Sun或Apollo工作站。ADDS保持了局部數(shù)據(jù)系統(tǒng)的獨立性,且不要求對局部數(shù)據(jù)庫上的應用程序做任何修改。目前ADDS還僅是一個原型系統(tǒng)。</p><p> (4)XHDQ(XML-based Heterogeneous Database Query):XHDQ是華南農業(yè)大學的一個受國家部委基金
44、資助的項日,它是一種以基于XML的異構數(shù)據(jù)庫查詢?yōu)楹诵牡南到y(tǒng),并在IBM WAS平臺下實現(xiàn)了其查詢核心系統(tǒng)的方法。其核心系統(tǒng)主要有以下六個部分組成:模式轉換器、XHDQ中間件、XHDQ應用程序、XHDQ客戶端、XHDQ服務器和異構數(shù)據(jù)庫。它通過使用XML文件作為中間形式來實現(xiàn)異構數(shù)據(jù)庫之間的集成。</p><p> (5)UUHBD系統(tǒng):北京理工大學的UUHDB系統(tǒng)是基于Client/Server結構的異構數(shù)據(jù)
45、庫聯(lián)合使用系統(tǒng),采用的全局查詢語言GSQL是ANSI SQL 86的子集,能進行透明地聯(lián)合查詢,支持的數(shù)據(jù)庫有Oracle、Informix和dBase,由于沒有進行查詢優(yōu)化,查詢效率較低。</p><p> 2.2.2 異構數(shù)據(jù)庫系統(tǒng)之間數(shù)據(jù)轉換以及集成</p><p> 每個DBMS都定義了自己系統(tǒng)的數(shù)據(jù)類型,但這些數(shù)據(jù)庫系統(tǒng)的基本數(shù)據(jù)類型基本上是一致的,如數(shù)值型(包括整型、實型、
46、浮點型、雙精度型等)、字符型、日期型等,這些基本類型為不同數(shù)據(jù)庫之間數(shù)據(jù)轉換提供了可能。隨著數(shù)據(jù)庫系統(tǒng)的發(fā)展和版本的不斷升級,不同數(shù)據(jù)庫數(shù)據(jù)類型的種類也在不斷的擴充、如超文本型、BLOB型和處理聲音等各種數(shù)據(jù)類型。這些又為數(shù)據(jù)庫系統(tǒng)之間數(shù)據(jù)轉換設置了不少的障礙。因此,分析數(shù)據(jù)類型的差別繼而將數(shù)據(jù)轉換成一個統(tǒng)一格式是實現(xiàn)不同數(shù)據(jù)關系轉換的重中之重。</p><p> 下表列出了MySQL和Oracle相對應的數(shù)據(jù)
47、類型,從下表可以看出,雖然兩者大體相同,但是還是有一部分數(shù)據(jù)類型有著較大差異,因此在做異構集成的時候,這也是必須要考慮的。</p><p> 表2.1 MySQL和Oracle數(shù)據(jù)類型對比</p><p> 表2.1 MySQL和Oracle數(shù)據(jù)類型對比(續(xù))</p><p> 現(xiàn)今常用的轉換方式主要有以下幾種。</p><p> (
48、1) 利用中間數(shù)據(jù)庫轉換</p><p> 在開發(fā)系統(tǒng)時可使用“中間數(shù)據(jù)庫”的辦法,即在實現(xiàn)兩個具體數(shù)據(jù)庫之間的轉換時,依據(jù)關系定義、字段定義,從源數(shù)據(jù)庫中讀出數(shù)據(jù)通過中間數(shù)據(jù)庫轉入到目的數(shù)據(jù)庫中。如圖2.2所示。</p><p> 圖2.2 數(shù)據(jù)轉換圖</p><p> 這種利用中間數(shù)據(jù)庫的轉換辦法,所需轉換模塊少,且擴展性強,但缺點是轉換不能實時完成,且轉
49、換時間長,對于需要實時訪問數(shù)據(jù)的應用來說效用不大。</p><p> (2) 利用ORM轉換</p><p> 現(xiàn)有的應用開發(fā)通常會用到ORM(Object-relational mapping)工具,在.NET環(huán)境下通常會使用到的是NHibernate和Entity Framework,其優(yōu)點是可以實時的檢索各個數(shù)據(jù)庫的數(shù)據(jù),相比較第(1)種方式而言,其更具有可行性。其應用開發(fā)架構如
50、圖2.3所示。</p><p> 圖2.3 開發(fā)架構圖</p><p> 2.3 各種異構、分布數(shù)據(jù)信息集成技術的比較</p><p> 2.3.1 ODBC技術</p><p> 微軟于1991年11月提出了一個ODBC(Open Database Connectivity)開放型數(shù)據(jù)庫互聯(lián)體系結構的數(shù)據(jù)訪問標準,作為訪問數(shù)據(jù)庫的統(tǒng)
51、一界面標準,使用戶具有對其它各種異種數(shù)據(jù)庫系統(tǒng)的訪問能力。ODBC是基于結構化查詢語言(SQL),使用SQL可大大簡化其應用程序設計接口(API),由于ODBC標準思想上的先進性,只要數(shù)據(jù)庫廠商提供的開發(fā)包支持這個標準,那么開發(fā)人員通過ODBC開發(fā)的程序可以在不同的數(shù)據(jù)庫之間自由轉換。因而越來越受到眾多廠家和用戶的青睞。目前,ODBC已經成為客戶機/服務器(C/S)系統(tǒng)中的一個重要支持技術。</p><p>
52、圖2.4 ODBC的結構圖</p><p> ODBC的結構如圖2.4所示。ODBC是一種用來在相關或不相關的數(shù)據(jù)庫管理系統(tǒng)中存取數(shù)據(jù)的標準API。ODBC為應用程序提供了一套高層調用接口規(guī)范和基于動態(tài)鏈接庫的運行支持環(huán)境。</p><p> 應用程序本身不直接與數(shù)據(jù)庫打交道,主要負責處理并調用ODBC函數(shù),發(fā)送對數(shù)據(jù)庫的SQL請求及取得結果。</p><p>
53、 目前,常用的數(shù)據(jù)庫應用開發(fā)的前端工具如Visual Studio,Delphi等都支持通過ODBC接口來連接各種數(shù)據(jù)庫系統(tǒng)。而多數(shù)數(shù)據(jù)庫管理系統(tǒng)(如:Oracle、Sybase、MySQL,SQL Server等)都提供了相應的ODBC驅動程序,使數(shù)據(jù)庫系統(tǒng)具有很好的開放性。</p><p> 采用ODBC技術較好的解決了對異種數(shù)據(jù)庫的訪問、信息共享問題,但是,ODBC不能實現(xiàn)在Internet上的異種數(shù)據(jù)
54、庫的互聯(lián)。由于C/S的體系結構使得客戶機和服務器之間形成緊耦合關系,使得在分散的客戶機上存放大量的應用邏輯,也不便于整個系統(tǒng)的維護,因此,不能有效地解決分布范圍大的異種數(shù)據(jù)庫的互聯(lián)問題。</p><p> 2.3.2 CORBA</p><p> CORBA(Common Object Request Broker Architecture)是由OMG提出的應用軟件體系結構和對象技術規(guī)
55、范,其核心是一套標準的語言、接口和協(xié)議,以支持異構分布應用程序間的互操作性及獨立于平臺和編程語言的對象重用。一些主要的ORB供應商的產品如:IBM的ComponentBroker、Iona的Orbix和Inprise的VisiBroker[2]。如圖2.5所示。</p><p> 圖2.5 CORBA ORB 架構</p><p> 在CORBA運行體系結構中,包含了下面幾個主要的元素
56、:</p><p> (1)接口(Interface)與IDL語言</p><p> 接口(Interface)是一組相關函數(shù)的集合。它代表了對象的服務能力,是為客戶提供操作對象的唯一方法。接口中每一個函數(shù)都必須給出了詳細的說明,包括函數(shù)名、參數(shù)個數(shù)、參數(shù)類型、返回類型以及可能拋出的異常。在接口中,只定義了函數(shù)的原型,具體的函數(shù)由開發(fā)者實現(xiàn)。接口通過接口描述語言(IDL,Interfa
57、ce Description Language)來定義。雖然IDL語言只提供了被ORB操作的對象的概念框架,但是ORB在運行時并不需要IDL的源代碼。只要樁例程或運行狀態(tài)下接口庫中的等價信息是可用的,ORB就能通過特定的方式完成其功能。</p><p> (2)樁(Stub)和構架(Skeleton)</p><p> 樁(Stub)可以被看成是服務端的實際對象在客戶端的映像,其中的接
58、口是預先定義好的。它為客戶進程提供了一種靜態(tài)的遠程調用服務端對象的方式。與客戶端的樁相對應的是服務端的構架(Skeleton),它為服務器提供了一種靜態(tài)的實現(xiàn)方式。IDL編譯器翻譯描述對象接口的IDL文件,生成對應具體編程語言的IDL樁和IDL構架。樁負責將客戶請求進行編碼,發(fā)送到對象實現(xiàn)端,并對收到的結果進行解釋,然后把結果或異常返回給客戶。與此相反,構架對客戶的請求進行解碼,定位目標對象和請求執(zhí)行的對象方法,激活該方法,然后把結果或
59、異常信息編碼返回給客戶端。</p><p> (3)動態(tài)調用接口和動態(tài)構架接口</p><p> 與樁和構架不同,動態(tài)調用接口(DII,Dynamic Invocation Interface)和動態(tài)構架接口(DSI,Dynamic Skeleton Interface)提供了動態(tài)調用的方式和動態(tài)實現(xiàn)的方式,它們使得用戶可以在事先不知道對象接口信息的情況下通過查詢接口庫或采取其它手段動
60、態(tài)地獲得對象接口信息,然后使用ORB核心接口中的DII動態(tài)調用方法構造客戶請求并發(fā)送到對象實現(xiàn)。在對象實現(xiàn)方可以使用DSI的動態(tài)分發(fā)機制處理客戶方的請求。與靜態(tài)方式相比,動態(tài)方式提供了很大的靈活性,但是它的工作效率沒有靜態(tài)方式高。另外,實現(xiàn)系統(tǒng)的接口大多可以預先確定,所以大部分情況下都是采用靜態(tài)方式。</p><p> (4)ORB核心和對象適配器</p><p> ORB核心是整個C
61、ORBA體系架構基礎。ORB核心通過屏蔽諸如服務器位置、實現(xiàn)方式、通信協(xié)議等具體細節(jié)為客戶端與服務器端之間的通信提供了透明的傳輸機制,從而實現(xiàn)遠程調用。對象適配器(OMA)主要完成對各種不同對象的定位的功能。</p><p> 2.3.3 COM/DCOM技術</p><p> DCOM(分布式組件對象模型)基于COM(組件對象模型),是Microsoft,DEC等公司的分布式計算策略
62、。1996年Microsoft提出的DCOM是基于以下一個簡單的思想:在DCOM協(xié)議的支持下,不同應用程序可以透過網絡進行互操作。它擴展了組件對象模型技術(COM),使其能夠支持在網絡上不同計算機的對象之間的通訊??梢栽谝粋€應用程序中(或DLL連接庫)創(chuàng)建對象,而從駐留在另外一臺機器上的程序中通過接口調用此對象的方法。這樣應用程序就可以在位置上實現(xiàn)分布性,從而滿足客戶和應用的需求[3]。DCOM的體系結構如圖2.6所示:</p&g
63、t;<p> 圖2.6 DCOM的體系結構</p><p> DCOM由五個部分的組成:</p><p> (1)對象初始化組件??蛻粽{用諸如CoCreateInstance等創(chuàng)建實例函數(shù)在組件端創(chuàng)建一個新的實例。</p><p> (2)在客戶端和服務端之間傳遞數(shù)據(jù)的組件,即圖中的Proxy Object/Stub。</p>&
64、lt;p><b> (3)安全組件。</b></p><p> (4)DCE RPC組件。</p><p> (5)低級協(xié)議棧和DCOM網絡協(xié)議組件。</p><p> 2.3.4 Web Service技術</p><p> Web Service是一種開放的分布式應用程序的模型,它能在所有支持Inte
65、rnet通訊的操作系統(tǒng)上實現(xiàn)。使用Web Service技術可以以獨立于平臺的方式,通過標準的Web協(xié)議,建立可以由應用程序通過網絡訪問的應用程序邏輯單元。Web Service技術的體系架構如圖2.7所示:</p><p> 圖2.7 Web Service 體系架構</p><p> 上圖從分層的角度描述了Web Service的整體架構,其中包括了Web Service協(xié)議棧。與
66、網絡的分層結構相同,上一層需要下一層的支持。而安全性、可管理性、服務質量則需要在各個層次都有所體現(xiàn)。Web Service協(xié)議棧的基礎是網絡層。Web Service要被服務請求者調用,就必須是可以通過網絡訪問的。Internet上可以公用的Web Service使用普遍部署的網絡協(xié)議。HTTP憑借其普遍性,成為了Internet上可用Web Service真正的標準網絡協(xié)議。Web Service還可以支持其它因特網協(xié)議。</p
67、><p> XML是Web Service的數(shù)據(jù)編碼的標準。XML是一種通用的數(shù)據(jù)表示法,用插入標記的方法把文本流轉化為一個內部結構可能高度復雜的數(shù)據(jù)對象。它不僅有助于為Web描述新文檔的格式,而且也適用于描述結構化的數(shù)據(jù)[4]。</p><p> SOAP以XML標準封裝調用遠程服務的格式,有別于其它分布式對象模型調用特定的調用格式,例如CORBA的GIOP以及DCOM的ORPC[5]。
68、由于SOAP以XML封裝調用格式,因此它可以使用任何的實體傳輸層來傳送,例如HTTP,TCP或是SMTP等。SDL定義了服務交互的接口和結構,是基于XML的服務描述的標準。WSDL使用XMLschema來描述Web Service的結構。</p><p> UDDI注冊和發(fā)布Web Service。UDDI使用XML計劃定義注冊表的結構,使用SOAP指定與注冊表的通信。</p><p>
69、 2.3.5 XML技術</p><p> 1)XML技術的特點</p><p> XML(Extensible Markup Language,可擴展性標記語言)是由互聯(lián)網聯(lián)合組織(W3C)于1998年2月設計并推薦的新一代標記語言,是一種類似于HTML的被設計用來描述數(shù)據(jù)的標記語言,即用于定義標記語言的元約束和元語言的集合。XML是SGML(Standard Generalize
70、d Markup Language)的一個優(yōu)化子集。</p><p> 它將SGML的豐富功能與HTML的易用性結合到Web應用中,以一種開放的自我描述方式定義數(shù)據(jù)結構,在描述數(shù)據(jù)內容的同時能突出對結構的描述,從而體現(xiàn)數(shù)據(jù)之間的關系。</p><p> XML作為Internet上數(shù)據(jù)描述和交換的新標準[6],主要有以下幾個特點:</p><p> (1)可擴
71、展性強:XML是元標記語言,可以根據(jù)應用的需要,創(chuàng)建應用于各種各樣情況下的標記語言;</p><p> (2)結構性強:XML的文件結構可以嵌套到任意程度,能用來表示面向對象的等級層次;</p><p> (3)交互性好:通過使用XML,用戶可以非常方便地在本地進行數(shù)據(jù)操作,不需與服務器交互,減輕了服務器的負擔;</p><p> (4)語義性強:XML可以自
72、定義標記,以利于異構系統(tǒng)之間的數(shù)據(jù)交換和信息檢索,實現(xiàn)機器與機器之間的信息交換;</p><p> (5)純文本:幾乎任何工具都可創(chuàng)建和編輯XML;</p><p> (6)基于內容的數(shù)據(jù)標識:可以被不同程序用于不同目的;</p><p> (7)可格式化:可擴展樣式語言XSL可以指定如何顯示數(shù)據(jù)。數(shù)據(jù)和顯示是分離的,可以為同一數(shù)據(jù)指定不同的樣式表用于不同輸出
73、;</p><p> (8)極強的鏈接能力:可以定義雙向鏈接、多目標鏈接、擴展鏈接和兩個文檔間的鏈接;</p><p> (9)易于處理:XML對格式的定義嚴格,具有層次結構,而且與廠商無關;</p><p> (10)與平臺無關:XML的出現(xiàn)為不同系統(tǒng)之間提供了一個溝通的平臺,充當信息傳遞的媒介。XML文檔無需做任何更改,即可移植到其它平臺上。</p&
74、gt;<p><b> 2)XML規(guī)范</b></p><p> 自從XML 1.0規(guī)范發(fā)布之后,XML的有關技術規(guī)范不斷涌現(xiàn),有的還處在草案階段[5]。與XML有關的重要技術規(guī)范還包括DTD,Schema,SAX,DOM,CSS,XSL,Xpath,Xlink,Xpoint,XQuery等眾多規(guī)范。它們與XML的關系如圖2.8所示。</p><p>
75、; 圖2.8 XML和相關技術關系圖</p><p> 下面分別介紹與本文相關的技術規(guī)范:DTD、XML Schema、XSL、CSS、SAX、DOM和Xpath。</p><p> (1)DTD(Document Type Definition):用來規(guī)定文檔的邏輯結構[7]。它可以定義文檔的語法,而文檔的語法反過來能夠讓XML語法分析程序確認某張頁面標記使用的合法性。DTD定義頁
76、面的元素、元素的屬性以及元素和屬性之間的關系。對于簡單應用程序來說,開發(fā)商不需要建立自己的DTD。DTD不是強制性的??梢允褂妙A先定義的公共DTD,或者根本就不使用。即使某個文檔己經有了DTD,只要文檔是組織良好的,語法分析程序也可以不對照DTD來檢驗文檔的合法性。服務器可能己經執(zhí)行了檢查,所以檢驗的時間和帶寬將得以節(jié)省。DTD的功能很多:如定義內容模式、限制范圍、屬性的數(shù)據(jù)類型等。但它也有缺陷:它不支持namespace,只提供了非常
77、有限的幾種數(shù)據(jù)類型。更重要的是它不能表達元素中字符數(shù)據(jù)的數(shù)據(jù)類型。DTD有擴展的機制,但這個機制太復雜而且很脆弱。DTD擴展的機制的最大毛病在于不能清楚的表達相互之間的關系,兩個有著完全相同內容的元素怎么做也不能互相聯(lián)系。同樣地,一組被定義為參數(shù)體(parameter entity)的屬性之間不能建立任何聯(lián)系。</p><p> (2)XML Schema:是伴隨著XML 1.0規(guī)范的制訂而推出的[8]。XML
78、 Schema是DTD之后第二代用來描述XML文件的標準,是用來對XML進行文檔類型定義的語言,用來規(guī)定XML文檔的數(shù)據(jù)類型及組織方式,同時還是豐富的元數(shù)據(jù)資源。所謂XML Schema,其實就是一種描述信息結構的模型。它借用數(shù)據(jù)庫中一種描述相關表格內容的機制,為XML文件樹立了一個模式。這個模式規(guī)范了文件和文本可能的組合形式。XML Schema擁有許多類似DTD的準則,但又要比DTD更強一些。XML Schema打破了許多限制,它能
79、更加清晰的表現(xiàn)信息之間的內容。</p><p> (3)XML Schema主要有以下幾個特點:</p><p> 一致性:與DTD不同,Schema使得對XML的定義不必再利用一種特定的形式化的語言,而是直接借助XML自身的特性,利用XML的基本語法規(guī)則來定義XML文檔的結構,使得XML達到了從內到外的完美統(tǒng)一,也為XML的進一步發(fā)展奠定了堅實的基礎。</p><
80、p> 擴展性:Schema對DTD進行了擴充,引入了數(shù)據(jù)類型(包括布爾型、數(shù)字、日期時間、整數(shù)、十進制數(shù)、實數(shù)、時間間隔、以及由這些簡單的類型生成復雜的類型等),從而使其具有較強的可擴展性。</p><p> 互換性:利用Schema能夠書寫XML文檔以及驗證文檔的合法性。另外,通過特定的映射機制,還可以將不同的Schema進行轉換,以實現(xiàn)更高層次的數(shù)據(jù)交換。</p><p>
81、 規(guī)范性:同DTD一樣,Schema也提供了一套完整的機制以約束XML文檔中置標的使用。相比之下,后者基于XML更具有規(guī)范性。Schema利用元素的內容和屬性來定義XML文檔的整體結構,如哪些元素可以出現(xiàn)在文檔中,元素間的關系是什么,每個元素有哪些內容和屬性,以及元素出現(xiàn)的順序和次數(shù)等,可一目了然。</p><p> XML解析器:簡單來講,一個XML解析器就是一段可以讀入XML文檔并分析其結構的代碼[9]。目
82、前,廣泛使用的解析器主要有:IBM公司的XML 4J,Microsoft公司的MS XML,Oracle公司的XML Parser for Java和SUT公司的ProjectX。針對XML標準的支持程序而言,其中當屬SUN公司的解析器表現(xiàn)最為出色。有多種不同的方法劃分解析器種類,例如按是否支持完整性檢查分類和按處理文檔的方式分類。根據(jù)對文檔的不同處理方式,可分為基于SAX的解析器和基于DOM的解析器。前者由事件驅動,通過串行的方式來處
83、理文檔,即當遇到一個開始或者結束標記的時候,它向應用程序發(fā)送消息,由應用程序決定如何進行處理。后者則根據(jù)文檔內容建立一個層次的數(shù)據(jù)結構,提供用戶一個操作文檔的接口。Java為解析及轉換XML文檔提供了一套標準的API。該API的設計獨立于任何特定的XML處理器實現(xiàn)。2002年夏天SUN發(fā)布了Java XML包,其中包括了Xerces2的參考版,將其作為它的默認XML解析器,并且將Xalan作為它的默認XSLT引擎。</p>
84、<p> (4)SAX(Simple API XML)是一個基于事件的XML文檔解析標準。與AWT中的事件驅動機制相類似,SAX通過事件驅動來識別XML文檔的內容,即當它在XML文檔中發(fā)現(xiàn)特殊符號時,它就會觸發(fā)相關的事件。由于SAX的這一特性,使應用程序開發(fā)人員可以在相應的事件中寫入特定的處理代碼。SAX以序列的形式處理文檔,不需要在內存中建立整個文檔的樹型結構,因此與DOM相比,SAX對內存的需求要少得多,可認為是一個輕
85、量級的接口集合。</p><p> 圖2.9 SAX解析XML文檔的流程</p><p> (5)DOM(Document Object Model)是W3C發(fā)展的瀏覽XML文檔的一種標準API,它不僅提供了對存儲在內存中的XML文檔的一個完整表示,也提供了隨機訪問整個文檔的方法。因此,可將DOM看作一個標準的連接文檔和應用程序或腳本語言的結構體系,DOM提供給用戶一個接口以裝載、定位
86、、操作和序列化XML文檔。如圖所示,CSS是級聯(lián)樣式單,儲存并控制元素的顯示樣式,例如字體、顏色等;Script腳本控制元素如何動作,例如利用條件控制語句對元素進行不同的操作等;而DOM則作為腳本和對象的通信平臺,并將結果提交給瀏覽器。</p><p> 圖2.10 DCOM解析XML文檔的流程</p><p> 通過DOM,用戶能夠把文檔看成是一個有結構的信息樹,而不僅僅是簡單的文本
87、流。這樣應用程序或腳本即使不知道XML的語義細節(jié)也能夠方便的操作結構。DOM包含兩個關鍵的抽象:一是樹狀層次,二是表示文檔內容和結構的節(jié)點集合。樹狀層次包括了所有這些節(jié)點,節(jié)點本身也可以包含其它的節(jié)點,這就使得開發(fā)人員能夠通過這個層次結構找到并修改特定節(jié)點的信息。DOM把節(jié)點看成是一個通常的對象,這樣就有可能創(chuàng)建一個腳本來裝載一個文檔,然后遍歷所有的節(jié)點,顯示感興趣的節(jié)點的信息。</p><p> DOM操作X
88、ML文檔時,首先讀取該文檔,然后將其分割成單個的對象(例如元素、屬性、注釋等),再在內存中創(chuàng)建一個關于該文檔的樹結構[10]。DOM解析方式使得開發(fā)人員能夠反復使用該文檔信息,但當文檔很大時,所需消耗的內存空間就非常可觀。</p><p> 無論是DOM還是SAX,都各自有其優(yōu)缺點,它們將長期并存下去,在不同的應用中發(fā)揮不同的作用。</p><p> (6)Xpath:被Xpointe
89、r,XSL和XQuery當作基礎來使用。XPath提供通用標點表示,它們可以定位一個XML文檔結構內的任何節(jié)點或節(jié)點集。</p><p> XSL和CSS:XML的一個最重要的特性是把內容和顯示格式分開。這樣帶來了很大的好處,可以讓不同的用戶按照各自希望的格式顯示同一XML文檔的數(shù)據(jù)內容。這也就意味著XML文檔本身并沒有關于格式方而的信息。為XML文檔提供格式信息的是樣式表,適用于XML文檔的樣式表語言有XSL
90、和CSS語言。</p><p> CSS語言既可以用于HTML文檔、也可以用于XML文檔;而XSL是專為XML設計的樣式表語言,并采用XML語法。XSL的優(yōu)勢在于它可以用于轉換,當然XSL也可以把XML文檔轉換為HTML格式。而且同一個樣式表可以用于多個具有相似源樹結構的文檔。顯示的媒介不僅限于Web瀏覽器,還可以是印在紙上的書和報告等。</p><p> 3)XML與異構數(shù)據(jù)庫集成&
91、lt;/p><p> 由于XML所具有的特性和優(yōu)越性,使得它非常適合應用于異構數(shù)據(jù)庫集成這一領域。可采用XML作為數(shù)據(jù)集成的互操作語言,利用DTD或Schema描述標準格式。DOM和SAX提供了開放的編程接口[11]。這些特征表明了XML技術可以作為異構數(shù)據(jù)庫集成的可行方案,具體表現(xiàn)在以下幾個方面:</p><p> (1)由于XML的自定義性及可擴展性,它足以表達各種類型的數(shù)據(jù),作為獨立
92、于平臺和設備的結構化數(shù)據(jù)表達方式,能夠有效地實現(xiàn)異構數(shù)據(jù)庫的集成。</p><p> (2)XML不僅與平臺無關,而且與廠商無關。所以將XML作為數(shù)據(jù)通道可以解決異構數(shù)據(jù)庫之間的互操作問題。</p><p> (3)XML為各異構數(shù)據(jù)庫提供了一層理想的緩沖,將XML作為數(shù)據(jù)傳輸?shù)闹薪楦袷?,異構?shù)據(jù)庫之間可以保持透明性,不需要知道對方的內部存儲格式。某個局部數(shù)據(jù)庫內部數(shù)據(jù)的變更,也不會影
93、響其它數(shù)據(jù)庫。</p><p> (4)XML實現(xiàn)了異構數(shù)據(jù)庫的“即插即用”。因為新數(shù)據(jù)庫的加入,只需要修改相應的數(shù)據(jù)模式文件。</p><p><b> 3 本文用到的技術</b></p><p><b> 3.1 REST</b></p><p> REST(Representation
94、alStateTransfer),即表述性狀態(tài)轉移,其根本是像萬維網(www)一樣是為分布式超媒體系統(tǒng)設計的一種架構風格,它是由RoyThomasFielding博士2000年提出的一個術語,F(xiàn)ielding同時也是制定HTTP協(xié)議規(guī)則的作者之一。</p><p> REST架構風格是基于HTTP1.0協(xié)議和1.2協(xié)議發(fā)展起來的,它是Fielding博士對當前Web體系結構潛在設計原則的一種描述和對Web最成功
95、要素的總結。REST架構風格是全新的針對Web應用的開發(fā)風格,是當今世界最成功的互聯(lián)網超媒體分布式系統(tǒng)架構之一,它使得人們真正深入理解和利用了HTTP協(xié)議。</p><p> REST架構風格由客戶端和服務器端組成,客戶端發(fā)出初始請求給服務器端,服務器端處理請求,并返回合適的響應。請求與響應圍繞著資源表示的轉移。REST規(guī)定了一系列的約束,強調了系統(tǒng)各組件間的可伸縮性、接口的統(tǒng)一性,從而減少交互數(shù)據(jù),使服務器端
96、和客戶端松藕合[12]。</p><p> 下圖描述了REST架構中的約束:在請求方面,規(guī)定了客戶端發(fā)起請求的協(xié)議、使用的方法以及在請求中包含自描述的信息,即包含服務器處理該請求所需要的全部信息;在處理方面,規(guī)定了服務器針對不同的請求可以有多重表述以及包含應用狀態(tài)的超鏈接,從而使客戶端不依賴任何領域專業(yè)知識,實現(xiàn)狀態(tài)的跳轉等等。</p><p> 圖3.1 REST架構圖</p&
97、gt;<p> 所謂架構風格就是一組互相協(xié)作的約束,這些約束限制了架構中元素的角色和功能,以及任何允許存在的元素之間的關系。REST架構風格為了反映現(xiàn)在web發(fā)展的方向,定義了如下約束[13]。</p><p> (1)客戶 -- 服務器</p><p> 客戶--服務器約束背后的原則是分離關注點,例如,客戶端不關心數(shù)據(jù)存儲,交由服務器內部處理,就可以改善用戶接口跨多個
98、平臺的可移植性;同時服務器不關心用戶接口和用戶狀態(tài),就可以簡化服務器組件,改善了系統(tǒng)的可伸縮性。只要接口不發(fā)生改變,服務器和客戶端還可以自行升級和替換。</p><p><b> (2)無狀態(tài)</b></p><p> 通信必須在本質上是無狀態(tài)的,因此從客戶到服務器的每個請求都必須包含理解該請求所必需的全部信息,不能利用任何存儲在服務器的上下文、會話狀態(tài),因此要全
99、部保存在客戶端。服務器是可以有狀態(tài)的,只是服務器端狀態(tài)必須像資源一樣通過URL來定位。這個約束不僅極大的簡化了分布式、集群的開發(fā)過程,還改善了監(jiān)視系統(tǒng)的可見性,提高了從局部故障中恢復、迅速釋放資源的可靠性和可伸縮性。</p><p><b> (3)可緩存</b></p><p> 為了改善網絡效率,客戶端能夠緩存應答數(shù)據(jù)可緩存約束要求一個請求的響應必須隱式或者顯
100、式被標記成可緩存的或者不可緩存的,以防止在后續(xù)的請求中濫用陳舊或者不合適的數(shù)據(jù)。設計良好的緩存能部分或者完全消除客戶--服務器的交互,明顯提高系統(tǒng)的可擴展性和效率。</p><p><b> (4)統(tǒng)一接口</b></p><p> 使REST架構風格區(qū)別于其他Web的架構風格的核心特征是,它強調組件之間要有一個統(tǒng)一的接口。例如:使用HTTP協(xié)議把對一個URL的操
101、作限制在了4個方法之內:GET、POST、PUT和DELETE。統(tǒng)一的接口極大的簡化并解釋了客戶--服務器架構,使它們能獨自處理事務,從而改善了系統(tǒng)的交互性與可重用性。</p><p> 3.2 WCF Data Service</p><p> WebService:嚴格來說是行業(yè)標準,不是技術,使用XML擴展標記語言來表示數(shù)據(jù)(這個是夸語言和平臺的關鍵)。微軟的Web服務實現(xiàn)稱為A
102、SP.NET Web Service.它使用Soap簡單對象訪問協(xié)議來實現(xiàn)分布式環(huán)境里應用程序之間的數(shù)據(jù)交互。WSDL來實現(xiàn)服務接口相關的描述。此外Web services 可以注冊到UDDI中心.供其客戶查找使用。后來微軟做了ASP.NET Web Service的安全,性能,數(shù)據(jù)加密、解密,托管宿主等多方面的擴展,稱為WSE系列,這個是過度產品,最高到WSE3.0.后來就是WCF時代。</p><p> W
103、CF:其實一定程度上就是ASP.NET Web Service,因為它支持Web Service的行業(yè)標準和核心協(xié)議[14],因此ASP.NET Web Service和WSE能做的事情,它幾乎都能勝任,跨平臺和語言更不是問題(數(shù)據(jù)也支持XML格式化,而且提供了自己的格式化器)。</p><p> 但是WCF作為微軟主推一個通訊組件或者平臺,它的目標不僅僅是在支持和集成Web Service,因為它還兼容和具備
104、了微軟早期很多技術的特性。根據(jù)微軟官方的解釋,WCF(之前的版本名為“Indigo”)是使用托管代碼建立和運行面向服務(Service Oriented)應用程序的統(tǒng)一框架。它使得開發(fā)者能夠建立一個跨平臺的安全、可信賴、事務性的解決方案,且能與已有系統(tǒng)兼容協(xié)作。WCF是微軟分布式應用程序開發(fā)的集大成者,它整合了.Net平臺下所有的和分布式系統(tǒng)有關的技術,如Enterprise Sevices(COM+).Net Remoting、Web
105、 Service(ASMX)、WSE3.0和MSMQ消息隊列。以通信(Communiation)范圍而論,它可以跨進程、跨機器、跨子網、企業(yè)網乃至于Internet;以宿主程序而論,可以以ASP.NET,EXE,WPF,Windows Forms,NT Service,COM+作為宿主(Host)。WCF可以支持的協(xié)議包括TCP,HTTP,跨進程以及自定義,安全模式則包括SAML, Kerberos,X509,用戶/密碼,自定義等多種標
106、準與模</p><p> WCF數(shù)據(jù)服務是.NET Framework的一個組件。可以使用此組件創(chuàng)建一些服務,利用開放式數(shù)據(jù)協(xié)議(OData)來借助具象狀態(tài)傳輸(REST)語義通過Web或 Intranet公開和使用數(shù)據(jù)。OData將數(shù)據(jù)公開為可通過 URI 尋址的資源。可使用GET、PUT、POST 和 DELETE 這些標準 HTTP 謂詞來訪問和更改數(shù)據(jù)。OData使用Entity Data Model的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于WEB服務的分布式異構數(shù)據(jù)庫集成研究與實現(xiàn).pdf
- 基于Web Service技術的分布式異構數(shù)據(jù)庫的集成.pdf
- 基于門戶和Web Services技術的分布式異構數(shù)據(jù)庫的集成.pdf
- 基于.netremoting的分布式數(shù)據(jù)庫異構集成的研究
- 基于Web服務的分布式異構數(shù)據(jù)庫增量同步更新應用研究.pdf
- 基于.net的webservice技術的分布式異構數(shù)據(jù)庫的集成
- 基于JMS與Web Service的分布式異構數(shù)據(jù)庫同步的研究.pdf
- 基于Web服務封裝的異構數(shù)據(jù)庫集成與同步設計.pdf
- 分布式異構數(shù)據(jù)庫集成統(tǒng)一查詢系統(tǒng).pdf
- 基于XML的分布式異構數(shù)據(jù)庫同步研究與設計.pdf
- 基于Web服務的分布式數(shù)據(jù)庫共享模型的研究.pdf
- 基于分布式數(shù)據(jù)庫的信息集成.pdf
- 基于WEB的分布式數(shù)據(jù)庫查詢.pdf
- 分布式異構數(shù)據(jù)庫集成與透明訪問的研究與實現(xiàn).pdf
- 基于CSCW的分布式異構數(shù)據(jù)庫的研究與實現(xiàn).pdf
- 基于Web Service異構數(shù)據(jù)庫信息集成的研究.pdf
- 基于XML的分布式異構數(shù)據(jù)庫同步系統(tǒng)研究.pdf
- 異構分布式數(shù)據(jù)庫數(shù)據(jù)同步系統(tǒng)設計與實現(xiàn).pdf
- 基于分布式數(shù)據(jù)庫WEB應用系統(tǒng)設計與實現(xiàn).pdf
- 基于移動Agent的分布式異構數(shù)據(jù)庫訪問技術研究.pdf
評論
0/150
提交評論