Где я должен поместить обычные служебные методы в Asp. Net Core MVC -проект? - PullRequest
0 голосов
/ 07 января 2020

В настоящее время у меня есть все мои общие методы служебных функций в базовом контроллере, от которого наследуются все мои контроллеры. Это методы для функциональности, такие как загрузка файлов, изменение размеров изображений, удаление файлов, отправка электронных писем, генерация случайных паролей, хеширование паролей и т. Д. c.

Какая структура рекомендуется для таких вещей?

1 Ответ

1 голос
/ 08 января 2020

В этом случае вы не должны помещать все эти служебные функции в ваш базовый контроллер. Вы столкнетесь с множеством проблем, если ваш проект будет расти. Изменения и тестирование этих методов могут стать трудными, все ваши унаследованные классы должны использовать одни и те же служебные методы, например, c. Взгляните на Состав по наследованию , чтобы увидеть другой подход.

Иногда я склоняюсь к организации своих проектов следующим образом, если это может вам помочь:

  • Простые вспомогательные методы: создайте папку и пространство имен (например, пространство имен [...]. Common ") внутри вашего веб-проекта и поместите в него один или несколько публикуемых c stati c классов (например, класс" FileHelper "). .cs "," StringHelper.cs "и др. c). Если вам нужен один из этих методов в действии контроллера, просто поместите оператор" using ... Common "в верхней части вашего класса контроллера и вызовите, например, FileHelper. MethodName.

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

  • Более сложные организации всегда возможны в зависимости от ваших потребностей. Посмотрите на многоуровневую, шестиугольную или луковую архитектуру, если ваши проекты растут.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...