是否值得使用webform视图引擎将现有的asp.net-mvc项目迁移到razor?

时间:2013-04-07 02:56:32

标签: asp.net-mvc razor viewengine webforms-view-engine

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

我知道这可能看起来有点主观,但鉴于我的项目规模,我一直在寻找这次迁移工作的预期成本与预期收益。

4 个答案:

答案 0 :(得分:5)

除非你有特殊原因,否则恕我直言。 Razor是一个小小的(根据大多数来源约为5%)比WebForms视图慢,但这可能是旧信息。充其量,它们将呈现完全相同的速度。我没有看到任何暗示razor渲染速度比webforms ASP.NET MVC 3 Razor performance)更快的东西,并且完全没有提供任何你不能用WebForms标记做的事情。

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

那么 - 你应该重写整个应用程序吗?不 - 你一无所获。展望未来,你应该使用Razor吗?取决于,大多数“似乎”都是这样移动,它确实看起来更好,并使视图更清洁。

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

PS - 这可能会很快成为一个主观问题。

答案 1 :(得分:0)

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

当剃刀第一次出现时,我们实现了一点混合,因此我们目前正在运行一个包含剃刀和webforms视图的网站(这是在razor成为默认的mvc viewengine之前实现的。)

我们已经在剃刀中编写了所有新视图,并将旧视图保留在我们正在慢慢迁移的webforms中。但它是为了我们的利益,而不是客户或最终用户。因此,仅迁移观点是一种代价高昂且及时的事情,并没有真正的目的......

如果你已经正确地分层你的应用程序,那么如果你正在考虑进行这项工作,我会建议(严肃地说)是使用新的mvc基础设施单独留下你现有的网站并创建一个单独的独立站点。将网站从mvc 1或2应用程序升级到新的mvc 5 app确实有所收获。

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

它的旧后端,但是一个闪亮的新面孔,值得做。

答案 2 :(得分:0)

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

Old Post

这篇文章详细介绍了MVC4发行说明和差异b / w 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倍

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

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

答案 3 :(得分:0)

如果您问我,因为我已经开始使用Razor,我永远不会回头看常规的ASPX视图引擎。如果你想为你的应用程序引入新鲜的味道,开发人员不介意使用新的Razor语法(更简单,更清晰),那就去吧。如果每个人都对此持怀疑态度并且应用程序运行良好,请不要迁移。由于这个问题是邀请个人评论,我的观点与this一致,尽管Razor现在看起来似乎negligibly slower而不是等效的ASPX)显然是在说 - 迁移我,现在

相关问题