在 6 月 7 日,由天翼空间·开发者工厂主办,InfoQ 协助策划的第八期专家讲坛活动上,微软MVP,InfoQ 中文站.NET 首席编辑朱永光( @亿科朱永光)向大家分享了在 Windows Phone 7(以下简称 WP7)上的数据库访问技术的经验并进行了具体的技术讲解,其中还特别提到了关于 SQL CE 的最佳实践。
Windows Phone 7 数据库访问技术(讲稿下载)
朱永光主要从术语定义、基础技术、数据访问技术分类、具体技术讲解等方面进行了分享。朱永光提到,数据访问技术的分类主要包含以下几种:
- 以数据源位置区分
- 本地(XML 文件、SQLCE、NoSQL 等)
- 远程(Odata、自定义 API)
- 以存储形式
- 文本(序列化方式:CSV、XML、JSON)
- 二进制(SqlCe)
- 以读取权限分
- 只读
- 可读可写
接着朱永光分别对每种的访问技术进行了详细的说明,分别通过访问方式、适用场景、优点以及缺点等几个角度来阐述。SQLCE 是 WP7.1 中增加的功能,是一种本地数据库,主要适用于复杂数据模型的场景,其优点是,对于大量数据性能足够好,可以建立表之间的关系,对于大部分人而言类似于关系数据库,支持 LINQ。但缺点是无法使用 T-SQL 语句。朱永光还分享了关于 SQLCE 的最佳实践:
- 使用分页减少返回数量
- 小批量提交,使用 Version 列
- 最好把 BLOB 数据存储在独立存储中
- 实现 INotifyPropertyChanging,只读的时候设置 ObjectTrackingEnabled=false
- 使用索引列,编译查询
- 分解操作任务
在问答环节,朱永光回答了一些网友的提问,详细信息如下:
问:随着 3G 时代到来,数据访问技术遇到了哪些突出问题?Windows Phone 对这些问题应对得怎么样?
答:3G 时代的到来,数据访问技术最突出的问题应该是:大数据量,大并发。特别是社区类的场景。无论是 windos phone 还是 andorid ,都会面临这样的问题。不过这些都是在 server 端的。NoSql 技术,内存数据,分布式数据库架构,SOA 等都是较好的解决办法。问:WP7 支持多线程方面怎么样呢?
答:支持多线程,但是进程最多支持 32 个,分为 8 个优先等级。WP 的 BCL 也有 System.Threading 命名空间的,所以可以实现多线程,和普通的.NET 多线程开发差不多。不过现在 WP 还没有 TPL 等并行函数库。问:WP 应用程序独立存储与 Silverlight 应用程序独立存储的异同点?数据是怎样进行绑定的?
答:操作基本类似。但是 WP 上多了一些限制,比如不能访问 SiteStore,只能有 ApplicationStore;SiteSettings 不可用。但是 WP 有个好处就是,没有限额的概念。当然由于手机存储空间有限,也不是说你可以无限使用独立存储;数据绑定基本 Silverlight 没有什么两样,也就是 XAML 的数据版本,不过 WPF,Silverlight,WP,Metro UI 都基本类似。问:WP7.5 在数据存储方面与 7.0 有什么改进的地方?
答:最大的改进可能就是增加了本地数据存储,即 SQL CE(Compact Edition)。对了,刚刚演讲的时候没有提到。WP 中的 SqlCe 是 3.5 版本。可以在 Visual Studio 或 SQL Server Management Studio 中编辑。甚至你可以在这些工具中先把 SDF 的数据库结构建立好。对于基础数据,也可以不一定用 WP 来开发编辑工具。问:微软手机版.net 支持二进制序列化吗?
答:据我所知,似乎不可以。不过你可以尝试创建这样的函数库。而.NET 只是一个运行和开发环境,你可以在这之上实现很多自定义的函数库。问:WP7 如何能很快的上手开发啊?NoSQL 与传统的数据库最大的优势表现在哪些方面,能举例说明一下吗;WP7 如何实现安全问题的预防呢?具体是采取什么方式,安装手机杀毒软件?能像 Linux 一样自生能抵抗互联网病毒的入侵吗?
答:1)对于一个项目的开发,语言并不是最重要的,关键是解决问题的方法和这种语言所提供的解决方案。如果你有丰富的开发经验,那么上手就很快的。微软的东东都学习起来都很愉快,最好的上手方式是是访问:MSDN( http://msdn.microsoft.com/zh-cn/windowsphone/ )和听讲座;
2)NoSQL 的意思不是 not SQL,而是 not only SQL。传统的数据库强调数据一致性,事务,通过关系来保证。最大优点就是你一数据模型原本的面目,业务逻辑的真正逻辑来操作数据。另外一大优点就是性能高。更多见: http://www.infoq.com/cn/nosql 。 顺便提一下,天翼空间也用到了 NoSQL 技术的。
3)安全预防?我觉得现在 WP 担心安全问题还是有点早,毕竟第三方应用程序都在安全沙箱中运行,微软给的 api 也有限,再说装机量这么低黑客还不感兴趣。当然之前有爆过,刷第三方 ROM 被内置了扣费软件的。问:请问什么是平面数据?
答:就是列表,没有和其他数据库有关联,或者有子对象,子数据。类似于 Excel 中一个 Sheet 中保存的数据。问:CSV 文件访问既可以本地也可以远程吗?
答:可以访问远程的 CSV,就是通过 WebClient 来获取远程 CSV 文件的 Stream。
关于讲师
朱永光,IT 自由人和环境保护者,微软最有价值专家(MVP)和 MCSD。他有 15 年的编程实践经历,擅长微软相关技术和产品,目前主要关注动态语言、函数式语言、并行计算、云计算和 RIA。现在他作为共同创始人经营着一家环境保护技术公司,致力于用 IT 促进环境保护,并把环境保护理念带入 IT。个人博客为: http://redmoon.cnblogs.com 。
关于专家讲坛
天翼空间开发者社区专家讲坛是天翼空间开发者社区( www.189works.com )2012 年针对开发者推出的一项提升专业能力的系列讲座,每周四晚,邀请移动互联网开发领域的权威专家,通过语音频道专题讲座,线上论坛访谈,以及微博、QQ 群线上同步直播的形式,为社区的开发者用户提供系统的技术讲座,答疑,以及运营知识方面的培训。
往期内容回顾
关于专家讲坛更多详情,请浏览官方网站。InfoQ 也会对后续的活动进行跟踪报道。
关于社区活动的更多详情,欢迎查看InfoQ 维护的社区活动日历,也欢迎关注InfoQ 官网微博( @InfoQ ),获取实时的活动信息!
评论