微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

iphone – 开发移动C#应用程序以在多个平台上运行

我们有一个Windows Mobile上运行的业务线应用程序.它是一个带有本地sql CE数据库的Winforms应用程序,并从服务器上运行的WCF Web服务获取其数据.

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

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

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

在浪费大量时间之前有任何建议和提示吗?

干杯
标记

解决方法

I doubt that I will be able to just compile my app for Android

那是正确的;你不会.

因此,背景:MonoTouchMono for Android的设计理念是将“核心”.NET和C#体验带入iOS和Android,同时还展示了每个特定平台的基本功能.而PhoneGapTitanium抽象底层平台(用于“一次编写,随处运行”的氛围),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,System.Linq(是的,Linq-to -Objects),System.Xml.Linq(是,Linq-to-XML),System.IO等等.例如,参见assemblies included in Mono for Android.

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