Совместное использование объектов модели домена во всех проектах решений - PullRequest
4 голосов
/ 28 февраля 2011

У меня все время одна и та же ситуация при создании моих проектов.У меня есть основная модель предметной области (Entity Framework Model).Я добавил проект службы данных wcf, чтобы помочь запросить эту модель.Теперь, если я хочу использовать один из объектов модели, я должен ссылаться на dll модели Домена, и это не всегда хорошо, потому что проект может быть Silverlight, или я могу использовать ссылку на сервис, и это может быть лучше, но неочистить объект

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

Заранее спасибо ...

Ответы [ 4 ]

2 голосов
/ 28 февраля 2011

Ну, ваша модель домена должна быть POCO, а не моделью EF.

Если вы используете чистые POCO, то ваш проект модели домена вообще не будет ссылаться на EF, это базовая библиотека классов .NET, которую можно использоватьлюбым клиентом .NET.

Либо используйте POCO, либо создайте фасад между моделью EF и вашими клиентами, где вы можете проецировать объекты EF в DTO.

1 голос
/ 28 февраля 2011

Что вы подразумеваете под моделью домена? Вы имеете в виду только классы, сгенерированные шаблоном EF или T4? Или вы имеете в виду объекты реального домена, в которых сгенерированные классы объединены с другим частичным классом, содержащим реальные бизнес-методы?

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

В последнем случае дело обстоит так: НЕ ПОДЕЛИТЬСЯ доменными объектами с клиентами ваших услуг. Доменные объекты и их методы предназначены для обслуживания, а не для клиента. Используйте специализированные DTO или объекты, созданные из справочника услуг.

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

0 голосов
/ 28 февраля 2011

Некоторые предложения о том, как обрабатывать модель доменного имени между решениями, если хотя бы одно из них является решением Silverlight, можно найти по следующей ссылке:

Рекомендации по использованию общего кода Silverlight и .NET 3.5?

0 голосов
/ 28 февраля 2011

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

В частности, для Silverlight посмотрите wcf ria services .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...