5

我有一个大型的 asp.net-mvc 网站。我最近升级到 MVC 4,但我正在争论的一件事是迁移到剃刀引擎是否值得。我 看到有“自动”升级的工具,但我试图弄清楚它是否值得迁移痛苦。我有大约 100 个总视图(常规视图和部分视图)。如果它是一个我将不得不忍受一段时间的代码库,是否值得付出努力?

我知道这可能看起来有点主观,但考虑到我的项目规模,我正在寻找这种迁移工作的预期成本与预期收益。

4

4 回答 4

5

除非您有特定原因,否则恕我直言。Razor 比 WebForms 视图慢一点点(根据大多数消息来源约为 5%),但这可能是旧信息。充其量,它们将呈现完全相同的速度。我没有看到任何迹象表明 razor 在渲染方面比 webformsASP.NET MVC 3 Razor 性能)更快,并且绝对没有提供 WebForms 标记无法提供的任何其他功能。

基本上,它是一种更简洁的标记语言,并且比 WebForms 语法可以更快地编写并且看起来更好。最后,如果您的组织从前就有编写 WebForms 代码的传统,那么所有开发人员都已经熟悉 WebForms 语法。没有学习曲线。

那么 - 你应该重写整个应用程序吗?不——你什么也得不到。展望未来,您应该使用 Razor 吗?取决于,大多数“似乎”都是这样移动的,它看起来确实更好,并使视图更清晰。

但是,如果您决定开始将视图更新为razor,请记住您可以分步执行此操作。ViewEngine 将在确定要渲染的视图时查找这两种类型的视图。这不必一蹴而就,但可以随着时间的推移逐步完成。

PS - 这可能很快就会作为一个主观问题关闭。

于 2013-04-07T03:06:07.733 回答
0

我认为您的问题在过去得到了回答,如果您的目标与新功能相匹配,您应该选择升级,例如移动网站支持等等。

旧帖子

这篇文章提供了 MVC4 发行说明的详细信息以及黑白 MVC3 和 MVC4 的区别,这篇文章中的这两个答案都将帮助您做出决定。

MVC 4 改进了这些特性(要点):

  • 更新和现代化的默认项目模板
  • 新的移动项目模板
  • 许多支持移动应用程序的新功能
  • 自定义代码生成的方法
  • 增强了对异步方法的支持

关于MVC4的更多详细信息,可以参考:http ://www.asp.net/mvc/mvc4

编辑:由于问题是查看特定的,

视图在两个版本中以相同的方式工作,没有任何变化,

您可以尝试删除不需要的视图引擎

protected void Application_Start() 
{ 
    ViewEngines.Engines.Clear(); 
    ViewEngines.Engines.Add(new RazorViewEngine()); 
}

如果你想改进渲染,你必须使用Partial View

<div class="news">
    <h3>News</h3>
    @Html.Partila("NewControl", Model.NewsItems)
</div>

代码部分:

public ActionResult News(){
    NewItemViewModel vm = new NewItemViewModel();
    vm.Items = repository.GetNews();
    return PartialView("NewsControl",vm);
}

这将使正常速度增加 10 倍

确保视图没有组合,并且没有在视图中传递任何空模型。

这应该有助于解决性能问题。

于 2013-08-27T09:37:28.937 回答
0

如果你问我,自从我开始使用 Razor,我就再也不会回头使用常规的 ASPX 视图引擎了。如果你想为你的应用程序引入新鲜的味道,并且开发人员不介意使用新的 Razor 语法(更简单、更干净),那就去吧。如果每个人都对此持怀疑态度并且应用程序运行良好,请不要迁移。由于这个问题正在邀请个人评论,我的意见与一致,这(尽管 Razor 现在似乎比等效的 ASPX慢得可以忽略不计)显然是在说 -现在迁移我

于 2013-08-27T19:13:43.203 回答
0

不,除非你有一个真正令人信服的理由。唯一真正的区别是视图的语法更简洁,并且有一个固有的“酷”因素与不同的视图引擎一起工作。

razor 第一次出现时,我们实现了一些混合,因此我们目前正在运行一个同时具有 razor 和 webforms 视图的站点(这是在 razor 成为默认 mvc 视图引擎之前实现的)。

我们已经在 razor 中编写了所有新视图,并将旧视图留在了我们正在慢慢迁移的 web 表单中。但这是为了我们的利益,而不是为了客户或最终用户。因此,仅迁移视图是一项昂贵且及时的事情,没有真正的目的......

如果您已经正确地分层了您的应用程序,那么如果您正在考虑执行此操作,我会建议(认真地)将您现有的网站单独放置并使用新的 mvc 基础架构创建一个单独的独立站点。将站点从 mvc 1 或 2 应用程序升级到新的 mvc 5 应用程序有一定的好处。

我们目前正在我的工作地点执行此操作,因为我们的模型和逻辑都在独立的 dll 中,并且我们有非常薄的控制器。我们注意到现在内置的新 mvc5 功能发生了很多变化和更新。捆绑、twitter-bootstrap 等都是我们可以用来确保客户注意到好处的东西。

它是相同的旧后端,但有一张闪亮的新面孔,这值得做。

于 2013-08-22T07:48:41.507 回答