Как сделать контроллеры ASP.NET Core доступными с помощью соглашений Screaming Architecture? - PullRequest
0 голосов
/ 08 ноября 2019

Я пытаюсь понять, как сделать приложение Asp.Net Core (3.0) похожим на соглашения о папках и файлах Screaming Architecture.

Я читал об этом, но начал с пустого проекта. Папки:

  • Контроллеры
  • Представления
  • Модели

Я хочу, чтобы веб-приложение работало как

  • Клиенты / Контроллеры
  • Клиенты / Представления
  • Клиенты / Модели

Возможно ли это? Заранее спасибо.

1 Ответ

0 голосов
/ 08 ноября 2019

На контроллеры и модели ссылается пространство имен, поэтому их физические местоположения файлов не имеют никакого отношения к чему-либо. Контроллеры загружаются динамически независимо от того, где они находятся в проекте, или даже если они вообще находятся в проекте (т. Е. Будет автоматически загружаться контроллер из указанной библиотеки). Модели полностью основаны на коде, и вы просто добавили бы оператор using с пространством имен моделей для доступа к ним в любом другом фрагменте кода.

Представления, однако, в значительной степени основаны нафайловая система и изменение основной папки, в которой они находятся, просто из Views или Pages непосредственно в корне проекта, приведет к полной ошибке загрузки представления на основе соглашения. Вы всегда можете добавить дополнительные места поиска вида, чтобы они выглядели в /Foo/Views и /Bar/Views и т. Д., Но это на самом деле не рекомендуется.

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

  • Области / Клиенты / Контроллеры
  • Области / Клиенты / Представления
  • Области / Клиенты / Модели

Другими словами, префикс Areas будет обязательным.

...