我们有一个在Windows Mobile上运行的业务线应用程序。它是一个带有本地SQL CE数据库的Winforms应用程序,并从服务器上运行的WCF Web服务获取其数据。
现在,客户总是在问“为什么不为iPhone / iPad / Android / Phone 7等制作版本”。我的老板问这会有多难。我最初的答案很难,特别是因为我可能是唯一一个做这项工作的人。我在Visual Studio开心的地方以外没有任何经验。
现在我遇到了MonoTouch和MonoDroid。他们似乎提供了一个简单的解决方案,但我确信有很多问题。我怀疑我是否能够为Android编译我的应用程序。
我倾向于认为这将是太多的工作,唯一现实的解决方案是一个移动网站,每个页面的几个版本用于不同的屏幕分辨率。不幸的是,现有的应用程序有一个本地数据库,并且“有时连接”,因此不会削减它。
在浪费大量时间之前有任何建议和提示吗?
干杯
标记
答案 0 :(得分:8)
我怀疑我能够只为Android编译我的应用程序
这是正确的;你不会。
因此,背景:MonoTouch和Mono for Android的设计理念是将“核心”.NET和C#体验带入iOS和Android,同时还展示了每个特定平台的基本功能。而PhoneGap和Titanium抽象底层平台(对于“一次编写,随处运行”的氛围),MonoTouch和Mono for Android不提供平台抽象,直接暴露底层平台类型和成员。
结果是MonoTouch程序使用MonoTouch.UIKit.UIButton,它直接包装底层的CocoaTouch UIButton类型。
同样,Mono for Android程序会使用Android.App.Activity,它会直接包装基础Android android.app.Activity类型。
两个平台上的共同点是您在.NET,.NET CF,Silverlight,Windows Phone 7和Mono上找到的“核心”框架命名空间和类型:System
,System.Collections.Generic
,{{ 1}}(是的,Linq到对象),System.Linq
(是的,Linq到XML),System.Xml.Linq
等等。例如,请参阅assemblies included in Mono for Android。
那么,您可以在Android上使用现有的Windows Mobile应用吗?不,因为Android的Mono不提供System.IO
。
然而,您应该可以重构现有代码以遵循模型/视图/控制器设计模式(或MVVM,或......),抽象出UI(视图)这样你就可以替换它用于各种平台,例如带有MonoTouch的iOS UI,带有XAML的WP7用户界面,带有Mono for Android的Android用户界面,带有ASP.NET MVC的HTML用户界面等等。你不会得到“一次编写,随处运行”的体验,但是您将能够为用户提供与其所选平台一致的本机用户界面。
例如,请参阅MIX11 Conference Apps,它使用通用代码库,同时为iOS,Android和WP7提供特定于平台的用户界面。
答案 1 :(得分:1)
看看钛和手机盖。
答案 2 :(得分:0)
我的建议是快速浏览一下WP7。如果你有Visual Studio(你做过)和任何种类的C#体验,那么很容易就可以了。那么你应该能够更容易地猜测开发C#应用程序需要多长时间(并且可能使用MonoDroid将其移植到Android)。
是的,Titanium& PhoneGap是选项,但我个人认为MonoDroid看起来更好。
您获得最多请求的平台是什么?我猜Android,因为这似乎是最有可能的。我见过很多人都说MonoDroid非常稳固。