ASP.NET MVC: действительно ли UpdateModel является “дорогой” операцией (из-за Отражения)?

Существует несколько путей. Мой предпочтительный путь состоит в том, чтобы присоединить функцию к ajaxStart/Stop событиям на самом элементе.

$('#loadingDiv')
    .hide()  // Hide it initially
    .ajaxStart(function() {
        $(this).show();
    })
    .ajaxStop(function() {
        $(this).hide();
    })
;

функции ajaxStart/Stop будут стрелять каждый раз, когда Вы делаете любые вызовы Ajax.

Обновление : С jQuery 1.8 документация указывает, что .ajaxStart/Stop должен только быть присоединен document. Это преобразовало бы вышеупомянутый отрывок к:

var $loading = $('#loadingDiv').hide();
$(document)
  .ajaxStart(function () {
    $loading.show();
  })
  .ajaxStop(function () {
    $loading.hide();
  });
6
задан Alex 30 July 2009 в 18:18
поделиться

3 ответа

Вы поступаете разумно, если хотите не заниматься преждевременной оптимизацией. Тем более, что такая «оптимизация» даст преимущество процессору по сравнению с вашим, что намного дороже.

Основное правило оптимизации - сначала оптимизировать медленные. Поэтому подумайте, как часто вы действительно обновляете модель, а не выбираете ее из своей базы данных. Я предполагаю, что это 1/10 или меньше. Теперь рассмотрим стоимость выбора из серверной части базы данных по сравнению со стоимостью отражения. Стоимость отражения измеряется в миллисекундах. Стоимость выбора из базы данных в худшем случае может быть измерена секундами. По моему опыту, POST-запросы редко бывают очень медленными, а когда они возникают, то обычно виновата база данных, а не отражение. Я думаю ты'

5
ответ дан 17 December 2019 в 00:12
поделиться

Я думаю, что UpdateModel - это своего рода ярлык, который вызывает огромную связь между представлением и моделью.

Я предпочитаю не использовать «встроенные» модели (например, возможность передавать объекты, созданные LINQ, в представление непосредственно из базы данных), потому что мне нужна возможность замены моей модели чем-то более сложным - или даже просто другой базой данных. провайдер. Однако очень заманчиво использовать LINQtoSQL (или ADO.NET Entities) для быстрого прототипирования.

Я обычно создаю свое приложение MVC, а затем открываю слой «службы», который затем подключается к «модели» ( что является OO-представлением моего домена). Таким образом, я могу легко создавать слой веб-сервисов, менять базы данных, писать новые рабочие процессы и т. Д. Без забот

(и убедитесь, что вы пишете свои тесты и используете DI - это избавляет от множества хлопот!

0
ответ дан 17 December 2019 в 00:12
поделиться

По сравнению с задержкой в ​​сети, вызовами базы данных и общим вводом-выводом вызов UpdateModel () тривиален, и я бы не стал с ним возиться.

2
ответ дан 17 December 2019 в 00:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: