Я пытаюсь определить, возможно ли (или практично) реализовать архитектуру критики дяди Боба в ASP.NET MVC 5 вместо использования структуры папок по умолчанию.
Здесь ссылка на описание Кричащей архитектуры: http://blog.8thlight.com/uncle-bob/2011/09/30/Screaming-Architecture.html
Гипотетическая структура папок будет выглядеть примерно так:
Корень
- Клиенты
- Контроллеры
- CustomerController.cs
- Модели
- Customer.cs
- Просмотров
- Index.cshtml
- Details.cshtml
- Update.cshtml
- Контроллеры
- Сотрудники
- Контроллеры
- EmployeesController.cs
- Модели
- Employee.cs
- Просмотров
- Index.cshtml
- Details.cshtml
- Update.cshtml
- Контроллеры
- Общий
- Просмотров
- _Layout.cshtml
- Error.cshtml
- Просмотров
- _ViewStart.cshtml
- Web.config
Соответствующие маршруты URL будут выглядеть так:
- http://www.example.com/customers/ = > Индекс клиентов
- http://www.example.com/customers/details/1 = > Информация о клиенте
- http://www.example.com/customers/update/1 = > Обновление клиента
- http://www.example.com/employees/ = > Индекс сотрудников
- http://www.example.com/employees/details/1 = > Сведения о сотрудниках
- http://www.example.com/employees/update/1 = > Обновление сотрудников
Я создал пользовательский RazorViewEngine и добавил соответствующие форматы местоположения (например, "~/{1}/Views/{0}.cshtml" ) и форматы форматов частичного просмотра (например, "~/Shared/Views/{ 0}.cshtml" ). Я также переместил общий_ViewStart.cshtml в корневой каталог и объединил папку web.config Views/Shared с корневым уровнем web.config, чтобы избежать дублирования этих двух файлов во всех папках View.
Все работает отлично, однако, если я попытаюсь перейти на индексную страницу (например, http://www.example.com/employees/), я получаю ошибку 403.14 (запрещен), Все остальные маршруты (в том числе http://www.example.com/employees/index) работают нормально.
Я предполагаю, что IIS явно блокирует маршрут к методу индекса контроллера, потому что URL-адрес совпадает с папкой в файловой системе, и просмотр каталогов по умолчанию отключен. Однако, если я разрешаю просмотр каталогов, это фактически приводит меня к фактическому списку каталогов, а не к методу индекса контроллера.
Я могу перемещать папки "Клиенты и сотрудники" в подпапку (т.е. вытеснять их из корня), и все работает отлично, но я хотел бы попытаться сохранить эти папки на верхнем уровне (в соответствии с рекомендациями Screaming Architecture).
Есть ли у кого-нибудь решение этой проблемы?
Обратите внимание, что область MVC не является решением, которое я ищу, поскольку оно не позволяет описывать описанную выше структуру папок (то есть папки верхнего уровня, названные в честь использования высокоуровневых вариантов использования и представлений, содержащихся непосредственно в папке представлений чем во вложенной папке).