MonoCross是 Xamarin 代码之上的一个非常薄的层。(看到右上角的 Xamarin 贴纸了吗?)
他们提议在不同的实现中重用相同的 MVC 代码,例如 MonoTouch 和 MonoDroid。
抽象出 MVC 适用于小样本,但这些人似乎虔诚地相信 100% 的代码共享——我不赞成这一点。这是一个美丽的概念,但它在现实生活中从未奏效。
制作出色的应用程序很难,但我不认为这很困难,因为数据库技术不同,或者因为您必须为 ASP .NET MVC、MonoTouch 或 MonoDroid 编写类似的类。如果这是软件开发的真正挑战,我们早就在很多年前解决了。
MonoCross 似乎是一种过早泛化的练习——所有程序员都喜欢的东西。
但是抽象不是免费的。想想 Eric Gunnerson 的这则轶事:
我知道团队滚雪球——他们最终得到了一个“瑞士军刀”组件,用于许多不同的场景。就像许多功能强大的组件一样,它很大、很复杂,并且有很多难以理解的行为。但开发它对于所涉及的开发人员来说是一个有趣的技术挑战(读作“有趣且对他们的职业有好处”......)
当团队发现一项操作需要大约 4 倍的时间时,问题就出现了。但是由于执行操作的组件的通用性,没有简单的方法来优化它。
如果该操作是在不使用“超级组件”的情况下从头开始开发的,则可以采用几种简单的优化方法。但是这些都不适用于通用组件,因为您不能只在一个场景中实现优化——它必须适用于所有场景。你负担不起让它在任何地方都能工作的开发成本,在这种情况下,即使你可以,它也会导致性能在其他情况下倒退。
(重点是我的。)
虽然MonoCross 开发人员似乎对此充满热情,但该项目周围似乎没有社区,而且我找不到基于 iFactr 或 MonoCross 构建的单个应用程序。
话虽如此,我不认为他们提供任何比 MonoTouch 或 MonoDroid 更有价值的东西。
在旁注中,米格尔同意:-)。