2013-01-21 40 views
0

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

+++++++++++++++++++++ representation层++++++++++++++++++++++++++
[MonoTouch的,MonoDroid的,Silverlight的]或[机GUI呼叫]或[HTML5/JS/CSS]

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

++++++++++++++++++++++++++++ server side +++++++++++ ++++++++++++++++
[云]

我想用mono/c#编写一些通用的业务逻辑和数据结构,当涉及到一些通用平台功能,比如存储服务,通知,我想将它们包装在每个平台上,并为c#(业务逻辑层)使用统一的API。至于表示层,我们决定从上面列出的3个可选解决方案中进行选择。

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

任何建议将不胜感激,谢谢你的耐心!

回答

1

我不知道为什么Xamarin没有你的搜索结果的第一页上降落,

http://xamarin.com/features

但是,这对于希望针对移动平台的C#开发人员创建什么单人。 MonoTouch和Mono for Android都具有与Microsoft .NET共同的库基础,以及平台特定的绑定。

您的非UI代码应该可以在便携式库中使用并在其中共享。微软的可移植库是Windows专用的,现在我不确定有多少单子可以接受这一点,但即使PCL失败,也可以基于源文件的相同副本创建多个平台特定的项目(我在#SNMP )。剩下的任务是为Windows Phone,iOS和Android开发平台特定的用户界面。

有吨的文章显示功能,

http://docs.xamarin.com/

也有许多成功的应用

http://xamarin.com/apps

学习产品的最好办法是尝试一下(对在Xamarin的情况下是免费的)。这也适用于MonoCross(这是一个建立在Mono上的框架)。

我不熟悉PhoneGap,所以你需要别人的建议。

+0

感谢莱克斯,我认为你指出正确的对我来说,事实上,我确实搜查过Xamarin,但我感到困惑,并认为单横和Xamarin是同样的事情。 –

+0

在这种情况下,Xamarin应该被视为基础设施供应商,他为非微软平台构建CLR。 MonoCross似乎是Xamarin提供的一个非常有前途的框架,而Xamarin本身推出了Xamarin.Mobile(http://xamarin.com/mobileapi) –

0

免责声明:这不是一个完整的答案 - 但我不希望它回答你的问题


我遇到过类似的问题,当我使用单声道产品18个月开始跨平台开发的至少一部分前。我以前建立的这种方法叫做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

+0

感谢您在项目启动之前的建设性信息,我可能有机会做很多所有这些选项的作业 –