写点什么

朱永光谈 Windows Phone 7 及 SQL CE 开发实践(含资料下载)

2012 年 6 月 10 日

在 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 ),获取实时的活动信息!

2012 年 6 月 10 日 22:391115
用户头像

发布了 156 篇内容, 共 41.5 次阅读, 收获喜欢 2 次。

关注

评论

发布
暂无评论
  • 第 31 讲 | 热点剖析(四):安卓端和苹果端游戏开发有什么区别?

    安卓端和苹果端游戏开发有哪些相同点和不同点?基于这两大平台,有什么通用的开发工具?

    2018 年 7 月 7 日

  • 微软 BI 解决方案的优势

    目前,有很多的厂商提供自己特有的商业智能解决方案产品,每个产品在自己特定的功能上都有独特的优点。下面我们来简单的介绍一下,微软的商业智能产品的优势。

    2020 年 8 月 12 日

  • LINQ to SQL 何去何从

    尽管微软的ORM存在许许多多的问题,而且市面上例如LLBLGen,nHibernate与OpenAccess之类的替代品已经够多了,许多开发者被强迫使用微软的技术是因为他们的公司或客户的需要。而在取舍之间,看起来大多数开发者深信实体框架(Entity Framework)并非可行的方案。那么他们该如何应对?

  • Silverlight 之重

    上期笔者刚提出<a href="http://www.infoq.com/cn/articles/wl-silverlight-light">Silverlight之轻</a>,本期就要讨论silverlight之重?请大家不要觉得奇怪,架构的轻与重永远都是相对而言,虽然Silverlight相对于传统C/S架构有更加轻型的运行时环境,但相较于Html+JavaScript等传统B/S架构确实具有更加庞大的基础类库支持。Silverlight依靠.Net平台,使用C#高级语言代替JavaScript脚本语言,实现了强大的客户端计算能力、支持多线程,继承了WPF丰富的样式、控件、特效与动画,更可控的浏览器适应性,更安全的沙箱模式,客户端嵌入式数据库等,这就是本期要给大家介绍的重点—Silverlight之重。

  • 微软更新数据库生命周期管理指南

    微软近期更新了数据库生命周期管理指南页面,此次更新涵盖SQL Server DLM图表,以及针对SQL Server Data Tools、SQL Server Management Studio和Windows Azure SQL Database的精选资源。

  • 吴磊畅谈 Silverlight 在中国人寿的应用

    InfoQ编辑在QCon北京2010大会期间,采访了中国人寿的技术主管——吴磊,中国人寿基于Silverlight开发了一个企业级应用,他将就RIA技术选型,Silverlight开发实践,Silverlight未来的发展等话题和大家进行交流。

  • 可供 C#和 Visual Basic 调用的 WinRT API

    尽管我们可以使用.NET语言来调用Win32 API,但那样做会很困难。所以在过去的两年间微软一直在构建替代的方案,它就是实现了跨语言支持的Windows运行时,即WinRT。我们可以在C++和.NET中创建WinRT组件,并且可由二者以及JavaScript使用。

  • 办公软件的新时代:微软和谷歌的战斗

    在微软的办公软件帝国,Google Docs推出黑马:“云服务”和“协同办公”。但微软却借此成功转型:创新了收费模式。

    2018 年 1 月 31 日

  • PHP 安全专题:浅谈 PHP 安全编码

    2020 年 10 月 15 日

  • iOS 中推送和推送权限

    2019 年 7 月 29 日

  • 把 WPF 作为一种富客户端技术

    WPF的出现使开发视觉效果非凡的应用程序变得容易了不少,不过它其实作为一种开发前端富客户端应用程序的技术也非常有竞争力,而应用程序的后端服务可以使用如Java、Ruby或.NET等任何技术。这篇文章将会把WPF和其他一些技术,例如AJAX/DHTML、Swing或Flash进行对比;同时文章中也会分享一些使用WPF作为客户端的合适场景,这些示例会使用Java作为后台开发技术。

  • 来自 Redmond 的真实声音

    最近,InfoQ前往Redmond(美国微软总部)参与了一场关于技术发展的最新趋势的非正式讨论会。通常来说当我们进行这样的事实探究任务时,演讲者的笔记是不允许记录的,但这次我们特意申请批准按实情报道。除了去掉一些电子邮件地址和一部分关于NDA的材料,下面的这些记录都是我们仅供内部编辑人员分享的。

  • 开篇词|我们为什么要学 Vim?

    我为你准备了一个全新的课程,《Vim 实用技巧必知必会》。Vim 是一个效率利器,让我们一起享受它带来的技术乐趣吧。

    2020 年 7 月 20 日

  • 《LightSwitch 揭秘》一书作者 Alessandro Del Sole 专访

    Visual Studio LightSwitch是微软提供的一套开发工具,意图使编程经验不足或者没有编程经验的人能够使用该工具开发出简单而有效的行业应用程序。我们采访了《Microsoft Visual Studio LightSwitch揭秘》一书的作者Alessandro Del Sole,以便更深入地了解该开发工具。

  • 对象存储:看似简单的存储服务都有哪些玄机?

    对象存储不但注重打造存储的核心能力,还建立了一整套成熟的管理控制机制,更能够方便地与各种应用程序集成。我们要好好了解它。

    2020 年 3 月 25 日

  • 开发基于 Office 及 Sharepoint 2013 的应用

    在近期举办的微软Build 2012大会上,Keenan Newton和Cyrielle Simeone 演示了一些即将为使用Office 和SharePoint 2013的程序员提供的新特性。这些新应用将更好地利用来自web的数据源,并将提供从相应的应用商店安装的功能。

  • 论道 WP(四):LINQ to SQL 的查询

    本文是论道WP的第四篇文章,作者通过一个实际Windows Phone 7项目的开发探索了LINQ to SQL的查询以及相关的优化技巧。

