我有一个大型的 asp.net-mvc 网站。我最近升级到 MVC 4,但我正在争论的一件事是迁移到剃刀引擎是否值得。我 看到有“自动”升级的工具,但我试图弄清楚它是否值得迁移痛苦。我有大约 100 个总视图(常规视图和部分视图)。如果它是一个我将不得不忍受一段时间的代码库,是否值得付出努力?
我知道这可能看起来有点主观,但考虑到我的项目规模,我正在寻找这种迁移工作的预期成本与预期收益。
我有一个大型的 asp.net-mvc 网站。我最近升级到 MVC 4,但我正在争论的一件事是迁移到剃刀引擎是否值得。我 看到有“自动”升级的工具,但我试图弄清楚它是否值得迁移痛苦。我有大约 100 个总视图(常规视图和部分视图)。如果它是一个我将不得不忍受一段时间的代码库,是否值得付出努力?
我知道这可能看起来有点主观,但考虑到我的项目规模,我正在寻找这种迁移工作的预期成本与预期收益。
除非您有特定原因,否则恕我直言。Razor 比 WebForms 视图慢一点点(根据大多数消息来源约为 5%),但这可能是旧信息。充其量,它们将呈现完全相同的速度。我没有看到任何迹象表明 razor 在渲染方面比 webforms(ASP.NET MVC 3 Razor 性能)更快,并且绝对没有提供 WebForms 标记无法提供的任何其他功能。
基本上,它是一种更简洁的标记语言,并且比 WebForms 语法可以更快地编写并且看起来更好。最后,如果您的组织从前就有编写 WebForms 代码的传统,那么所有开发人员都已经熟悉 WebForms 语法。没有学习曲线。
那么 - 你应该重写整个应用程序吗?不——你什么也得不到。展望未来,您应该使用 Razor 吗?取决于,大多数“似乎”都是这样移动的,它看起来确实更好,并使视图更清晰。
但是,如果您决定开始将视图更新为razor,请记住您可以分步执行此操作。ViewEngine 将在确定要渲染的视图时查找这两种类型的视图。这不必一蹴而就,但可以随着时间的推移逐步完成。
PS - 这可能很快就会作为一个主观问题关闭。
我认为您的问题在过去得到了回答,如果您的目标与新功能相匹配,您应该选择升级,例如移动网站支持等等。
这篇文章提供了 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 倍
确保视图没有组合,并且没有在视图中传递任何空模型。
这应该有助于解决性能问题。
不,除非你有一个真正令人信服的理由。唯一真正的区别是视图的语法更简洁,并且有一个固有的“酷”因素与不同的视图引擎一起工作。
razor 第一次出现时,我们实现了一些混合,因此我们目前正在运行一个同时具有 razor 和 webforms 视图的站点(这是在 razor 成为默认 mvc 视图引擎之前实现的)。
我们已经在 razor 中编写了所有新视图,并将旧视图留在了我们正在慢慢迁移的 web 表单中。但这是为了我们的利益,而不是为了客户或最终用户。因此,仅迁移视图是一项昂贵且及时的事情,没有真正的目的......
如果您已经正确地分层了您的应用程序,那么如果您正在考虑执行此操作,我会建议(认真地)将您现有的网站单独放置并使用新的 mvc 基础架构创建一个单独的独立站点。将站点从 mvc 1 或 2 应用程序升级到新的 mvc 5 应用程序有一定的好处。
我们目前正在我的工作地点执行此操作,因为我们的模型和逻辑都在独立的 dll 中,并且我们有非常薄的控制器。我们注意到现在内置的新 mvc5 功能发生了很多变化和更新。捆绑、twitter-bootstrap 等都是我们可以用来确保客户注意到好处的东西。
它是相同的旧后端,但有一张闪亮的新面孔,这值得做。