多样化实现Windows Phone 7本地数据访问3——DB4O
終于把這篇文章發(fā)出來了. 對于Windows Phone 7 Visit Local DataBase新采用DB4O和SiaqoDB方式來驗證 本地數(shù)據(jù)訪問. 其實這篇已經(jīng)在上周 完成一個大概草稿. 中間再CodePlex看到一個Dvp寫的一段關(guān)于Perst數(shù)據(jù)庫使用心得 回過頭一看又覺得自己寫的有些關(guān)于SiaqoDB細節(jié)上有失嚴謹.?于是乎又不斷查看多方資料來反復(fù)利用實際編程的方式來驗證. 可惜的是這方面資料基本沒有,對于某些想法只能動手嘗試 ok let’s get start!……
關(guān)于Windows Phone 7 本地數(shù)據(jù)庫訪問的選擇 JackLin 已經(jīng)完整的總結(jié)了一篇文章淺談Windows Phone 7本地數(shù)據(jù)庫的選擇. 而今天我的工作就是驗證他在這文章中提出的DB4O和SiaqoDB兩種訪問方式. 至于文中提到的EffiProz Database/Windows Phone DataBase/Sqlite for Windows Phone 7 三種方式已經(jīng)前兩篇完整驗證. 可以參考.
對于這個DB40, 我也是很偶爾中看到. 起初對于這個純開源的面向?qū)ο蟮臄?shù)據(jù)引擎 沒有太過重視. 關(guān)于WP7本地數(shù)據(jù)訪問我先測試SQlite和Effoproze . 但是使用完DB4O不得不說它本身特點相比其他開源數(shù)據(jù)庫非常突出:
A:在官方[DB4O WebSite]的宣傳語中就說到We are Free. DB4O的完全靠的開源社區(qū)的驅(qū)動力量來進行開發(fā). 意味它是免費的.
B:原生數(shù)據(jù)庫: 為什么說是原生.db4o 是 100% 原生的面向?qū)ο髷?shù)據(jù)庫,直接使用編程語言來操作數(shù)據(jù)庫。程序員無需進行?OR?映射來存儲對象,大大節(jié)省了程序員在存儲數(shù)據(jù)的開發(fā)時間, 這讓我想到Rails框架中ORM映射和.NET從java翻版過來的Nhibernate. 想想我們以前做OO編程時 把一個面向?qū)ο蟮念惔鎯Φ疥P(guān)系型數(shù)據(jù)庫中 總是難以避免走到這一步.
ORM層將數(shù)據(jù)庫表映射到類, 將表中記錄映射成一個實例對象. 將字段映射成對象的屬性.類方法則對應(yīng)做的是表級別的操作, 實例方法則用于執(zhí)行對單條記錄的操作. 這樣直接對OO 操作的數(shù)據(jù)持久化操作 業(yè)界對Nhibernate性能上擔憂 但DB4O 在性能上如何?
C:高性能: db4o 官方公布的基準測試數(shù)據(jù),db4o 比采用 Hibernate/MySQL?方案在某些測試線路上速度高出 44 倍之多. 更多相關(guān)測試請參考官方[DB4O WebSite]文檔.
D:易簽入.使用 db4o 僅需引入 400 多 k 的?jar?文件或是?dll?文件,內(nèi)存消耗極小 無需管理 而且跨平臺.
大概介紹DB40特點 下面快速進度WP7開發(fā)去體驗一番.
在進行DB40 For Windows pheon 7開發(fā)前需要下載DB4O開源組件:
下載地址.NEt 3.5版本:DB40 Download Link[DB4O 7.12 For .NEt 3.5]
下載完成后自動安裝. 會在系統(tǒng)C盤符上生成一個目錄. ok let’s Create new WP7 Application For Test:
<2.1>添加引用
測試項目TestDB4OLocalDemo 創(chuàng)建完成后 需要添加引用, 找到DB4O默認安裝目錄:
C:\Program Files\db4o\db4o-7.12\bin\net-3.5
下添加Db4objects.Db4o.DLL和Db4objects.Db4o.Linq.DLL引用:
引用結(jié)果:
添加引用完成后后臺頁面引入:
為了達到演示目的 將先在WP7界面實現(xiàn)DB4O數(shù)據(jù)庫基本的CRUD操作, 這時我們需要一個操作實體對象Customer類 定義如下:
WP7界面我們先初始化數(shù)據(jù),然后根據(jù)CustmerName屬性查詢數(shù)據(jù), 刪除操作則對應(yīng)CustomerID來刪除,演示界面:
來看一下后臺文件關(guān)于DB4O數(shù)據(jù)庫初始化時插入數(shù)據(jù)具體操作,當開始第一次運行時 提示一個異常信息:
提示的意思是我們目前的.NET版本不對.?注意目前DB4O數(shù)據(jù)在官方中下載文件對應(yīng).NEt兩個版本.2.0和3.5 這是7.12版本,所以在建立WP7時把默認的.NET 4.0更改為3.5 , 如果當修改WP7.NEt版本為對應(yīng)的版本后依然提出這個問題.這個問題困擾我好一陣終于在WeAsk-上找到類似問題 來看一下我打開一個DB4O數(shù)據(jù)庫文件的操作代碼:
這個問題困擾我好一陣.后來在Weask上問了Grouper 當我們通過OpenFile自動創(chuàng)建一個固定路徑上的DB4O文件,DB4O對于.NET版本的嵌入式開發(fā)需要特殊的配置.Db4oEmbedded.NewConfiguration()實現(xiàn)的是?IEmbeddedConfiguration接口.而IEmbeddedConfiguration接口包含了在嵌入式模式下具體配置的方法.所以在NewConfiguation()需要配置Config中適用的范圍即ConfigScope.
問題依然存在. 執(zhí)行到Db4oEmbedded.NewConfiguration()時依然會提示一個同樣的.NET版本異常. 這個問題困擾我一個上午.看一下按鈕事件中完整代碼:當初始化數(shù)據(jù)時通過后臺添加3條記錄并查詢DB4O中數(shù)據(jù)記錄數(shù)量是否為 3 判斷插入數(shù)據(jù)是否成功 代碼如下:
目前遇到問題是WP7 引用DB4O后在Windows Phone 7 Application中提示一個.NET FrameWork版本異常?始終無法解決.
經(jīng)過一番很費力的查找在官方開發(fā)者論壇同樣有人遇到這樣的問題.?.NEt FrameWork Version Problem???但是他是在進行AND移動程序和Desklop桌面程序數(shù)據(jù)進行同步時.
在DB4O官方對開發(fā)者對應(yīng)下載頁面:?[Developer Download Link]?對DB4O存在多個下載版本:
可下載適用DB4O多個版本[只看.NEt支持]:
DB40 For .NET 2.0/3.5 Version:7.12.156
DB40 For .NET 2.0/3.5 Version:7.4.155
DB40 For .NET 2.0/3.5/4.0 Version:8.0.156
大概查看一下Version 8.0之間 的Realse Note: 查看最新的Release Notes 8.0.156:
COR-1339?- Check db4o against latest Silverlight SDK
等于說在最新的支持.NEt 4.0的DB4O 8.0中對Silverlight支持. 我們再來查看相關(guān)個DB40關(guān)于Silverlight和Windows Phone支持詳細文檔:
[db4o - Silverlight based RIA datastore]
[db4o - Windows Phone database]
DB4O對Windows Phone支持中明確提到:
| .NET 4.0 support and Silverlight version db4o now supports .NET 4.0 and has been ported to Silverlight! In order to get it you just need to download the .NET installer. |
DB4O現(xiàn)在已經(jīng)支持.NEt 4.0版本 這樣一來基本目前所有的.NEt版本DB4O都已經(jīng)支持. 不過對Silverlight最新版本支持正在開發(fā). 目前DB4O對Silverlight支持版本為Silverlight 3. DB4O可以免費使用在任何的Windows Phone 設(shè)備程序中. 那應(yīng)該我們對應(yīng)支持版本有問題 下載最新的DB4O8.0 版本[需要注冊]:
[DB40 Last Version 8.0 Download link db4o for .NET 4.0, version 8.0.160.14822 ZIP]
在DB4O官方注冊用戶有一個很怪現(xiàn)象 只要你的機器裝了.NEt 4.0 在提交用戶信息后始終會提示一個運行時異常 :
導(dǎo)致無法 注冊 后來我通過一個同事在java開發(fā)環(huán)境注冊成功.
下載完成后 打開Bin目錄可以看到其中已經(jīng)集成對Silverlight 3支持:
重新建立一個WP7 Application 選擇的.NET版本為.NET 4.0 引用DB4O版本為8.0 其他均不做修改 運行提示如下:
調(diào)用Db4oEmbedded.NewConfiguration()時 無法找到NewConfiguartion()方法 或提示嘗試訪問該方法調(diào)用失敗.
天啊 DB4O真是如此的折磨人!.我分別用了不同.NEt版本來測試同一個DB4O版本 結(jié)果還是無功而返. 我順便產(chǎn)看官方給出演示Demo實例. 可惜沒有關(guān)于Windows Phone 7的相關(guān)Demo. 從剛開始提示.NET版本問題到現(xiàn)在NewConfiguation()方法無法訪問. 希望碰到相關(guān)問題或是對DB4O基于WP7本地數(shù)據(jù)訪問已經(jīng)成功案例 能夠共享出來.
很遺憾 我利用假期又做了其他版本的嘗試 結(jié)果還是一樣. 關(guān)于DB4O在Windows Phone 7上的本地數(shù)據(jù)訪問 測試失敗.
DB4O在WP7我測試訪問本地數(shù)據(jù)沒有成功.官方明確提示是對Windows mobile 6.0/6.5都是支持的. 當然在DB4O相對其他開源第三方的數(shù)據(jù) 很有特點. 現(xiàn)在已經(jīng)有很多企業(yè)把DB4O作為開發(fā)的底層數(shù)據(jù)交互對象來進行考慮. 關(guān)于這個WP7問題 我們一直無法解決. 當然不是說沒有替代方法. 可以在WP7程序建立一個數(shù)據(jù)服務(wù)層用.NET類庫實現(xiàn)對數(shù)據(jù)庫DB4O訪問 然后留用WCF服務(wù)的方式對外發(fā)布訪問接口 在由WP7引用服務(wù)即可訪問. 如果哪位有更好的方法方式來解決這個問題. 請在留言中提出…………
參考資料:
DB4O 7.0 中文參考指南[Java版本文檔 有教程] 對照翻譯版
WeAsk-DB4O use in Windows Phone
Silverlighti and DB4O UserFrom
DataBase in WindowsPhone
本文轉(zhuǎn)自chenkaiunion 51CTO博客,原文鏈接:http://blog.51cto.com/chenkai/764484
總結(jié)
以上是生活随笔為你收集整理的多样化实现Windows Phone 7本地数据访问3——DB4O的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小班美术优质课教案《五彩花》反思
- 下一篇: 手牵手我们一起走的说说183个