2011-04-28 73 views
4

我们有一个在Windows Mobile上运行的业务线应用程序。它是一个带有本地SQL CE数据库的Winforms应用程序,并从运行在服务器上的WCF Web服务获取其数据。开发移动C#应用程序以在多个平台上运行

现在客户总是问“为什么不为iPhone/iPad/Android/Phone 7等制作版本”。我的老板问这是多么困难。我最初的回答非常困难,特别是因为我可能是唯一做这项工作的人。我在Visual Studio开心的地方没有任何经验。

现在我遇到了MonoTouch和MonoDroid。他们似乎提供了一个简单的解决方案,但我相信有很多问题。我怀疑我只能编译我的Android应用程序。

我倾向于建议这将是太多的工作,唯一现实的解决方案是一个移动网站,每个网页的几个版本针对不同的屏幕分辨率。不幸的是,现有的应用程序有一个本地数据库,并“有时连接”,所以不会削减它。

任何建议和提示,我浪费了大量的时间?

干杯
马克

回答

8

我怀疑,我将能够只编译我的应用程序的Android

这是正确的;你不会的。

因此,背景:MonoTouchMono for Android的设计理念是为iOS和Android带来“核心”.NET和C#体验,同时也暴露每个特定平台的底层功能。鉴于PhoneGapTitanium抽象底层平台(对于“一次写入,随处运行”的氛围),MonoTouch和Mono for Android不提供平台抽象,并直接暴露底层平台类型和成员。

结果是,MonoTouch程序使用MonoTouch.UIKit.UIButton,它直接包装底层的CocoaTouch UIButton类型。

类似地,Android程序的Mono将使用Android.App.Activity,它直接包装底层的Android android.app.Activity类型。

这两个平台的共同点是您在.NET上找到的“核心”框架名称空间和类型。NET CF,Silverlight,Windows Phone 7和Mono:System,System.Collections.Generic,System.Linq(是,Linq-to-Objects),System.Xml.Linq(是,Linq-to-XML),System.IO等。例如,参见assemblies included in Mono for Android

那么,您可以使用现有的Windows Mobile应用程序吗?不,因为Android版Mono不提供System.Windows.Forms

但是,您应该可以重构现有代码以遵循模型/视图/控制器设计模式(或MVVM或...),抽象出UI(视图),以便您可以替换为各种平台,例如带有MonoTouch的iOS UI,带有XAML的WP7 UI,带Android Mono的Android UI,带有ASP.NET MVC的HTML UI等等。您不会得到“一次写入,随处运行”的体验,但您将能够为用户提供与他们选择的平台一致的本地用户界面。

例如,请参阅MIX11 Conference Apps,它利用通用代码库,同时为iOS,Android和WP7提供特定于平台的UI。

+0

只是第二...我们的应用程序的这个一般理念已经运气好。尽管我们没有牢固地使用UI模式,但我们拥有一个独特的程序集,它包装了业务逻辑,DTO,HTTP通信等,我们认为它们很好地跨平台流动。 – scolestock 2011-04-28 15:41:56

+0

感谢JonP的严肃回答,并且对于您的评论还有一些评论。确实非常有用!我可能会在PhoneGap上玩一会儿,因为它是免费的,但我希望我们最终会使用MONO工具。我宁愿写一个使用C#而不是Javascript的复杂应用程序。似乎有点“回到未来”给我。 – 2011-04-29 01:20:28

1

看看钛和PhoneGap的。

0

我的建议是快速浏览一下WP7。如果你有Visual Studio(你这样做)和C#经验的话,这很容易上手。然后,您应该能够更容易地猜测开发C#应用程序需要多长时间(并可能使用MonoDroid将其移植到Android)。

是的,钛& PhoneGap是选项,但我个人认为MonoDroid看起来更好。

你最需要什么平台?我猜测Android是最有可能的。我看到很多人说MonoDroid真的很稳定。