DomainModel вазимодействие с клиентами
От: itslave СССР  
Дата: 17.08.11 10:29
Оценка:
Думаем как "правильней" организовать етот аспект.
Пользуем .NET, Entity Framework(POCO with self tracking), WCF сервисы, но думау ет не принципиально.
Сейчас у нас чистый TransactionScript:
По запросу от клиента прям из сервиса лезем в базу, вытаскиваем POCO-объекты(если надо с навигацией) отдаем клиенту.
Но в связи с усложнением логики и разрастанием проекта думаем как сделать ето хозяйство "по науке".
Смотрим в сторону DomainModel.
Удобно загрузить на сервис граф объектов и по ним навигацией ходить.
Но вот непонятно как взаимодействовать с клиентом.
Клиент запрашивает объекты из доменной модели.
Просто "взять и отдать" ет нехорошо из-за навигационных свойств: на клиента может пол базы уйди
Обрубить у доменного объекта навигацию перед тем как отдавать его на клиента — вообще кошмар и ужас.
Получается надо клонировать бизнес-объект, у клона обрубить "лишнюю" навигацию и отдать клона клиенту.
Аналогичная ситуация, что делать если клиент уже поменял граф объектов и возвращает его на сервер. EF умеет определять что поменялось и правильно записывать все в базу. Но вот как правильно обновить доменную модель, не перечитывать же ее заново из БД?
Вот крутимся вокруг идеи мапинга доменных объектов на "клиентские". Вручную писать тысячи присваиваний ну совсем не хочется. Может есть уже готовые решения, или другие идеи?
Re: DomainModel вазимодействие с клиентами
От: Аноним  
Дата: 17.08.11 11:23
Оценка:
Надо создавать DTO, data transfer objects клиенту для работы.
В гугле масса информации по этой теме, DTO & Domain Model.

Есть авто-мапперы —
http://www.codeplex.com/AutoMapper
http://valueinjecter.codeplex.com/
http://glue.codeplex.com/
http://code.google.com/p/otis-lib/wiki/GettingStarted

Сами DTO очевидно надо писать руками, исходя из потребностей клиента.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.