27

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

  • 谁能说说它们之间的利弊?
  • 哪个 ViewEngine 更适合覆盖主模板?
4

4 回答 4

27

作为单轨列车的拥护者,我不得不说你应该选择 ASP.NET MVC。老实说,ASP.NET MVC 将在三年内成为默认架构这一简单事实可能会影响它。这个等式在一年前有所不同,仅仅是因为默认架构与 MonoRail 相比存在严重的生产力问题。

如果要谈技术优缺点:

  • ASP.NET AJAX 是一团糟(避免它),但他们现在有了 jQuery。事实上,对 jQuery 的支持比任何其他环境都好。当然,只有通过 IDE 与标准视图引擎的集成才能完全做到这一点。
  • 有一些美学上的改进(例如,模型信息的传递方式比 Monorail 更清晰、更明显)。

另外,不要放弃标准视图引擎。您不必像使用 ASP.NET 那样对其进行控制,您可以使用与 Brail 非常相似的方式对其进行编码,仅使用 C# 而不是 Boo。

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

此外,在许多方面,MonoRail 仍然是更完整的平台。例如,在 ASP.NET 中没有用于验证或分页的抽象。此外,绑定到模型并没有任何帮助。与它们的 Monorail 等效项相比,这些助手的功能非常少。

不过,总的来说,我认为 ASP.NET MVC 是赢家。

于 2009-02-03T16:30:20.550 回答
10

MonoRail 和 ASP.NET MVC 本质上非常相似,你应该可以使用其中任何一个。MonoRail 存在的时间更长,因此具有更多更高级别的功能。

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

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

WebForms 引擎具有智能感知功能,据我所知,这是所有替代视图引擎都缺乏的一大优势。

于 2008-11-14T15:21:38.433 回答
7

除了感知到微软的受欢迎程度和支持之外,ASP.NET MVC 仍然缺乏 Monorail 长期以来拥有的一些核心功能,例如控制器组织(区域)、本机 ViewComponents 和可以使用 IoC 命名最重要的过滤器。

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

我已经和 Monorail 合作了好几年了,虽然 MVC 看起来很有前途,而且它的灵活性很棒,但我仍然觉得对于我尝试做的每一件事,结果它都不存在,我不得不插入一点一块 MvcContrib,另一块 SharpArchitecture,自己构建,你懂的。Monorail 更容易使用(就是现在)。

我预计未来几个月情况会好转,因为一些提议的解决方案将开始对抗其他解决方案并变得更加主流。嘿,选择的多样性很好,但相信我,你不想在 3 年前进入 Java 领域,那里有如此多的 Web 框架,你可以为每个不同的页面使用一个来构建你的网站!

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

于 2009-05-13T16:02:54.800 回答
1
  1. 我认为 MVC 胜出。它的功能集非常相似,但将成为两者中更“流行”的(因此通常在整个开发社区中得到更广泛的支持、记录和扩展)。此外,在我看来,新的 ViewEngine (Razor).. 和 IDE 改进因素对我来说,并提高了选择 MVC 而不是单轨的价值。

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

于 2009-02-13T21:18:43.593 回答