Stati c класс против инъекций на сервере Blazor - PullRequest
0 голосов
/ 04 апреля 2020

Я разработчик WPF. Мы разработали ERP. Я хочу конвертировать свое приложение на сервере Blazor для Интернета. Я новичок в веб-технологиях и Blazor. У меня вопрос: у меня есть класс stati c, который имеет почти 50 свойств (только свойства без метода) для хранения определенных данных на уровне приложения. Мы устанавливаем значение в этих свойствах, когда пользователь входит в систему, после чего мы используем эти значения везде, где это требуется. Теперь мой вопрос: как я могу использовать этот класс, который я ищу в Интернете, и обнаружил, что я могу использовать его двумя способами.

  1. Добавить службу Singleton. Внедрить его туда, где это требуется, и использовать эти значения.
  2. Я могу напрямую использовать этот класс stati c, где бы он ни требовался, без добавления служб и инъекций.

Так что лучше практики и почему в моем случае.

1 Ответ

1 голос
/ 06 апреля 2020

Оба подхода могут быть «синтаксически» правильными, но внедрение зависимостей даст вам максимальную гибкость. После перехода на. NET Core DI интегрирован в каркас, поэтому реализовать его довольно просто (хотя с самого начала трудно доминировать над ним).

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

Вам следует создайте фабрику, которая создает этот класс для каждого пользователя, а затем зарегистрируйте его в DI как scoped , поскольку объекты такого типа сохраняются в течение всего сеанса пользователя.

Здесь вы найдете полезно c от Microsoft о том, чего вы пытаетесь достичь, включая шаблоны и практики:

Внедрение зависимостей конфигурации

С уважением

...