2013-04-01 7 views
1

Я разрабатываю решение для приложения. Я планирую использовать проект, управляемый доменом. Asp.net MVC и Entity. Вам нужны ваши материалы в некоторых областях.Разработка приложения с использованием DDD

Доступ к данным разработан с использованием Entity Framework коды первых Reposirotires построены на модели EF Data Acces домена предназначена usind модели предметной области в верхней части Хранилища serveices приложения построены на вершине слоя Damain UI разработан на верхняя часть услуг Применение

течение

пользовательский интерфейс (контроллер) -> службы приложений -> Домен слой -> Хранилища -> Доступ к данным -> база данных.

Я не очень понимаю, как делиться данными между слоями.

Модель моего домена может использоваться для хранения данных между репозиториями, доступом к данным и уровнем домена. Я просто думаю, как данные должны передаваться от Daomin Layert до Application Service и Application Service для пользовательского интерфейса. Я могу использовать DTO, но не уверенная погода, это хороший вариант или нет, поскольку у меня есть некоторые модели уже в модели Domain Model, View в пользовательском интерфейсе.

ответ

0

Reuse Domain Model или UI Model не очень хорошо, это сделает ваши слои плотно соединенными. Таким образом, очень сложно разрабатывать широкомасштабные приложения.

Что вы считаете правильным, приложение представляет собой тонкий слой, это всего лишь куча действий, которые будут вызываться непосредственно из уровня пользовательского интерфейса, и информация будет передаваться через объект под названием ActionParameter. ActionParameters определены в прикладном уровне, а объекты ActionParameter построены на уровне пользовательского интерфейса и переданы на прикладной уровень.

Приложение будет извлекать данные из БД через уровень доступа к данным. Иногда для запроса данных требуется получение данных из многих источников, разные объекты домена и данные должны быть спроектированы, преобразованы или отформатированы перед возвратом на уровень пользовательского интерфейса. Мы будем иметь что-то вроде объектов ActionResult, которые содержат все данные, которые будут возвращены на слой пользовательского интерфейса.

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

+0

Ваша идея заключается в использовании DTO? – Brainchild

+0

Да, Кажется, так ... он говорит использовать DTO.И я также рекомендую то же самое в вашем сценарии. – Snesh

0

Учитывая описанный поток, создайте модели представления в слое пользовательского интерфейса, которые будут созданы контроллером. Модель просмотра - это простой объект, к которому привязывается представление. Это должно быть отделено от базовой модели домена для устранения проблем, отмеченных namkha87.

Что касается уровня доступа к данным, вы можете сами использовать объекты домена для объектно-реляционного сопоставления, поскольку это позволяет EF. Здесь нет необходимости в промежуточном DTO.

Еще одна вещь, которую следует рассмотреть - это разделить модель, используемую для запросов, от используемой для вызова поведения. Таким образом, вы можете гарантировать, что служба приложения никогда не предоставляет объекты поведенческого домена, только read-models. Проблема с тем, что служба приложения подвергает объекты домена внешним слоям, заключается в том, что она позволит этим внешним слоям вызывать поведение на тех объектах, которые не определены. Когда вы возвращаете объекты только для чтения без поведения, это не проблема. Для возврата данных не нужно напрямую создавать объекты домена пользовательского интерфейса - you should distinguish between entities and simple data.

+0

Мой вопрос, как я могу передавать данные из приложений-приложений в пользовательский интерфейс? – Brainchild

+0

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

+0

Как насчет писем? – Brainchild

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