2013-01-21 60 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

感謝您在項目啓動之前的建設性信息,我可能有機會做很多所有這些選項的作業 –