5

我即将开始构建一个将在所有平台上使用的应用程序。我将使用 monotouch 和 monodriod,这样我就可以将东西保存在 .net 中

我有点懒,所以我希望能够尽可能多地重用代码。

假设我想创建一个存储联系信息的应用程序。例如姓名和电话号码

我的应用程序需要能够从 Web 服务中检索数据并在本地存储数据。

MVVM 模式看起来像是要走的路,但我不确定我下面的方法是否 100% 正确

它是否正确?

  1. 一个包含我的模型的项目
  2. 一个包含我的视图、本地存储方法以及我将视图绑定到的视图模型的项目。在这种情况下,将有 3 个基于 3 个操作系统的不同项目
  3. 用于绑定服务和本地数据存储的数据访问层项目

任何建议都会很棒。

谢谢你的时间

4

4 回答 4

5

没有具体回答你的问题,但这里有一些懒惰的指针......

  • 您绝对可以在所有 3 个平台上重用大量代码(加上 MonoWebOS?!)
  • 重用代码非常容易,但是您需要为每个平台上的每个库维护单独的项目文件(这可能是一件苦差事)
  • MVVM 当然适用于 WP7。MonoTouch 和 MonoDroid 并不能很好地满足它
  • 您需要为每个设备单独编码的一些主要领域是:
    • UI 抽象——每个平台都有自己的“标签”、“列表”、“吐司”等概念
    • 网络操作 - System.Net 功能在每个上都略有不同
    • 文件 IO
    • 多任务处理能力
    • 设备交互(例如位置、拨打电话等)
  • 接口抽象和 IoC(Ninject?)可以帮助解决所有这些问题
  • 相同的单元测试应该能够运行所有 3 个平台吗?

更新 - 我不敢相信我只是偶然发现了自己的答案...... :) 除了这个答案,您可能还想看看 MonoCross 和 MvvmCross - 毫无疑问还有很多其他混合平台:

于 2011-03-23T00:04:33.053 回答
2

Jonas Follesoe 的跨平台开发演讲:必须是目前最全面的资源。他谈到了如何最好地共享代码和资源,抽象出大部分 UI 和 UX 差异,展示了跨平台可行的可重用 MVVM 以及用于组合几乎自动化构建的好技术。(是的,这包括一种在 Visual Studio 上编译单点触控内容的方法)

最重要的是,他拥有成品的可用源代码,以及单独放置在自己的车间项目中的一些主要组件,以及 50 多页的 pdf,详细说明了这样做的步骤。github上的航班挪威

IMO 唯一缺少的是如何最好地处理跨所有平台的本地数据存储。在这种情况下,我会指导您使用Vici Cool Storage,这是一个可以与 WP7、MonoTouch 和(虽然不受官方支持)MonoDroid 一起使用的 ORM。

*免责声明* 站点文档不是最新的,但源代码可用。(因为文档对许多程序员来说是 Kriptonite)

于 2011-09-18T18:36:10.680 回答
1

我认为编写一次代码并让它在所有三个平台上运行的最简单方法可能是基于 Web 的应用程序。例如,查看Untappd

于 2011-03-23T01:02:48.153 回答
1

您可以从查看 Robert Kozak 的 MonoTouch MVVM 框架开始。但这只是一个开始。

MonoTouch MVVM

于 2011-03-23T06:40:41.473 回答