Entity Framework и WCf - PullRequest
       16

Entity Framework и WCf

1 голос
/ 24 апреля 2010

Я немного запутался в разработке сервисов WCf с EF.

При использовании WCf и EF, где мы рисуем эту линию, какие свойства возвращать, а какие - нет с сущностью.

Вот мой сценарий

У меня есть пользователь. Вот отношения.

Пользователь [1 ко многим] Адрес, Пользователь [1 ко многим] Электронная почта, Пользователь [1 ко многим] Телефон

Так что теперь на веб-форме, на странице 1 я могу редактировать информацию о пользователе. скажем, я могу редактировать несколько свойств объекта пользователя, а также редактировать адрес, телефон, адреса электронной почты [например, добавлять / удалять и обновлять любые]

На странице 2 я могу обновлять только пользовательские свойства и ничего, что связано со свойствами навигации [адрес, электронная почта, телефон].

Так что, когда я возвращаю объект пользователя [ИЛИ DTO], я должен также возвращать свойства навигации? Или клиент должен сделать несколько звонков, чтобы получить свойства навигации. Кроме того, как это происходит с Save? Например, должен ли клиент сделать несколько вызовов, чтобы сохранить пользовательские и связанные объекты, или только один вызов, чтобы сохранить график?

Скажем, если у меня просто есть Save (пользовательский пользователь) [где у пользователя тоже есть все связанные объекты] и страница 1, и страница 2 вызовут сохранение и передадут мне пользователя. но на одной странице мне понадобится намного больше информации. но на странице 2 мне просто нужны пользовательские примитивные свойства.

Итак, мой вопрос: где мы проводим эту линию, как мы проектируем эти услуги? Предназначена ли операция WCF для страницы и полей, которые она имеет?

Надеюсь, я достаточно хорошо объяснил свою проблему.

1 Ответ

0 голосов
/ 24 апреля 2010

Классическая проблема - и та, у которой нет одного правильного ответа - как всегда, это зависит от: -)

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

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

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

Если вы загружаете «по требованию», у вас возникают дополнительные затраты времени и времени на загрузку данных, но, как правило, вы экономите много времени на передаче данных, которые вам не нужны в конце (когда Вы загружаете все сразу).

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

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

...