最近在选择Windows Phone 7的本地数据库,把经验记录下来。数据库的选择,我考虑以下几点: 性能, 稳定性, footprint(占用文件和内存大小),费用(许可证类型),易用性(访问方式,是否提供管理工具等)。下面讲述Windows Phone下我所了解到的一些数据库实现以及其优缺点。
Windows Phone 7 database
http://winphone7db.codeplex.com/
Windows Phone 7 database是一个基于Isolated Storage (独立存储)来实现的数据库,发布在codeplex的开源数据库,使用MS开源许可证,可以自由使用到开源或者商业项目中,优点是免费,footprint非常的小,支持LINQ。缺点是太新,没有商用经验,稳定性不明确,没有管理工具,不支持SQL。
Perst Embedded Database For Microsoft Windows Phone 7
http://www.mcobject.com/perst_eval
Perst是一个开源的对象数据库(object-oriented embedded database system),有.NET和Java的实现。 .NET的实现支持Silverlight和Windows Phone 7。这是双许可证,GPL和商用。GPL免费用在开源项目,商用需要购买许可证。支持多平台:.NET, .NET Compact Framewrok, Silverlight, Windows Phone.支持LINQ和JSQL,丰富的文档和例子程序。Footprint不大也不小,499k。
db4o
http://developer.db4o.com/
db4o 是老牌的对象数据库(object-based database), 有Java和.NET版本的实现。 db4o for Silverlight版本可以用于Windows Phone。 db4o文档和例子程序都非常的丰富。支持Mono, .NET, .NET Compact Framework和Silverlight等平台,是最为成熟的产品。 其支持LINQ也同时支持原生查询,功能非常强大。db4o采用双许可证,GPLv2和商用,开源免费使用,商用需要购买。由于功能十分强大,footprint也非常的大,光Db4objects.Db4o.dll就有688k,加上其他组件差不多1M的大小。
siaqodb
http://siaqodb.com/
siaqodb 是一个非开源的对象数据库, 可以运行在.NET 3.5+, Mono 2.4+, Silverlight 3/4 以及Windows Phone. LINQ是唯一支持的接口,不支持SQL,由于只是支持高版本,没有兼容性问题,footprint非常的小,只有128k,非常适合使用在Windows Phone上。而且siaqodb包含了Windows Phone 7的例子程序,方便开发,文档也比较全,还有包含查询工具,非常好用。是我觉得比较好的选择。唯一考虑的是非开源,只有商业许可证,$180个人许可证。还在考虑是否购买ing。
Sqlite for Windows Phone 7
http://sviluppomobile.blogspot.com/2010/03/sqlite-for-wp-7-series-proof-of-concept.html
Sqlite大名鼎鼎的嵌入式数据库,基本是智能手机设备的事实标准。Sqlite for Windows Phone 7修改自C# Sqlite,把存储介质改为Isolated Storage。其实我开始的时候偏向与使用Sqlite,因为其方便易用,移植性强,具有大量的商业经验,管理工具也十分的丰富,而且完全免费使用,没有许可证限制。但是Sqlite比较大,有514k,而且不支持LINQ,甚至不支持ADO.NET,只是支持sqlite原始的API,开发很不方便,例如读出的结果集不能放到DataSet和DataReader里面。
EffiProz Database for Windows Phone 7
http://www.effiproz.com/product_wp.aspx
http://effiproz.codeplex.com/
EffiProz Database 是另外一个开源的RDBMS数据库,支持Windows Phone,支持存储过程,触发器等功能,支持ADO.NET甚至Entity Framework,功能也异常强大。支持双许可证,开源使用MS开源许可证,商用单用户$400。可是这个数据库的footprint非常大,1361k,这么大的footprint令我失去了使用的兴趣了。同时开源版本不怎么更新,新功能模块都在商业版上实现。
我在看Windows Phone 7 database的源代码,Windows Phone 7 database支持从XAP中导出XML文件到Isolated Storage数据库中。 如果性能ok,我就选择Windows Phone 7 database了,但是担心这个数据库太新,以后还要自己修改源码来实现功能。也考虑是否购买siaqodb,这个数据库很不错,可惜不开源