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



我有一个大型的asp.net-mvc网站。我最近升级到MVC 4,但有一件事我在争论是否值得迁移到razor引擎。我看到有"自动"升级的工具,但我想弄清楚它是否值得迁移的痛苦。我有大约100个总视图(包括规则和部分)。如果它是一个代码库,我将不得不生活一段时间,它值得的努力吗?

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

除非你有特别的理由,否则我不同意。Razor比WebForms的视图慢一点点(根据大多数消息来源大约是5%),但是这可能是旧的信息。在最好的情况下,它们将呈现完全相同的速度。我没有看到任何迹象表明razor在渲染方面比webforms(ASP)更快。NET MVC 3 Razor性能),并且绝对没有提供任何你不能用WebForms标记做的额外功能。

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

那么,你应该重写整个应用程序吗?不,你什么也得不到。展望未来,你应该使用Razor吗?看情况,大多数"似乎"都是这样移动的,它看起来更好,让视图更干净。

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

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

不,除非你有一个真正令人信服的理由。唯一真正的区别是视图上的语法更整洁一些,并且使用不同的视图引擎有一个固有的"酷"因素。

当razor刚出现的时候,我们实现了一些混合,所以我们现在运行着一个同时使用razor和webforms视图的网站(这是在razor成为默认mvc视图引擎之前实现的)。

我们已经在razor中编写了所有的新视图,而将旧视图留在我们正在慢慢迁移的webforms中。但这是为了我们的利益,而不是为了客户或终端用户。因此,只迁移视图是一件代价高昂、时间紧迫的事情,没有真正的目的……

如果你已经正确地分层你的应用程序,我建议(认真地),如果你正在考虑承担这个,是离开你现有的网站单独和创建一个独立的网站,使用新的mvc基础设施。将网站从mvc 1或mvc 2应用升级到新的mvc 5应用,肯定会有好处。

我们目前正在我的工作场所这样做,因为我们的模型和逻辑都在独立的dll中,我们有非常薄的控制器。我们注意到mvc5新功能的很多变化和更新。像捆绑、推特引导等都是我们可以用来确保客户注意到的好处。

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

我想你的问题在过去已经得到了回答,如果你的目标与新功能相匹配,你应该选择升级,比如移动站点支持等等。

职位

这篇文章给出了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倍

确保视图不是组合的,并且视图中没有传递任何null模型。

如果你问我,自从我开始使用Razor以来,我永远不会回头看常规的ASPX视图引擎。如果您想为您的应用程序引入新鲜的味道,并且开发人员不介意使用新的Razor语法(它更简单、更清晰),那么就使用它吧。如果每个人都对此持怀疑态度,并且应用程序运行得很好,那么就不要迁移。由于这个问题是一个个人评论,我的观点是赞同的,这(尽管事实上Razor现在似乎比等效的ASPX慢得可以忽略)显然是在说——迁移我,现在

相关内容

  • 没有找到相关文章

最新更新