2017-02-10 2 views
0

Мое приложение делится на 3-х проектовнадлежащим образом объектов DTO потребляя веб-службы

  • домена

  • ui.web.mvc

  • webservices.webapi

внутренний домен у меня есть 2 модели

Car 
Engine 

мои проекты webservices ссылаются на доменный объект, чтобы получить данные. Если проекты mvc отправляют данные с использованием сложной модели viewtodel или dto в webservice и , webservice затем сопоставляет эту модель с доменом один, нормально ли думать, что , что viewmodel или dto существуют в обоих проектах (webservices и mvc)?

+0

Объекты домена И веб-служба, которая их извлекает? Странная настройка. Почему бы не абстрагировать веб-службу как реализацию сохранения (т. Е. Репозиторий)? Он должен возвращать/хранить объекты домена. Я не вижу смысла DTO в таком сценарии. И в большинстве моделей моделей у вас нет места в вашем уровне персистентности. –

+0

Мой репозиторий - это доменный проект insde. Вы предлагаете мне переместить хранилище для отдельного проекта? И мои модели просмотра находятся внутри слоя mvc layer, а не слоя persistance. – user1765862

+0

Что делает WS? –

ответ

0

enter image description here

(не изображено: MVC также должны либо ссылаться на конкретные реализации, или использовать конфигурацию XML, для установки IoC контейнера)

Для начала, ваше приложение MVC должно не знаю о веб-службе. Он должен быть абстрагирован за интерфейсом (принцип инверсии зависимостей).

public HomeController(IRepository repository, IService service) 
{ 
    this.repository = repository; 
    this.service = service; 
} 

Мое предположение заключается в том, что объекты домена также содержат аннотации на сохранение. Это самый распространенный случай, поскольку два других варианта: a) Анемическая модель или b) Модель домена, которые являются экстремальными. Если предположение верно, то и репо и служба должны работать с объектами домена. Я не вижу места для DTO, о которых вы упоминаете.

«Шаблон» прост: извлеките объект домена (либо из службы, либо из репо), вызовите на него некоторую бизнес-логику, передайте его обратно в службу/Repo.

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