ASP.NET MVC 2 в MVC 4 преобразованный проект работает медленнее - PullRequest
2 голосов
/ 25 марта 2012

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

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

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

Firebug of MVC2 Выше скриншот firebug из приложения MVC2

Firebug of MVC4 Выше скриншот firebug из приложения MVC4

Оба являютсята же функциональность, но она отличается во время загрузки.

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

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

Это что-то подозрительное с инъекцией зависимости, есть идеи?

Ответы [ 2 ]

0 голосов
/ 28 марта 2012

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

0 голосов
/ 28 марта 2012

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

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

...