2

Недавно мы превращали проект ASP.NET MVC 2 к ASP.NET MVC 4.ASP.NET MVC 2 в MVC 4 переделанный проект работает медленнее

В MVC2 мы использовали LINQ для SQL. В MVC4 мы используем Entity Framework. При сравнении скорости загрузки MVC4 работает медленнее MVC2.

Я сравнил базовую страницу, которая просто тянет список контактов, и обе имеют одинаковые функциональные возможности и поток (Controller -> BLL -> Repository (DAL)). Но MVC4 загружается медленнее MVC2.

Firebug of MVC2 Выше скриншот поджигатель из MVC2 приложения

Firebug of MVC4 выше скриншот поджигатель из приложения MVC4

И те же функциональные возможности, но он отличается во время их загрузки.

Как найти проблему с загрузкой в ​​моем MVC4? Есть ли какой-либо инструмент, который указывает на какие-либо проблемы/утечку? Пожалуйста, предложите.

Update:

Когда я проверил скорость загрузки, комментируя призыв к базе данных и по-прежнему была такая же проблема. Когда я комментирую Injection Dependency, он работает нормально. Когда я использовать контроллер без каких-либо интерфейсов, как показано ниже, она загружается быстрее:

public class UserController : BaseController 
{ 
    public UserController() 
    { 
    } 
} 

Но когда я использовать интерфейсы (Dependency Injection), как показано ниже, это займет больше времени:

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, который дал мне идею проверить, удалив инъекцию зависимостей.

Также в Скотте Гу blog post, но пока нет положительного ответа.

Его что-то подозрительное с впрыском зависимости, любые идеи?

ответ

0

Медленность может быть вызвана многими причинами, такими как первое кэширование в MVC, создание схемы EF. Сначала вы должны выяснить, какая часть делает реакцию медленной. Самый простой и эффективный способ - использовать код трассировки, такой как секундомер. Установите контрольную точку при начале запроса, начале действия, начале доступа к db, конце доступа db, конце действия и конце запроса.

Если это первый раз, когда загрузка медленная, это, вероятно, не является критическим вопросом. MVC будет кэшировать данные, такие как контроллер, действие, путь поиска или метаданные модели, что ускорит последующую обработку запросов.

+0

Hongye, Спасибо за ответ. Он работает медленнее, даже когда я запускаю его для второго, третьего раза. Даже я проверил его, комментируя звонок в базу данных и все еще имел ту же проблему. Я обновил свой вопрос с обновлениями – Prasad

0

Вы пробовали с MVC 3? Поскольку MVC4 находится в состоянии бета-тестирования, могут возникнуть проблемы с производительностью.

+0

Я преобразовал приложение MVC4 в MVC3, но все еще имел ту же проблему. – Prasad

+1

Прочитайте сравнение производительности MVC2 с MVC3 в блоге [Marcin's Blog] (http://blogs.msdn.com/b/marcinon/archive/2011/01/17/mvc-3-performance.aspx). Марцин говорит, что DI может быть проблемой. – Nick

+0

Спасибо, Ник.Я только что прочитал блог, Марцин говорит, что проблема с производительностью связана с DI, но, к сожалению, нет никакого решения проблемы производительности DI в этом блоге – Prasad