Mar*_*ans 4 iphone android xamarin.ios ipad xamarin.android
我们有一个在Windows Mobile上运行的业务线应用程序.它是一个带有本地SQL CE数据库的Winforms应用程序,并从服务器上运行的WCF Web服务获取其数据.
现在,客户总是在问"为什么不为iPhone/iPad/Android/Phone 7等制作版本".我的老板问这会有多难.我最初的答案很难,特别是因为我可能是唯一一个做这项工作的人.我在Visual Studio开心的地方以外没有任何经验.
现在我遇到了MonoTouch和MonoDroid.他们似乎提供了一个简单的解决方案,但我确信有很多问题.我怀疑我能够只为Android编译我的应用程序.
我倾向于认为这将是太多的工作,唯一现实的解决方案是一个移动网站,每个页面的几个版本用于不同的屏幕分辨率.不幸的是,现有的应用程序有一个本地数据库,并且"有时连接",因此不会削减它.
在浪费大量时间之前有任何建议和提示吗?
干杯
马克
我怀疑我能够只为Android编译我的应用程序
那是正确的; 你不会.
因此,背景:MonoTouch和Mono for Android的设计理念是为iOS和Android带来"核心".NET和C#体验,同时还展示了每个特定平台的底层功能.虽然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,和单声道:System,System.Collections.Generic,System.Linq(是的,LINQ到对象), System.Xml.Linq(是的,Linq- to-XML)System.IO等等.例如,请参阅Mono for Android中包含的程序集.
那么,您可以在Android上使用现有的Windows Mobile应用程序吗?不,因为Android的Mono不提供System.Windows.Forms.
但是,您应该可以重构现有代码以遵循模型/视图/控制器设计模式(或MVVM,或......),抽象出UI(视图),以便您可以替换各种平台,例如,带有MonoTouch的iOS UI,带有XAML的WP7 UI,带有Mono for Android的Android UI,带有ASP.NET MVC的HTML UI等等.您将无法获得"一次编写,随处运行"的体验,但您将能够为用户提供与其所选平台一致的本机用户界面.
例如,请参阅MIX11会议应用程序,它使用通用代码库,同时为iOS,Android和WP7提供特定于平台的UI.