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

这个问题与推荐的体系结构以及人们以前使用C#,Monotouch和Monodroid开发的跨平台WP7,iOS,Android应用程序的经验具体相关。 我在 这里和这里研究了以前的问题。 他们提供了很好的答案,但不是我所期待的。 我也发现了这个优秀的问题 , 这个问题确实影响了成本效益,所以有一些重叠。

我有一个要求,开发一个跨平台的iPhone / iPad,WP7和Android应用程序的健康和健身公司,这将与他们的网站整合。 该应用程序需要less量的本地数据存储离线模式和同步networking时,networking可用。 我是一名Windows(C#/ C ++)开发人员,并不想真正走下三个Objective C,Java和C#应用程序的路线,尽pipe如果必须的话。 我也将作为技术主pipe,在这个项目上为一个团队耕种一些工作。

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

建议Wp7,Monotouch,Monodroid应用程序的体系结构

我的问题如下:

  • 有没有人试过这样的事情?
  • 这些框架(Monotouch,monodroid)是否值得他们从事这类工作?
  • 我可以设置整个项目在Visual Studio 2010与Monotouch,Monodroid和Wp7目标(但共享代码使用“添加为链接”)单独的项目(DLL / EXE)?
  • 对于这个(或者类似的)体系结构,我可以切实地期望什么样的代码重用? 即,我可以使用什么策略/模式来重用本地数据访问,Web服务和业务逻辑?

最好的祝福,

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

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

MonoCross(ITR Mobility)的作者已经为不同的客户创build了多种移动跨平台解决scheme,并撰写了两本关于“企业中的iPad”( http://amzn.to/zAhQK6 )和即将发布的“使用C#进行跨平台移动开发”( http://amzn.to/wM6RsF )。

同时,您可以观看Scott Olson的演讲,他在2011年的Monospace上做了演示,介绍了如何使用MonoCross针对多个移动和桌面平台重复使用业务逻辑:

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

他们在代码中执行严格的MVC分割:

MonoCross MVC模式s/0e187c1c.png

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

苹果在其iPad业务中展示的Medtronic示例应用程序成功地使用了该技术:

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

我build议你也看看斯科特的博客,他经常发表关于跨平台架构的经验。

根据您的意见,您的要求是针对跨平台的移动平台,该平台将与其现有服务集成,但也可以脱机工作。 你特别感兴趣的是通过单声道的C#,但是你已经表明你不打折其他的方法。

我觉得HTML / PhoneGap / JavaScript是一个你应该详细探讨的路线。 这个框架的WP7版本刚刚发布,我有使用这种方法向市场发布应用程序的经验。

PhoneGap包装你的HTML / JavaScript代码,在WP7的情况下,这是加载到本地存储。 这使应用程序完全脱机工作。 所有版本都是如此(iOS,Android等)

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

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

在这里输入图像说明

比较这个WP7屏幕:

在这里输入图像说明

注意:我计划在AppStore很快有iOS版本的Property Finder,我只需要解决如何使用PhoneGap Build!

只是增加另一个替代混合 – mvvmcross

这个项目是用单行,mvvmlight和opennetcf的经验开发出来的。

这是一个非常有见地的mvvm框架(包括我的观点),它包含了对Droid和Touch的数据绑定支持,它确实鼓励了平台之间的代码重用。

来源可从https://github.com/slodge/MvvmCross获得,至less已经在一些大型项目中使用过,并且仍在积极开发之中。;

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

其中一个更全面的function样本是会议应用程序:

SQL位应用程序

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

移动发展的情况与九十年代上半叶的发展非常相似。 手机资源有限,因为电脑有移动操作系统正在迈出宝贵的一步,因此生态系统相对较小。 他们有自己的哲学,工具甚至语言。 这是一件好事,但会导致跨平台开发的头痛。 因此,有很多尝试去澄清这一点。 人们构build的框架,包装等是一种抽象和抽象的漏洞 。 这对于移动设备来说非常重要,不仅仅是CPU周期数的性能,还有电池的性能,这对于用户来说更为重要。

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

话虽如此。 关于Monotouch和Monodroid我会非常小心的,因为苹果阻止了许多第三方编译器创build的iPhone操作系统应用程序 , 国王并不关心开发人员。 单声道将被专利侵权或专有软件供应商淹没的情况很可能发生。 这对我来说很难过,因为C#是我最喜欢的语言。

PS。 我不认为手机HTML5将会很快接pipe。