0

我一直在为我的企业应用寻找解决方案,至少需要支持 3 个平台,分别是 iOS、Android 和 Window Phone。经过一整天的搜索,我终于将目光投向了2个很有前途的跨平台解决方案,一个是monocross,另一个是phonegap。monocross 似乎完全使用 c# 和 .net,是否可以访问本机库和语言?我在某处读到它直接编译成可以在目标平台上执行的二进制文件。而关于phonegap,它使用每个平台上的webviews来提供向最终用户展示用户界面的能力。由于它是通过解释语言和高级api实现的,性能可能无法满足我们的需求。最后,我们(我的团队)决定尝试一下 mono,架构如下图所示:

+++++++++++++++++++++++表示层++++++++++++++++++++++++++++
[monotouch,monodroid,silverlight]or [native gui calls] or [html5/js/css]

+++++++++++++表示控制器/业务逻辑层+++++++++++++++
[mono/c#]

++++++++++++++++++++++++++ ++服务器端+++++++++++++++++++++++++++++
[云端]

我想用mono/c#来写一些通用的业务逻辑和数据结构,而对于一些通用的平台特性,比如存储服务,通知,我想把它们包装在每个平台上,并公开统一的api用于c#(业务逻辑层)使用。至于表示层,我们决定从上面列出的 3 个可选解决方案中进行选择。

要做到这一点,首先我必须弄清楚是否可以调用本机框架。所以,我的问题是:
1、mono 是如何工作的,我的意思是,c# 代码是否编译成可以直接在 iOS、Android 和 Windows Phone 上执行的二进制文件?
2,是否有一种机制来进行本机调用?和cocos2d-x一样,我可以通过JNI调用java方法,而在iOS中,c++可以直接调用oc。我可以用 c# 在单声道中调用可可触摸的东西吗?
3,是否可以在一个项目中管理所有这些东西,以及如何构建它们?
4、有没有更好的解决方案?

任何建议将不胜感激,感谢您的耐心等待!

4

2 回答 2

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,所以你需要有人对此提出建议。

于 2013-01-21T06:38:36.383 回答
0

免责声明:这不是一个完整的答案 - 但我确实希望它至少能回答您的部分问题


我在 18 个月前开始使用 Mono 产品进行跨平台开发时遇到了类似的问题。

从那以后我建立的方法称为 MvvmCross - 它很久以前从 MonoCross 分叉出来 - 现在不与它共享任何代码(但也许有一天我们会再次合作!)。

该方法使用 PCL 来共享代码。这并非完全无痛,但在您完成一些设置步骤后很容易 - http://slodge.blogspot.co.uk/2012/12/cross-platform-winrt-monodroid.html

You can learn more about this approach on this video: http://slodge.blogspot.co.uk/2012/12/mvvmcross-video-presentation-xaminar.html

于 2013-01-28T17:08:40.260 回答