Дизайн проекта, правильно ли я понимаю

Я разработчик программного обеспечения, но всегда работал над "маленькими" проектами / решениями. Сейчас я пытаюсь создать приложение с нуля, просто чтобы оставаться на связи с новыми разработками и изучать новые вещи. Я пытаюсь использовать все, что никогда не использовал раньше.
В общем, это означает, что я разрабатываю приложение aC#, используя EF core 2.1 и SQL Server.
Я прочитал много статей в Интернете, и я уже много узнал. Но я все еще смущен, потому что каждый день я нахожу новую статью, используя другой подход. Мне бы хотелось узнать мнение некоторых других разработчиков о том, что я получил до сих пор.

Прежде всего, я привык к WinForms, так что пока я буду использовать это в качестве своего пользовательского интерфейса. Просто потому, что я могу получить быстрые результаты с этим. После этого я попробую использовать ASP.NET Core. Я также хочу иметь возможность использовать другой пользовательский интерфейс и все еще иметь возможность использовать остальную часть моего решения.
У меня есть несколько проектов в моем решении:
1. Данные: EF Context, DbSets, Migrations
2. Модели: модели EF, используемые в контексте EF (не более, чем POCO)
3. DTO: объекты, открытые для пользовательского интерфейса (опять же, классы и свойства, не более того)
4. Mapper: "DTO к модели" и "Модель к DTO"
5. Сервисы: статические классы и статические методы / функции, использующие все вышеперечисленное, содержащие логику. например, GetCustomer использует класс контекста EF для чтения базы данных, получает модель, сопоставляет ее с DTO и возвращает ее.
6. Пользовательский интерфейс: привязывает к объектам DTO и использует сервисы для каждого "действия" пользователя.

Вот и все, в двух словах. Но я на правильном пути?
Я много читал об IoC, но я еще не там, но, насколько я понимаю, это не имеет ничего общего с вышеизложенным.
У меня есть 1 конкретный вопрос: в WinForms есть проверка с использованием интерфейса IDataErrorInfo и для привязки мне нужна логика INotifyPropertyChanged. Куда это относится? Я бы сказал, в моем DTO, но некоторые говорят, что DTO "не может иметь" никакой логики.

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

1 ответ

DTO обычно не предназначен для презентации. Он предназначен для отправки необработанных данных, поэтому они обычно являются тупыми объектами и в основном представляют собой просто наборы установщиков и получателей свойств. Модель представления предназначена для отправки в представление, а модель представления также отправляет данные обратно в контроллер. View Model иногда берет на себя ответственность за логику представления.

Другие вопросы по тегам