Asp.Net MVC vs Castle MonoRail

我在使用Asp.Net构建应用程序方面有一些经验,但现在MVC框架变得更受欢迎。 我想尝试使用Asp.Net MVC或Castle MonoRail构建新的多语言Web应用程序,但我不知道哪一个对我有好处。 我不喜欢Web表单视图引擎,但我喜欢Asp.Net MVC中的路由function。

  • 任何人都可以讲述这些之间的利弊吗?
  • 哪个ViewEngine更适合覆盖主模板?

作为单轨列车的倡导者,我必须说你应该选择ASP.NET MVC。 说实话,ASP.NET MVC将在三年内成为默认架构的简单事实应该可以解决它。 这个等式在一年前是不同的,仅仅是因为与MonoRail相比,默认架构存在严重的生产力问题。

如果你想谈谈技术优势和劣势:

  • ASP.NET AJAX是一个混乱(避免它),但他们现在有了jQuery。 实际上,jQuery支持比任何其他环境都要好。 当然,只有IDE与标准视图引擎集成才能完全实现这一点。
  • 有一些美学上的改进(例如,传递模型信息的方式比单轨更清洁,更明显)。

此外,不要忽视标准视图引擎。 你不必像在ASP.NET中那样抛出控件,你可以用与Brail非常相似的方式对其进行编码,只使用C#而不是Boo。

有些事情只是简单丑陋*将参数作为对象的方法的数量。 祝你找到他们期望的文件,祝你好运。 *微软对接口抽象类的喜爱。 他们有他们的理由,但我仍然不喜欢它。

此外,在许多方面,MonoRail仍然是更完整的平台。 例如,ASP.NET中没有validation或分页的抽象。 此外,绑定到模型并没有任何帮助。 与Monorail等效物相比,助手的function非常少。

总的来说,我认为ASP.NET MVC是一个胜利者。

MonoRail和ASP.NET MVC基本上非常相似,你应该很好地使用它们中的任何一个。 MonoRail存在的时间更长,因此具有更高级别的function。

ASP.NET MVC的主要优势在于它的路由引擎,公平MonoRail几乎具有相同的路由引擎,并且通过一些修改,你可以使用带有MonoRail的ASP.NET MVC路由引擎,因为路由引擎并不是真的在ASP中.NET MVC但在System.Web.Routing中(在.NET 3.5 SP1中发布)。 ASP.NET MVC和与Visual Studio的集成也是一个优势,当我们接近v1的RTM时,它可能会变得更好。

MvcContrib项目包含一些很棒的视图引擎,如Spark,NHaml和Brail。 没有人可以被认为是“最好的”,个人最喜欢的是Spark。 有关spark的更多信息: http : //dev.dejardin.org/documentation/syntax

WebForms引擎具有intellisense,这是我所知道的所有替代视图引擎都缺乏的一个很大的优势。

除了微软的普及和支持外,ASP.NET MVC仍然缺乏Monorail长期以来的一些核心function,如控制器组织(区域),本地ViewComponents和filter,可以使用IoC来命名最重要的。

我有一些使用所有这些function的大型应用程序,我很难将它们移植到ASP.NET MVC。

我已经和Monorail合作了好几年了,虽然MVC看起来很有前途,而且它的灵活性很棒,但我仍然觉得它对于我试图做的其他事情都是不合适的,事实certificate它不存在而且我必须插一点一块MvcContrib,另一块SharpArchitecture,自己构建它,你得到了图片。 单轨列车更容易使用(现在,就是这样)。

我预计未来几个月情况会好转,因为一些提议的解决方案将开始对抗其他解决方案并变得更加主流。 嘿,选择的多样性是好的,但相信我,你不想在3年前的Java-land中有这么多的网页框架,你可以用每个不同的页面建立你的网站!

与此同时,为了以防万一,我将继续将我的MR应用程序缓慢移植到MVC。

  1. 我认为MVC赢得了胜利。 它的function集非常相似,但它将成为两者中更“流行”的(因此通常在整个开发社区中得到更广泛的支持,记录和扩展)。 此外,在我看来,新的ViewEngine(Razor)和IDE改进因素对我来说,并提升了选择MVC而不是单轨列车的价值。

  2. 我已经使用了几乎所有常见的ViewEngines,但是使用了令人敬畏的StringTemplate模板引擎,我自己开始使用它(为它创建了一个OpenSource项目 )。 ST是一个真正的关注点,IMO。 因此,我发现自己编写了更好的应用程序,标签汤少了很多。 如果您选择在发动机上踢轮胎,我还会推出一个快速介绍和参考指南 。 到目前为止我使用它已经部署的项目上运气好了。 话虽这么说,Razor(MVC 3)看起来非常令人印象深刻。