【问题标题】:Asp.Net MVC vs Castle MonoRailAsp.Net MVC 与 Castle MonoRail
【发布时间】:2008-11-14 13:34:34
【问题描述】:

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

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

【问题讨论】:

  • 没有“最好”,这是一个主观且有争议的问题,我建议你改写为“x vs y的优缺点”并选择自己最好的。

标签: c# asp.net-mvc castle-monorail


【解决方案1】:

作为单轨列车的拥护者,我不得不说你应该选择 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 是赢家。

【讨论】:

  • 三年后再看这一切,令人惊讶的是变化如此之小。 Monorail 已经失去了大部分开发人员,但 ASP.NET MVC 仍然没有真正实现功能对等。 Razor 是一个改进,但视图引擎语法并不是什么大问题。
  • 既然Visual Studio 2013 具有 RTM,您对 MVC 5 和 ASP.NET 的总体看法如何?
  • 我从来没有回答过这个问题,因为这些天我真的不在这方面工作。但是,我的总体印象是,Microsoft 继续使用您不需要的功能来挑战鲨鱼。但是,由于 MVC 是由底层的简单事物构建的(与 WebForms 不同),因此您总是可以忽略这些杂乱无章的东西。这听起来很消极,但事实是它比我写这个答案时要好得多。 Async、WebSockets 和 Gulp 支持都是我当年想要放弃的东西。
【解决方案2】:

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 引擎具有智能感知功能,据我所知,这是所有替代视图引擎都缺乏的一大优势。

【讨论】:

  • NVelocity 视图引擎也有一些基本的智能感知功能(通过 CVSI 项目 - jonorossi.com/projects/cvsi)——它相当初级,但通常这就是您在视图中需要的全部内容。
  • 我们正在寻找在 Stack Overflow 上使用 Spark - 到目前为止,它看起来像是一个很棒的视图引擎!
【解决方案3】:

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

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

我已经与 Monorail 合作了几年,虽然 MVC 看起来很有前途,而且它的灵活性也很棒,但我仍然觉得很遗憾,对于我尝试做的每一件事,结果它都不存在,我必须要么插入一小块 MvcContrib,另一块 SharpArchitecture,自己构建它,你会得到图片。单轨铁路更容易使用(就是现在)。

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

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

【讨论】:

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

    2. 我已经使用了几乎所有常见的 ViewEngines,但最终使用了很棒的 StringTemplate 模板引擎滚动了我自己的(created an OpenSource Project)。 ST是真正的关注点分离,IMO。结果,我发现自己编写了更好的应用程序,标签汤少了很多。如果您选择在发动机上踢轮胎,我还抛出了quick intro and reference guide。到目前为止,我在使用它部署的项目上非常幸运。话虽如此,Razor (MVC 3) 看起来相当令人印象深刻。

    【讨论】:

    • 贾米森,你能扩展一下#1吗?我发现你的答案的结尾偏离了最初的问题(无意冒犯,我很高兴看到 asp.net msmvc 的字符串模板视图引擎)
    • 根本不是广告。为格式道歉。只是扩展了 StringTemplate 引擎偏好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 2010-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-16
    相关资源
    最近更新 更多