当前位置:  开发笔记 > 编程语言 > 正文

Windows Mobile开发 - 从哪里开始?

如何解决《WindowsMobile开发-从哪里开始?》经验,为你挑选了4个好方法。

好的,我将很快开始Windows移动开发的道路.我对这个主题一无所知,我正在寻找有经验的人告诉我你可能知道的任何gottchas.

现在我甚至没有对所要求的内容进行简化,但假设应用程序将只是一堆用于更新数据的CRUD表单.我所知道的唯一其他要求是,当没有信号可用时,应用程序需要支持离线存储.反过来,显然需要在信号返回时进行某种同步.

我最初的想法是,应用程序将主要是与Web服务层交互的前端.我假设WCF将是构建这些服务的适当技术?我还认为SQL Server CE是关于离线存储问题的一个很好的途径.

任何你觉得在这个领域有用的知识将不胜感激.建议,链接,书籍任何赞赏.

编辑:已经注意到离线同步有两种方法.要么使用某种形式的消息队列,要么使用SQL同步工具.谁能提供一个很好的比较和介绍这些?

编辑2:经过多一点挖掘,我得到的印象是我可以在这里使用基本上有3种不同的方法:

    当有能力时,Emmbeded数据库将在线查询然后在线同步

    MSMQ以及.NET远程处理

    使用Exchange Server进行ExchangeWebServiceMailTransport绑定的WCF.

现在,第一个问题提出了一些不错的观点,我想我在某种程度上理解了我将要面对的问题.但我想获得有关MSMQ实现和使用WCF新绑定的更多信息.



1> Christopher ..:

这里是我迄今为止(约9个月).net Windows Mobile开发经验的几句话.

    那么你偶尔会有联系.(或者更有可能偶尔断开连接).您必须选择是否要使用队列消息(即WCF/SOAP/XML或类似的东西)或数据库同步.我选择SQL同步路由,所以我不能真正评论消息.SQL同步路由没有麻烦!

    如果你像我一样使用SQL compact进行同步路由,你基本上有两个选择.SQL Server合并复制或较新的ADO.NET同步服务.如果选择前者,则需要非常小心数据库设计,以确保可以轻松地在移动订阅者和发布者之间进行分区.您真的需要考虑冲突,并且拆分通常不会在规范化数据库设计中拆分的表是这样做的一种方法.您必须考虑设备脱机一段时间并且发布者DB(即主DB)和/或订户更改相同数据的情况.设备重新上线后会发生什么?它可能意味着解决冲突,即使你已经很好地划分了事情.这是我被烧的地方.

    滚动你自己的DAL.不要尝试直接从UI代码使用数据引导器等,也不要使用类型化数据集.可能有第三方DAL与Windows Mobile一起使用(即我知道LLBLGEN可能值得一看)但不支持Linq-to-SQL,无论如何你需要轻量级的东西.DAL的可能性不会太大,所以请自行动手.

    如果您使用.net,您可能最终会想要一些未实现的平台功能.我建议使用这个廉价的框架来为您提供您所缺少的内容(尤其是与连接和电源管理相关的内容) - http://www.opennetcf.com/Products/SmartDeviceFramework/tabid/65/Default.aspx

    Windows Mobile设备在不使用时会部分关闭以节省电量.如果您正在进行轮询类型设计,则需要每隔x分钟将其唤醒一次.普通的.net计时器类不会这样做.您需要使用可以从OpenNetCF(上面)使用的平台功能.timer类叫做LargeIntervalTimer,位于OpenNetCF.WindowsCE程序集/名称空间中(我认为).

祝好运!



2> MusiGenesis..:

SqlCE只是Windows Mobile设备上可用于本地数据存储的选项之一,虽然它是一个优秀的数据库,但它有局限性.一方面,SQLCE是不行的(时期)下加密(换句话说,如果您的用户加密您的SDF文件,您将不再能够访问数据的位置).

SqlCE的第二个(也是最关键的)弱点在于RDA/Merge Replication工具. 在复制期间网络连接可能丢失的情况下,SqlCE Merge Replication不是100%可靠(在Windows Mobile设备中显然很常见).如果您喜欢尝试向客户端解释丢失或损坏的数据,请继续使用SqlCE并合并复制.

Oracle Lite是SqlCE的一个很好的替代品,虽然它在加密下也无法正常工作.如果加密是一个潜在的问题,您需要找到一个在加密下工作的数据库引擎(我不知道一个),或者使用XML或其他东西编写自己的持久性组件.

将WM应用程序编写为主要与Web服务实时交互的前端只能在始终连接的环境中工作.更好的方法是将应用程序编写为主要与本地数据(SqlCE,Oracle Lite,XML或其他)交互的前端,然后创建一个单独的同步组件来处理推送和提取数据.

同样,SqlCE合并复制可以实现这种推送和拉动的美妙和优雅 - 它不会一直无法正常工作.如果您想要一个可靠的复制机制,您将必须自己编写.Oracle Lite有一个称为快照表的东西,它可以很好地用于此目的.Olite中的快照表跟踪更改(如添加,更新和删除),并允许您单独查询更改并更新中央数据库(通过Web服务)以进行匹配.



3> Mat Nadrofsk..:

我刚刚在SO上发布的这个帖子到目前为止对我来说已经证明是一个很好的资源.

此外,Windows Mobile MSDN WebCasts提供了从入门到高级开发等各种信息.



4> Quibblesome..:

我建议将Sqlite用于本地存储。从我运行的上一个基准开始,它比SqlCe好得多,并且您不必做一些愚蠢的事情,例如保留开放的连接来提高性能。

权衡是该工具集的功能较弱,并且与其他MSSql产品的集成为零。:(

推荐阅读
雨天是最美
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有