发现更多内容

帮助企业摆脱困境,名企归乡工程师:能成功全靠有它!

Philips

敏捷开发

如何稳扎稳打推进数字货币进程

CECBC区块链专委会

数字货币

魏际刚:精准谋划我国供应链发展新方位

CECBC区块链专委会

供应链 物流

从一场“众盟科技云滇之播”,我们发现了美食直播的商业与公益价值

脑极体

【运维思考】如何做好云上运维服务?

嘉为蓝鲸

云计算 运维 数字化转型 数据中心 云服务

架构训练营 - 第7周课后作业 - 学习总结

Pudding

金融科技的未来

CECBC区块链专委会

金融

百亿级数据分表后怎么分页查询?

艾小仙

Java MySQL 数据库 编程语言 分库分表

架构师训练营第 1 期第 7 周总结

du tiezheng

极客大学架构师训练营

做个别人家的网页

MySQL从删库到跑路

html/css 网页设计

浅谈API网关(API Gateway)如何承载API经济生态链

华为云开发者社区

API 网关

《Python:Python编程简介:计算机编程和机器学习入门指南》

计算机与AI

Python

架构师训练营 - 第 7 周课后作业(1 期)

Pudding

害怕重构?都怪我太晚和你介绍该如何重构,现在我来了

小Q

Java 学习 程序员 面试 重构

从智慧计算的点、线、面,读懂浪潮AI的进化轨迹

脑极体

架构师训练营第一期 - week8

习习

【涂鸦物联网足迹】涂鸦云平台接口说明

IoT云工坊

人工智能 物联网 API sdk 云平台

USDT承兑支付平台技术开发,承兑商币支付交易平台搭建

13530558032

又一道比较运算符相关的面试题让我明白基础很重要

新世界杂货铺

golang

真香,数位Ali高级工程师遍览中外名书,终成顶级网络编程笔记

周老师

Java 编程 程序员 架构 面试

一款区块链钱包开发需要多少钱?数字资产钱包开发搭建

13530558032

Apache DolphinScheduler 是如何走进Apache的

海豚调度

大数据任务调度 数据湖调度 DolphinScheduler Apache DolphinScheduler

谈谈敏捷开发概念和迭代开发方案

Learun

敏捷开发

LeetCode题解:77. 组合,递归回溯,JavaScript,详细注释

Lee Chen

算法 LeetCode 前端进阶训练营

揭秘在召唤师峡谷中移动路径选择逻辑?

华为云开发者社区

算法 地图 最短路径

CDN是什么?

德胜网络-阳

数字货币OTC交易所开发,交易所搭建方案

13530558032

初级工程师职场生存要点

javaadu

程序员 职场成长 开发日志

价值超10亿美元的直播系统架构图是什么样子的?

冰河

系统架构 高并发 高性能 亿级流量 直播架构

终于啃完了Java核心原理+框架“面试圣经”成功五面上岸美团

小Q

Java 学习 编程 架构 面试

爆料!前华为微服务专家纯手打500页落地架构实战笔记,已开源

996小迁

架构 面试 分布式 微服务 程序人生

InfoQ 极客传媒开发者生态共创计划线上发布会

InfoQ 极客传媒开发者生态共创计划线上发布会

朱永光谈Windows Phone 7及SQL CE开发实践(含资料下载)-InfoQ