Должен ли я дублировать мою модель сущности? - PullRequest
1 голос
/ 16 ноября 2010

Позвольте мне настроить мой сценарий LOB.

Я переписываю наше основное бизнес-приложение.Требования состоят в том, чтобы я создал внутренне используемое приложение (я хотел бы использовать Silverlight), которое наши сотрудники используют ежедневно.Мне также нужно предоставить сервис SOAP, который можно использовать для ввода заказов, получения счетов и т. Д.

Я также буду делать это по частям, поэтому, когда я обновляю запись в новой базе данных SQL Server, янеобходимо также обновить наш унаследованный SQL Server.

Поэтому, безусловно, имеет смысл создать DAL, который будет извлекать данные с нового сервера SQL, а также записывать обратно в 2 хранилища данных.

Также имеет смысл создать BLL, который может использоваться как Silverlight / RIA, так и веб-службами WCF.

Я создал объект данных новой базы данных в своем собственном проекте ион используется во всех других проектах.Проблема здесь в том, что RIA, похоже, требует, чтобы я создал его прямо внутри проекта ASP.Net, чтобы получить метаданные для Silverlight.Без этого мне нужно вручную заново создать метаданные для Silverlight, чтобы получить к ним правильный доступ.

Мой вопрос, должен ли я создавать дубликаты Entity Model?Один для RIA и один для всего остального?Есть лучший способ сделать это?Должен ли я просто отказаться от использования RIA и получить доступ к службам WCF Silverlight?Или мне просто продолжать дублировать метаданные в RIA?

1 Ответ

1 голос
/ 16 ноября 2010

Мы используем сущности для прямой ссылки на хранилище и объекты передачи данных (DTO), которые практически идентичны для передачи между BLL и WCF / GUI / и т. Д.Мы отображаем между 2, используя AutoMapper , что означает, что есть очень мало дополнительной работы, но нам не нужно беспокоиться о том, присоединен ли данный объект к контексту / отслеживает изменения состояния / и т.д ...

Редактировать: Вы определенно хотите сохранить свой код как DRY , насколько это возможно.Лично я бы посмотрел на использование DTO над BLL и на наличие двух наборов репозиториев, которые координируются в DAL (один RW, один W).или даже наличие мета-репозиториев, которые обрабатывают наборы данных в самих хранилищах 2.

Если вы еще не используете его, Unity и IoC были бы вам здесь полезны.Возможно, вы также захотите использовать один из шаблонов модульного кода, чтобы позволить вам зарегистрировать [n] хранилищ данных в разных режимах, так что, когда вы, наконец, захотите удалить старое хранилище, вам не нужно будет много работать.

Я бы также задал вопрос, нужно ли определять ваши сущности в ASP.Net - вы можете просто иметь возможность ссылаться на соответствующие библиотеки DLL из вашего проекта сущности / DTO и добавлять соответствующую разметку / config

...