что на самом деле означает ленивая, энергичная и явная загрузка? - PullRequest
0 голосов
/ 20 апреля 2011

Я недавно узнал о ленивой, явной и энергичной загрузке, когда я присутствовал на собрании для моего нового проекта? Но я не понял, почему мы это изучаем? Я должен был работать над проектом Silverlight, который также включает в себя услуги WCF RIA. Мой наставник объяснял эти типы загрузки. Может ли кто-нибудь помочь мне, чтобы я смог изучить их и показать своему наставнику, насколько серьезно я выполняю порученное мне задание.

Ответы [ 3 ]

0 голосов
/ 20 апреля 2011

отложенная загрузка аналогична загрузке изображений, когда мы выполняем прокрутку не раньше этого

0 голосов
/ 20 апреля 2011

О, так как вы упомянули RIA WCF, я полагаю, ваш босс говорил об этих шаблонах с точки зрения получения ресурсов. Вы также можете говорить о лени с точки зрения создания экземпляров (объекты), загрузки (разделяемые библиотеки), состояния (инициализация состояния объекта), оценки (выражения не оцениваются до тех пор, пока не будет использован результат). То же самое, вероятно, относится к другим именам шаблонов в разных случаях использования. Если речь идет об управлении ресурсами, то ...

Это шаблоны, связанные с получением объекта, и подробно описаны в [POSA3 Pattern-Oriented Software Architecture: Шаблоны для управления ресурсами, том 3] [1].

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

После успешного поиска ресурса у вас есть 4 стратегии выбора ресурса:

  • явное получение, когда ресурс должен быть полностью получен по запросу; это не шаблон, а обычный пример использования

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

  • стратегия активного получения позволяет вам осуществлять прогнозное приобретение ресурсов (то есть вы хотите немедленно приобрести набор ресурсов, который, как вы знаете, будет запрашиваться в жизненном цикле запрашиваемого исходного ресурса

  • стратегия частичного приобретения позволяет делать поэтапное приобретение; Подумайте об объектах большой памяти / неизвестного размера, изначально вы захотите получить объект только частично

0 голосов
/ 20 апреля 2011

Скажем, у вас есть класс CustomerOrder, и у этого класса есть свойство MyCustomer и свойство MySalesOrderLines. Свойство MyCustomer содержит ссылку на класс Customer, который представляет клиента заказа, а свойство MySalesOrderLines содержит ссылку на коллекцию строк заказа для заказа. В Lazy Loading записи базы данных, которые возвращают эти свойства, не извлекаются из базы данных до тех пор, пока они не будут фактически вызваны с помощью кода. т.е. при извлечении экземпляра Lazy-Loaded CustomerOrder из базы данных, только когда есть строка кода, которая ссылается на CustomerOrder. MyCustomer - это экземпляр Customer, полученный из базы данных. При активной загрузке эти свойства извлекаются из базы данных одновременно с извлечением записи CustomerOrder из базы данных.

...