最近我们将ASP.NET MVC 2项目转换为ASP.NET MVC 4。
在MVC2中,我们使用了LINQ to SQL。在MVC4中,我们使用实体框架。当比较加载速度时,MVC4比MVC2运行得慢。
我比较了一个基本页面,它只是提取了联系人列表,两者都具有相同的功能和流程(Controller - > BLL - > Repository(DAL))。但是MVC4的加载速度比MVC2慢。
以上是来自MVC2应用程序的firebug的截图
以上是来自MVC4应用程序的firebug的截图
两者功能相同,但加载时间不同。
如何在我的MVC4中找到加载问题?是否有任何工具可以指出任何问题/泄漏?请建议。
更新
当我通过评论对数据库的调用来检查加载速度时仍然存在相同的问题。当我评论依赖注入时,它运行正常。当我使用没有任何接口的控制器时,它加载速度更快:
public class UserController : BaseController
{
public UserController()
{
}
}
但是当我使用如下所示的接口(依赖注入)时,需要更长的时间:
public class UserController : BaseController
{
private IUserService _userService;
private IPaymentService _paymentService;
private ICommonService _commonService;
private IAdminService _adminService;
private IAUserService _adminUserService;
public UserController()
{
}
public UserController(IUserService userService, IPaymentService paymentService, ICommonService commonService, IAdminService adminService, IAUserService adminUserService)
{
this._userService = userService;
this._paymentService = paymentService;
this._commonService = commonService;
this._adminService = adminService;
this._adminUserService = adminUserService;
}
}
我在ASP.NET forum发布了一个帖子,这让我想通过删除依赖注入来检查。
同样在Scott Gu的blog post中,但到目前为止还没有得到积极回应。
它有什么可疑的依赖注入,任何想法?
答案 0 :(得分:0)
缓慢可能是由于许多原因造成的,例如MVC中的第一次缓存,EF模式创建。 您应该首先找出哪个部分使响应变慢。最简单有效的方法是使用像秒表这样的跟踪代码。在请求开始,操作开始,数据库访问开始,数据库访问结束,操作结束和请求结束时设置检查点。
如果它只是第一次加载缓慢,那可能不是一个关键问题。 MVC将缓存控制器,操作,视图搜索路径或模型元数据等数据,这将加速后续请求处理。
答案 1 :(得分:0)
你试过MVC 3吗?由于MVC4处于测试阶段,可能存在性能问题。