Должны ли навигационные свойства сущностей предварительно загружаться или загружаться с отложенной загрузкой через службу WCF? - PullRequest
0 голосов
/ 03 мая 2011

Мы используем Self-Tracking Entities поверх службы WCF. Объекты возвращаются клиенту без загруженных навигационных свойств.

Лучше ли отправлять сразу все навигационные свойства или лениво загружать их по мере необходимости? Если ленивый загружен, это хорошая идея, чтобы загрузить их асинхронно? Все вызовы службы WCF, которые у меня есть, используют ключевые слова await / async.

У меня есть некоторые опасения по поводу их загрузки сразу, потому что некоторые объекты имеют много навигационных свойств, которые не всегда используются. Например, у субъекта-потребителя в настоящее время около 20, и ожидается, что он получит больше. Некоторые примеры включают в себя адреса, телефоны, документы и заметки. Пользователи могут настроить свою собственную рабочую область, так что кому-то, работающему с документами, всегда может понадобиться свойство Documents при загрузке потребителем, в то время как большинству других это не нужно.

1 Ответ

1 голос
/ 03 мая 2011

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

Чего я немного боюсь, так это того, как можно обновить такую ​​модель.После того, как вы загрузите все связанные объекты и создадите из них один граф объектов, можете ли вы отправить только часть графика обратно в сервис?Я ожидаю, что вы не можете.

Редактировать:

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

...