Вопрос

Что такое отложенная загрузка?

[Редактировать после прочтения нескольких ответов] Почему люди так часто используют этот термин?

Допустим, вы просто используете набор записей ASP / ADO и загружаете его данными или ADO.NET Источником данных для gridview.

Наверное, мне следовало спросить, почему люди используют термин "Отложенная загрузка", какие у них "другие" типы?

Это было полезно?

Решение

Это называется ленивой загрузкой, потому что, как ленивый человек, вы откладываете то, что не хотите делать. Напротив, Eager Loading, где вы загружаете что-то сразу, задолго до того, как вам это нужно.

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

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

Другие советы

Ленивая загрузка - это практика программирования, при которой вы загружаете или инициализируете объект только тогда, когда он вам нужен. Это может существенно повысить производительность, особенно если в вашем приложении много компонентов.

Как обычно, в Википедии есть больше подробностей.

Ленивая загрузка - это концепция, в которой мы откладываем загрузку объекта до точки, в которой мы нуждаемся. Ввод простых слов по требованию загрузки объекта, а не загрузки объектов без необходимости. Например, если у вас есть & Quot; Customer & Quot; класс с " Orders " объект агрегируется. Таким образом, вы хотите загрузить данные о клиентах, но объекты заказов, которые вы хотели бы отложить до тех пор, пока это не понадобится вашему приложению

Ниже приведено видео на YouTube, в котором показано, как использовать отложенную загрузку, как мы можем реализовать отложенную загрузку, а также преимущества и недостатки того же.

http://www.youtube.com/watch?v=2SrfdAkwmFo / р>

Определение Википедии Ленивая загрузка - это шаблон проектирования, обычно используемый в компьютерном программировании для отсрочки инициализации объекта до точки, в которой он необходим. ...

http://en.wikipedia.org/wiki/Lazy%20loading

Термин отложенная загрузка обычно используется, когда речь идет об объектно-реляционных сопоставителях. Если вы используете ADO.NET напрямую, вы всегда будете загружены (то есть всегда загружает только то, что вы укажете).

OR-сопоставители, такие как nHibernate, поддерживают возврат прокси-объектов, которые получают " заполнены " с правильными данными только при доступе к данным. Таким образом, вы загружаете только те данные, которые действительно используете. Это полезная функция, когда вы указываете много связей между объектами, которые могут быть загружены из базы данных, вы не хотите, чтобы OR-mapper загружал все связанные объекты и объекты, связанные со связанными объектами, и так далее. Это может привести к загрузке всей базы данных.

Эту проблему можно предотвратить с помощью тщательного проектирования вашей объектной модели. (использование агрегатов и только загрузка агрегатных корней, как в доменном дизайне, - это способ обойти это без ленивой загрузки).

Ленивая загрузка может привести к тому, что или mapper сделает множество небольших обращений к базе данных вместо того, чтобы извлечь все данные, которые вам нужны один раз. Это также может привести к проблемам с производительностью.

Вот пример из некоторого реального кода Python, который я написал:

class Item(Model):
    ...
    @property
    def total(self):
        if not hasattr(self, "_total"):
            self._total = self.quantity \
                  + sum(bi.quantity for bi in self.borroweditem_set.all())
        return self._total

По сути, у меня есть класс Предметов, который представляет предмет в нашем инвентаре. Общее количество предметов, которое у нас есть, это число, которым мы владеем, плюс сумма всех предметов, которые мы заимствуем из различных источников. Все эти числа хранятся в нашей базе данных, и было бы бессмысленно вычислять это до тех пор, пока не будет фактически запрошена общая сумма (поскольку часто элементы будут использоваться без запрошенной общей суммы).

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

Ленивая загрузка: вы не тратите свое время (ни свою память) на вещи, которые вам могут не понадобиться. Тогда, когда вам это нужно, это занимает больше времени, но это нормально.

Пример из жизни: вместо того, чтобы фактически выучить этот французский разговорник, вы выучиваете фразы по одному, когда они нужны. Когда это имеет смысл? Если вы собираетесь побывать во Франции только на короткое время (то есть вам не понадобится много фраз) или если вам нужно уехать очень скоро. Если вы находитесь там в течение двух лет и / или у вас есть много времени для учебы, то может быть гораздо эффективнее просто изучить весь разговорник заранее (нетерпеливая загрузка).

[Вдохновленный Atom, как преподавалось с точки зрения банды, Венера на WKRP .]

Отложенная загрузка - это термин, часто используемый в базах данных для обозначения концепции загрузки частей требуемой информации только тогда, когда это необходимо.

То есть.предположим, вам нужна запись, которая объединяет несколько таблиц.Если бы вы извлекли все это сразу, это заняло бы больше времени, чем если бы вы извлекали, скажем, только основную таблицу.При использовании отложенной загрузки остальная информация будет извлечена только в том случае, если это необходимо.Так что это на самом деле "эффективная загрузка" в определенных сценариях.

Другими типами "загрузки" являются:

  1. Быстрая загрузка - загрузка всех подключенных таблиц одновременно.

это шаблон проектирования.

Отложенная загрузка:До тех пор, пока ваш код не потребует выполнения какой-либо операции конкретным объектом, object не инициализируется, и после его инициализации он не инициализирует объект повторно, а использует ранее инициализированный объект.

Это делает ваш код намного более эффективным и помогает управлять использованием памяти.

Примеры применения отложенной загрузки:

Призрак Отложенная инициализация Держатель значения

Некоторые из преимуществ отложенной загрузки:

<Ол>
  • Минимизирует время запуска приложения.
  • Приложение потребляет меньше памяти из-за загрузки по требованию.
  • Избежание ненужного запроса к серверу.
  • Примером отложенной загрузки может служить сетка или таблица с большим количеством данных на веб-странице для просмотра, где приложение загружает только тот размер, который в данный момент имеет браузер пользователя. Когда они прокрутят вниз, чтобы просмотреть больше контента или данных, в этот момент будет загружено больше данных.

    Это становится все более распространенным шаблоном визуального / интерактивного проектирования также с помощью ajax или jQuery.

    И, как уже упоминалось выше, напротив будет Eager Loading, где вы не учитываете клиента, что может привести к снижению производительности.

    Lazy<T> теперь является частью c # 4.0 - есть хорошая страница на MSDN который объясняет концепцию.

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top