如何在我的跨平台项目中使用单声道
Posted
技术标签:
【中文标题】如何在我的跨平台项目中使用单声道【英文标题】:how to use mono in my cross platform project 【发布时间】:2013-01-21 06:11:01 【问题描述】:我一直在为我的企业应用寻找解决方案,至少需要支持 3 个平台,即 ios、android 和 Window Phone。经过一整天的搜索,我终于将目光投向了两种有前途的跨平台解决方案,一种是单声道,另一种是phonegap。 monocross 似乎完全使用 c# 和 .net,是否可以访问本机库和语言?我在某处读到它直接编译成可以在目标平台上执行的二进制文件。 而关于phonegap,它使用每个平台上的webviews来提供向最终用户展示用户界面的能力。由于它是通过解释语言和高级api实现的,性能可能无法满足我们的需求。 最后,我们(我的团队)决定尝试一下 mono,架构如下图所示:
++++++++++++++++++++++表示层++++++++++++++++++++++++++ [monotouch,monodroid,silverlight] 或 [本机 gui 调用] 或 [html5/js/css]
+++++++++++++++表示控制器/业务逻辑层+++++++++++++++++ [单声道/c#] ++++++++++++++++++++++++++++++服务器端+++++++++++++++++++++++++++ [云]
我想用mono/c#写一些通用的业务逻辑和数据结构,说到一些通用的平台特性,比如存储服务,通知,我想把它们包起来放在各个平台上公开供 c#(业务逻辑层)使用的统一 api。至于表示层,我们决定从上面列出的 3 个可选解决方案中进行选择。
要做到这一点,首先我必须弄清楚是否可以调用原生框架。 所以,我的问题是: 1、mono是如何工作的,我的意思是c#代码编译成二进制可以直接在iOS、Android和Windows Phone上执行吗? 2,是否有一种机制来进行本机调用?和cocos2d-x一样,我可以通过JNI调用java方法,而在iOS中,c++可以直接调用oc。我可以用 c# 在单声道中调用可可触摸的东西吗? 3、是否可以在一个项目中管理所有这些东西,以及如何构建它们? 4、有没有更好的解决方案?
如有任何建议,我们将不胜感激,感谢您的耐心等待!
【问题讨论】:
【参考方案1】:我想知道为什么 Xamarin 没有出现在您的搜索结果的第一页,
http://xamarin.com/features
但这正是 Mono 开发人员为希望针对移动平台的 C# 开发人员创建的内容。 MonoTouch 和 Mono for Android 均具有与 Microsoft .NET 相同的库基础,以及特定于平台的绑定。
您的非 UI 代码应该能够在可移植库中使用并在它们之间共享。 Microsoft 的便携式库是 Windows 特定的,现在我不确定 Mono 的人能接受多少,但即使 PCL 失败,您也可以基于源文件的相同副本创建多个特定于平台的项目(我在 #SNMP 中做过)。剩下的任务是为 Windows Phone、iOS 和 Android 开发特定于平台的 UI。
有很多文章展示了这些功能,
http://docs.xamarin.com/
还有许多成功的应用程序
http://xamarin.com/apps
学习产品的最佳方式是试用(在 Xamarin 的案例中是免费的)。这也适用于 MonoCross(基于 Mono 构建的框架)。
我不熟悉 PhoneGap,所以你需要有人对此提出建议。
【讨论】:
谢谢 Lex,我想你已经为我指出了正确的方法,事实上,我确实搜索过 Xamarin,但我很困惑,认为 monocross 和 Xamarin 是一回事。跨度> 在这种情况下,Xamarin 应被视为基础架构供应商,他们为非 Microsoft 平台构建了 CLR。 MonoCross 似乎是 Xamarin 提供的一个非常有前途的框架,而 Xamarin 本身推出了 Xamarin.Mobile (xamarin.com/mobileapi)【参考方案2】:免责声明:这不是一个完整的答案 - 但我确实希望它至少能回答您的部分问题
我在 18 个月前开始使用 Mono 产品进行跨平台开发时遇到了类似的问题。
从那以后我建立的方法称为 MvvmCross - 它很久以前从 MonoCross 分叉出来 - 现在不与它共享任何代码(但也许有一天我们会再次合作!)。
该方法使用 PCL 来共享代码。这并非完全无痛,但在您完成一些设置步骤后很容易 - http://slodge.blogspot.co.uk/2012/12/cross-platform-winrt-monodroid.html
您可以在此视频中了解有关此方法的更多信息:http://slodge.blogspot.co.uk/2012/12/mvvmcross-video-presentation-xaminar.html
【讨论】:
感谢您提供的建设性信息,在项目开始之前,我可能有机会在所有这些选项上做很多功课以上是关于如何在我的跨平台项目中使用单声道的主要内容,如果未能解决你的问题,请参考以下文章