我一直在为我的企业应用寻找解决方案,至少需要支持 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、有没有更好的解决方案?
任何建议将不胜感激,感谢您的耐心等待!