Как сделать контроллеры ASP.NET Core доступными с использованием соглашений об архитектуре Screaming?

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

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

  • Контроллеры
  • Взгляды
  • Модели

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

  • Заказчики / Контроллеры
  • Клиенты / Просмотры
  • Заказчики / модели

Является ли это возможным? Заранее спасибо.


person Leandro De Mello Fagundes    schedule 08.11.2019    source источник


Ответы (1)


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

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

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

  • Области / Заказчики / Контроллеры
  • Области / Клиенты / Просмотры
  • Области / Заказчики / Модели

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

person Chris Pratt    schedule 08.11.2019
comment
Спасибо Крису за ваш комментарий! Я уже знал о концепции зон, но не думаю, что это делается для той цели, которую я пытаюсь использовать. Вы читали о Screaming Architecture? Я понимаю, что такое соглашения, но я действительно хочу попробовать их в проекте asp.net mvc. Моя главная цель - применить этот шаблон папок и имен файлов к его структуре. В любом случае спасибо за вашу помощь - person Leandro De Mello Fagundes; 08.11.2019
comment
Следуя соглашениям, сохраняя основную папку Views или используя Areas , будет кричащая архитектура в том смысле, что любой, кто знаком с ASP.NET Core, точно знает, что это такое, что он делает и где искать вещи. По иронии судьбы, перемещение чего-либо для создания кричащей архитектуры приведет к поражению цели, поскольку, например, любой разработчик ASP.NET Core потеряется, пытаясь найти представление. - person Chris Pratt; 08.11.2019