首页 文章

任何人都有跨平台WP7 Android iOS移动开发架构的经验(monotouch,monodroid,C#)

提问于
浏览
47

此问题与推荐的架构和人们之前分别使用C#,Monotouch和Monodroid开发的跨平台WP7,iOS,Android应用程序的体验有关 . 我在这里,这里和这里都研究过以前的问题 . 他们提供了很好的答案,但不是我想要的 . 我也发现这个优秀的问题确实涉及成本效益,因此存在一些重叠 .

我需要为 Health 和健身公司开发一个跨平台的iPhone / iPad,WP7和Android应用程序,它将与他们的网站集成 . 当网络可用时,该应用程序需要少量本地数据存储用于离线模式和与网站同步 . 我是一个Windows(C#/ C)开发人员,并且不想真正想要沿着三个Objective C,Java和C#应用程序走下去,尽管如果必须的话,我会这样做 . 我还将担任技术主管,并为该项目的团队开展一些工作 .

我想知道是否有人在使用Monotouch,Monodroid和WP7进行跨平台开发方面的经验,并分享他们在应用程序架构方面的经验,以尽可能多地重用代码 . 我正在考虑的架构如下:

Proposed architecture for Wp7, Monotouch, Monodroid app

我的问题如下:

  • 有没有人在这尝过类似的东西?

  • 这些框架(Monotouch,monodroid)是否值得为这种工作加盐?

  • 我可以在Visual Studio 2010中使用Monotouch,Monodroid和Wp7目标的单独项目(dlls / exe)设置整个项目(但使用'Add as Link'共享代码)?

  • 我可以通过这个(或类似的)架构实际期望什么样的代码重用?即,我可以使用哪些策略/模式来重用本地数据访问,Web服务和业务逻辑?

最好的祝福,

4 回答

  • 1

    您可能需要查看MonoCross项目,该项目旨在帮助您重用多个表示层的C#代码:

    http://code.google.com/p/monocross/

    MonoCross(ITR Mobility)的作者为各种客户创建了多个移动跨平台解决方案,并撰写了两本关于这一主题的书籍,一本是"iPad in the Enterprise"(http://amzn.to/zAhQK6)和即将推出的"Cross-Platform Mobile Development with C#"(http://amzn.to/wM6RsF) .

    与此同时,您可以观看Scott Olson在Monospace 2011上所做的演示,该演示描述了如何使用MonoCross同时重用业务逻辑来定位多个移动和桌面平台:

    http://www.infoq.com/presentations/The-Rise-of-Mono-in-the-Enterprise

    他们在代码中强制执行严格的MVC拆分:

    MonoCross MVC Pattern http://tirania.org/s/0e187c1c.png

    使用此模型设计应用程序的最大好处是,您可以在每个平台上使用本机用户界面运行相同的应用程序 . 您可以获得原生的iOS,Android,Windows UI,甚至还有一个ASP.NET前端,它允许您发布相同业务逻辑的Web版本 .

    这项技术被Apple公司在其iPad业务中展示的Medtronic示例应用程序成功使用:

    http://www.apple.com/ipad/business/profiles/medtronic/

    我建议您查看Scott的博客,他定期发布有关跨平台架构经验的文章 .

  • 25

    根据您的意见,您的要求适用于将与其现有服务集成的跨移动平台,但也可以脱机工作 . 您对C#通过Mono特别感兴趣,但是您已经表明您没有对其他方法进行折扣 .

    我觉得HTML / PhoneGap / JavaScript是一条你应该详细探索的路线 . 这个框架的WP7版本刚刚发布,我有使用这种方法的经验releasing an application to the marketplace .

    PhoneGap包装您的HTML / JavaScript代码,在WP7的情况下,它被加载到本地存储中 . 这使应用程序可以完全脱机工作 . 这适用于所有版本(iOS,Android等...)

    PhoneGap / HTML5的最大问题可能与我们为浏览器开发复杂的基于Web的应用程序时遇到的问题相同 . JavaScript的工具不是很好,浏览器差异是一个不变的问题 . 但是,它是一个久经考验的解决方案 .

    最后,可以为每个平台创建完全不同的应用程序UI . 通过使用MVVM模式,我设法在WP7和iOS应用程序之间共享所有JavaScript业务逻辑,同时具有完全不同的UI:

    enter image description here

    将其与WP7屏幕进行比较:

    enter image description here

    注意:我打算使用iOS版本不久之后AppStore中的Property Finder,我只需要弄清楚如何使用PhoneGap Build!

  • 9

    只需添加另一种替代方案 - mvvmcross

    该项目是基于monocross,mvvmlight和opennetcf的经验开发的 .

    这是一个相当自以为是的mvvm框架(我的意见在其中!),它包括对Droid和Touch的数据绑定支持,它确实鼓励平台之间的代码重用 .

    来源可以从https://github.com/slodge/MvvmCross获得,它仍然在积极开发中 .

    在slideshare上有关于它的介绍性介绍:http://www.slideshare.net/cirrious/dev-evening-monotouch-monodroid-mvvm-mvvmcross-and-databinding

    其中一个功能更齐全的样本是 Session 应用:

    sql bits app

  • 9

    这个问题很难回答,但我想分享一些想法 .

    移动开发的情况与90年代上半期的发展非常相似 . 电话拥有的资源有限,因为计算机拥有,移动操作系统正在迈步,因此生态系统相对较小 . 他们有自己的哲学,工具甚至语言 . 这是一件好事,但却引发了跨平台开发的难题 . 结果,有许多尝试清除这一点 . 人们构建框架,包装器等,这是一种抽象和abstractions are leaky . 这对移动设备来说非常重要,不仅是CPU周期数的性能,还有电池的性能,这对用户来说更为重要 .

    如果我是你,我会在原生环境中构建应用程序,特别是如果你有一些性能方面的考虑 . 最佳支持,工具,教育资源等支付重复的业务逻辑 . 总而言之,它不是操作系统或数据库管理系统,代码库不会很大;)

    话虽如此 . 关于Monotouch和Monodroid我会非常小心,因为Apple blocks iPhone OS apps created by many third-party compilersThe King并不真正关心开发人员 . 单声道将被专利侵权或专有软件供应商冲洗的情况很有可能 . 这对我来说很难过,因为C#是我最喜欢的语言 .

    PS . 我很快就不相信HTML5 for mobile will take .

相关问题