Существует гораздо более полное описание архитектуры приложений, но вот описание за $ .25.
- Модели классов EF предназначены для связи с хранилищем данных
- ДанныеTransfer Object (DTO) - это то, как модули взаимодействуют между собой (WebAPI с MVC и т. Д.)
- ViewModels предоставляют данные, необходимые для вашего пользовательского интерфейса
Поищите разделение проблемотносится к архитектуре приложения, это может сохранить ваш приклад.Зачастую разработчики используют двойное назначение этих объектов, что приводит к каким-то веселым результатам, когда вы обнаружите, что нарисовали для себя угол.Не так уж смешно, если вы «художник».
С другой стороны, сохранение этих моделей требует дополнительных усилий, а сопоставления занимают циклы ЦП.Вот конкретный пример:
WebAPI обращается к объекту People (класс EF) и сопоставляется с PeopleDTO (не все поля, может быть дополнительная информация) и возвращает его на контроллер MVC.Контроллер MVC берет PeopleDTO и объединяет его с вспомогательными таблицами поиска (больше вызовов WebAPI) для создания PeopleVM (ViewModel), который используется вашей страницей Razor.
В только что описанном сценарии есть три различных типаобъекта People, но каждый из них может иметь очень разное содержимое в зависимости от потребностей этого «слоя».Существует множество инструментов, позволяющих сделать отображение менее болезненным.
Очистить?