QL Server 2005 Compact Edition(本文以后均將SQL Server 2005 Compact Edition縮寫為SQL Server CE)是微軟推出的一個(gè)適用于嵌入到移動(dòng)應(yīng)用的精簡(jiǎn)數(shù)據(jù)庫(kù)產(chǎn)品,Windows Mobile開發(fā)人員能夠使用SQL Server CE開發(fā)出將數(shù)據(jù)管理能力延展到Window Mobile移動(dòng)設(shè)備上的應(yīng)用程序。雖然SQL Server CE占用的磁盤空間只有3到5兆左右,但是它功能并沒(méi)有像它的容量那樣大幅度縮水。SQL Server CE不但提供了完整的SQL語(yǔ)法,包括內(nèi)部聯(lián)接、外部聯(lián)接和子查詢,還內(nèi)置了數(shù)據(jù)同步技術(shù)的支持。有一點(diǎn)要注意的是,SQL Server 2005 Compact Edition除了可以作為移動(dòng)數(shù)據(jù)庫(kù)在Windows Mobile設(shè)備上運(yùn)行外,它也支持在PC上存放數(shù)據(jù),為桌面的應(yīng)用程序提供數(shù)據(jù)支持。
下面是SQL Server 2005 Compact Edition的一些主要功能:
·精簡(jiǎn)的數(shù)據(jù)庫(kù)引擎和強(qiáng)大的查詢優(yōu)化器。
·支持合并復(fù)制與遠(yuǎn)程數(shù)據(jù)訪問(wèn) (RDA)。
·SQL Server Compact Edition與SQL Server Management Studio 和Visual Studio 2005 完全集成。通過(guò)SQL Server Management Studio,可以用可視化的方式來(lái)創(chuàng)建SQL Server Compact Edition 數(shù)據(jù)庫(kù)、查看數(shù)據(jù)庫(kù)對(duì)象、創(chuàng)建表、修改表以及執(zhí)行交互式查詢等一系列操作。
·遠(yuǎn)程數(shù)據(jù)訪問(wèn)和合并復(fù)制,用于同步數(shù)據(jù)。
·.NET Framework和用于SQL Server Compact Edition的 .NET Compact Framework 數(shù)據(jù)訪問(wèn)接口 (System.Data.SqlServerCe)。
·支持用于SQL Server Compact Edition的ADO.NET 和OLE DB訪問(wèn)接口。
·SQL語(yǔ)法的子集。
·在臺(tái)式機(jī)、移動(dòng)設(shè)備和 Tablet PC上部署為嵌入式數(shù)據(jù)庫(kù)。
·支持ClickOnce部署技術(shù)。
其實(shí)說(shuō)SQL Server CE是SQL Server 2005的精簡(jiǎn)版本一點(diǎn)都不為過(guò),因?yàn)镾QL Server CE提供了SQL Server 2005的豐富子集,使你能夠充分利用現(xiàn)有的SQL Server技能。除此之外,你還可以充分利用現(xiàn)有的數(shù)據(jù)庫(kù)編程技能和經(jīng)驗(yàn),因?yàn)镾QL Server CE為托管應(yīng)用程序提供了一個(gè)ADO.NET庫(kù),并為本機(jī)應(yīng)用程序提供了一個(gè)OLEDB庫(kù),這兩個(gè)庫(kù)都SQL Server 2005的對(duì)應(yīng)庫(kù)保持一致(本專題只介紹如何使用ADO.NET對(duì)SQL Server CE進(jìn)行操作),簡(jiǎn)化了在Windows Mobile設(shè)備上開發(fā)數(shù)據(jù)管理應(yīng)用程序的難度。
SQL Server CE數(shù)據(jù)庫(kù)引擎不但提供了關(guān)系型數(shù)據(jù)庫(kù)的基本功能,還提供了兩個(gè)非常重要的技術(shù),那就是遠(yuǎn)程數(shù)據(jù)訪問(wèn)和合并復(fù)制。這兩種方法都是用來(lái)實(shí)現(xiàn)與遠(yuǎn)程數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)同步的,使得我們可以很容易將遠(yuǎn)程數(shù)據(jù)庫(kù)中的信息加載到設(shè)備端的SQL Server CE數(shù)據(jù)庫(kù)中,此外我們還可以在離線狀態(tài)下對(duì)SQL Server CE數(shù)據(jù)庫(kù)進(jìn)行插入、刪除、更新等修改操作,最后就可以將修改后的數(shù)據(jù)回發(fā)到遠(yuǎn)程數(shù)據(jù)庫(kù)中,確保了設(shè)備端和服務(wù)器端的數(shù)據(jù)同步。
Windows Mobile 6.0對(duì)SQL Server 2005 Compact的支持 在微軟剛剛發(fā)布的Windows Mobile 6.0中,已經(jīng)在ROM中內(nèi)置了 .NET Compact Framework 2.0 Service Pack 1 (SP1) 和SQL Server 2005 Compact Edition,這就意味著我們?cè)陂_發(fā)托管代碼程序時(shí),無(wú)需再將.NET Compact Framework 和SQL Server CE部署到目標(biāo)設(shè)備上。不但減少了部署應(yīng)用程序所需的時(shí)間和開銷,也將加快傳統(tǒng)的本地代碼向托管代碼的遷移(Windows Form之所以沒(méi)有得到廣泛的應(yīng)用,就是因?yàn)閣indows xp系統(tǒng)中沒(méi)有內(nèi)置.NET Framework。這也就是為什么現(xiàn)在Vista操作系統(tǒng)都包含了.NET Framework 3.0的原因,為的就是WPF可以在Vista系統(tǒng)上得到廣泛的普及和應(yīng)用)。
除此之外,不但應(yīng)用程序在使用 .NET Compact Framework 2.0時(shí)比在使用 .NET Compact Framework 1.0時(shí)的性能更高,而且在Windows Mobile 6設(shè)備上運(yùn)行的 .NET Compact Framework 2.0應(yīng)用程序與在較早版本的Windows Mobile設(shè)備上運(yùn)行的同一 .NET Compact Framework 2.0應(yīng)用程序相比,前者的啟動(dòng)速度要比后者快25%。Windows Mobile 6設(shè)備上啟動(dòng)時(shí)間得到縮短是因?yàn)樵谠O(shè)備ROM中安裝了.NET Compact Framework 2.0。與將 .NET Compact Framework 2.0安裝在RAM中的設(shè)備相比,單是將 .NET Compact Framework 2.0 安裝在設(shè)備ROM中便可使應(yīng)用程序啟動(dòng)速度提高25%左右。
所有這些性能改進(jìn)不但意味著用戶對(duì)你開發(fā)的速度更快、響應(yīng)更及時(shí)的應(yīng)用程序更加滿意,還意味著應(yīng)用程序的開發(fā)速度有了很大的提升,因?yàn)殚_發(fā)人員等待程序部署的時(shí)間減少了。此外,應(yīng)用程序的啟動(dòng)和運(yùn)行速度更高,獲得應(yīng)用程序測(cè)試結(jié)果的時(shí)間也就更短。
SQL Server 2005 Compact Edition體系結(jié)構(gòu)
注意,雖然我們只要在Windows Mobile上安裝SQL Server CE引擎,就可以在設(shè)備上對(duì)SQL Server CE數(shù)據(jù)庫(kù)進(jìn)行相應(yīng)的操作,但是如果你想使用SQL Server CE中的合并復(fù)制和遠(yuǎn)程數(shù)據(jù)訪問(wèn)兩種技術(shù)與遠(yuǎn)程數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)同步的話,那還就還需要SQL Server CE客戶端代理和SQL Server CE服務(wù)器端代理兩個(gè)組件的支持。
總的來(lái)說(shuō),SQL Server CE的體系結(jié)構(gòu)就是由這三大組件構(gòu)成的:
·SQL Server Compact Edition 數(shù)據(jù)庫(kù)引擎
·SQL Server Compact Edition 客戶端代理
·SQL Server Compact Edition服務(wù)器端代理
圖1展示了SQL Server CE的體系結(jié)構(gòu)以及上述三個(gè)組件之間的相互關(guān)系。由圖可以知道,SQL Server CE包括客戶端環(huán)境和服務(wù)器環(huán)境兩個(gè)部分,SQL Server CE數(shù)據(jù)庫(kù)引擎和SQL Server客戶端代理都是位于客戶端環(huán)境中的,即Windows Mobile設(shè)備端或PC中。而SQL Server Compact Edition服務(wù)器端代理是位于服務(wù)器環(huán)境中,并且作為一個(gè)進(jìn)程在IIS環(huán)境中運(yùn)行。
SQL Server CE引擎的主要功能就是對(duì)SQL Server CE的數(shù)據(jù)存儲(chǔ)區(qū)進(jìn)行管理。通過(guò)對(duì)每條記錄維護(hù)少量的更改跟蹤信息,這樣數(shù)據(jù)庫(kù)引擎就可以很方便的跟蹤所有進(jìn)行插入、更新或刪除操作的數(shù)據(jù)庫(kù)記錄。當(dāng)我們使用合并復(fù)制或遠(yuǎn)程數(shù)據(jù)訪問(wèn) (RDA) 這兩種連接解決方案時(shí),啟用跟蹤功能將大大加快數(shù)據(jù)同步的速度。因?yàn)榭梢愿鶕?jù)跟蹤信息直接判斷那些記錄是更改過(guò)的,從而將這些更改的記錄進(jìn)行數(shù)據(jù)同步,避免了設(shè)備端和服務(wù)器端數(shù)據(jù)庫(kù)間對(duì)應(yīng)記錄間逐條比較的過(guò)程。
SQL Server CE客戶端和服務(wù)器端之間主要是采用HTTP進(jìn)行請(qǐng)求,并通過(guò)無(wú)線局域網(wǎng)或無(wú)線廣域網(wǎng)進(jìn)行通訊。這兩者間的HTTP請(qǐng)求驗(yàn)證主要是由IIS處理。SQL Server 數(shù)據(jù)庫(kù)可以和IIS位于同一臺(tái)計(jì)算機(jī)中,也可以分裝在不同的計(jì)算機(jī)中。
當(dāng)我們需要使用合并復(fù)制或RDA實(shí)現(xiàn)數(shù)據(jù)同步的時(shí)候,SQL Server CE客戶端就向SQL Server CE服務(wù)器端發(fā)送一個(gè)HTTP請(qǐng)求。SQL Server CE服務(wù)器端在接受到該請(qǐng)求后,就會(huì)與服務(wù)器端的SQL Server數(shù)據(jù)庫(kù)進(jìn)行連接,當(dāng)SQL Server根據(jù)請(qǐng)求完成相應(yīng)的操作后,SQL Server CE服務(wù)器端再以HTTP請(qǐng)求向SQL Server CE客戶端返回?cái)?shù)據(jù)。
圖1 SQL Server 2005 Compact Edition體系結(jié)構(gòu)
SQL Server CE客戶端與服務(wù)器端之間的通訊,還可以采用安全超文本傳輸協(xié)議(HTTPS)來(lái)增加數(shù)據(jù)的安全性。SQL Server CE可以使用IIS的SSL特性,加密在Windows Mobile上的SQL Server CE和服務(wù)器上的SQL Server之間傳輸?shù)臄?shù)據(jù),而且為了減少每次傳輸?shù)臄?shù)據(jù)量,SQL Server CE會(huì)對(duì)這些數(shù)據(jù)進(jìn)行壓縮后在進(jìn)行傳輸。
SQL Server CE除了可以采用無(wú)線局域網(wǎng)和無(wú)線廣域網(wǎng)和SQL Server進(jìn)行連接外,還可以通過(guò)ActiveSync軟件與桌面PC進(jìn)行連接,再通過(guò)PC與SQL Server連接。好了,長(zhǎng)話少敘,我將在下一篇文章將介紹SQL Server CE的安裝過(guò)程,歡迎大家繼續(xù)關(guān)注。
更多信息請(qǐng)查看IT技術(shù)專欄