Чистая архитектура - как реализовать презентаторов в MVC - PullRequest
0 голосов
/ 28 апреля 2018

Согласно чистой архитектуре дяди Боба, интерактив прецедента вызывает фактическую реализацию презентатора (которая вводится после DIP) для обработки ответа / отображения.

Как это сделать с помощью C # (ASP.NET Core MVC)?

Может ли контроллер быть введен с использованием интерфейса C #, который предоставляет интерфейсный вызов C #?

Ответы [ 2 ]

0 голосов
/ 29 апреля 2018

Некоторые люди были заинтересованы в документировании граничного интерактора сущностей (EBI), как описано дядей Бобом. Существует магистерская работа и более прагматично, но (на момент написания этого поста) незавершенной документации, предназначенной для программистов, которую вы можете найти здесь . Идея также является частью книги Object-Oriented Software Engineering A Use Case Driven Approach (упоминаемой как Entity Interface Controller) от Ivar Jacobson, в которой дядя Боб рекомендует себя как минимум в одном из своих выступлений и в блоге под названием Screaming Architecture .

Сам дядя Боб дал доклад , где он объясняет, что он считает неправильным в веб-разработке и почему он считает, что другая модель будет лучше (*):

Сеть во всей ее сложности, при всей ее важности; Интернет это подробно. Это не суть нашего приложения, это канал ввода-вывода. Зачем нам структурировать наше приложение вокруг канала ввода-вывода?

Он также дает совет о том, как структурировать приложение позже .

0 голосов
/ 29 апреля 2018

В чистой архитектуре ведущий и контроллер - это разные классы. Как вы уже описали, докладчик должен быть введен в Interactor. Ведущий объединяет отклик Interactor в модель представления, которая затем передается в представление.

В asp.net MVC этот последний шаг снова включает контроллер, который не на 100% предназначен для чистой архитектуры, но именно так работает фреймворк. Так что этот крошечный компромисс нужно сделать при выборе asp.net MVC.

Для более подробной информации по этому конкретному вопросу, пожалуйста, ссылку на мои сообщения здесь: https://plainionist.github.io/Implementing-Clean-Architecture-Controller-Presenter/ https://plainionist.github.io/Implementing-Clean-Architecture-AspNet/

...