2010-04-23 6 views
1

Я немного запутался в проектировании служб WCf с помощью EF.Entity Framework и WCf

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

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

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

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

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

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

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

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

Так что мой вопрос в том, где мы рисуем эту линию, как мы разрабатываем эти услуги? Работает ли WCF на странице и в полях, которые она имеет?

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

ответ

0

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

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

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

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

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

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

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

+0

Хорошо, вы ответили на половину моего вопроса. Как это работает с методом Save. Если этот метод сохранения принимает весь график [я надеюсь, что нет] или просто данные, относящиеся к форме или данным, которые вы планируете обновлять. – Nihilist

+0

Если вы извлекаете данные в небольших кусках, вы также должны сохранить их в подобных небольших кусках, я бы подумал. Сохраняйте только те части, которые на самом деле имеют какие-либо изменения, - не сохраняйте огромный график, если изменился только один номер телефона и т. Д. –

+0

Так скажите, например, на странице 1, я сохраняю пользователя с адресом, на одной странице2 только на пользователе, на стр. 3 Я сохраняю пользователя с адресом и телефоном, Должен ли я затем выставить три разных метода обслуживания для сохранения? like SaveUser SaveUserAndAddress SaveUserAddressandPhone ??? – Nihilist

Смежные вопросы