2012-12-26 20 views
4

我一直在Monocross讀一點,它似乎支持一個模型非常類似於ASP.NET MVC。它可以使用HTML5/CSS/Javascript作爲用戶界面。單片機/ HTML5與MonoDroid/MonoTouch/Windows

最初直接看MonoDroid和MonoTouch,它鼓勵開發人員使用設備本地控件進行開發。我是否正確地說Monocross支持在所有設備上使用HTTP/GET/POST的HTML/CSS/Javascript? MonoDroid/MonoTouch一直支持跨平臺開發,直到用戶界面,但是這種方法似乎理論上得到了100%(或接近)的代碼重用。它是否正確?

+0

我不知道MonoCross,但爲了代碼重用而犧牲用戶體驗非常少*您需要什麼。不同的平臺不僅具有不同的小部件 - 它們也有不同的約定,內容呈現樣式等。使用所有平臺的最低公分母很少有理由。 –

回答

1

MonoCross is a very thin layer on top of Xamarin's code。 (請參閱右上角的Xamarin貼紙?)
它們提供在不同實現中重複使用相同的MVC代碼,如MonoTouch和MonoDroid。

抽象掉MVC適用於小樣本,但這些傢伙似乎宗教相信100%的代碼共享,這是我不同意。這是一個美麗的概念,但它從未在現實生活中發揮過作用。

製作優秀的應用程序很難,但我不認爲這很難,因爲數據庫技術不同,或者因爲您必須爲ASP .NET MVC,MonoTouch或MonoDroid編寫類似的類。如果這是軟件開發的真正挑戰,那麼我們很多年前就已經解決了它。

MonoCross似乎是premature generalisation的一個練習,它是所有程序員都喜歡的東西。
但是抽象不是免費的。由Eric Gunnerson考慮這個軼事:

我已經知道團隊中這種滾雪球 - 他們結束了與在很多不同的場景中使用的「瑞士軍刀」的組成部分。像許多組件一樣,它很大,很複雜,並且有很多難以理解的行爲。 但開發它是一個有趣的開發人員涉及的技術挑戰(讀作「對他們的職業有趣」)

問題出現時,團隊發現一個操作花了約4倍的時間正如它應該。但是由於組件執行操作的廣義性質,沒有簡單的方法來優化它。

如果該操作是在不使用「超級組件」的情況下從頭開始開發的,那麼將會有幾種簡單的優化方法可供使用。但是這些都不適用於廣義組件,因爲你不能只在一個場景中實現優化 - 它必須適用於所有場景。你無法承擔開發成本,無法讓它在任何地方都能正常工作,在這種情況下,即使可能,也會導致其他情況下的性能下降。

(重點是我的。)

雖然MonoCross developers seem enthusiastic about it,似乎沒有要圍繞項目的社區,我找不到建立在iFactr或MonoCross的上方設置了一個應用程序。

這就是說,我不認爲他們提供超過MonoTouch或MonoDroid的任何有價值的東西。
在旁註中,Miguel approves :-)

+1

我對MonoCross並不熟悉,但我曾參與過一個MonoTouch項目,通過利用我們已經在C#中構建的BLL類,確實獲得了驚人的代碼重用。我同意UI需要特定於設備,但能夠添加對現有邏輯代碼的引用是非常好的和有益的。能夠以相同的重用方式添加MonoDroid只是錦上添花。 –

+0

@mklinker:的確如此。共享數據庫訪問,業務對象,REST API客戶端和實用程序功能確實非常有益。但分享視圖控制器類 - 我懷疑它。 –