Blazor: какое значение лучше вводить или каскадировать - PullRequest
0 голосов
/ 20 июня 2020

У меня есть серверное приложение Blazor, в котором у меня есть страницы, организованные следующим образом:

- Pages
  - Course
    - Index.razor
    - Manage.razor
    - Add.razor

Индексная страница имеет элемент управления вкладками с 2 вкладками (управление, добавление). Обе вкладки должны иметь доступ, скажем, к DataService. Что лучше с точки зрения распределения ресурсов и производительности?

  1. Ввести DataService как в Manage.razor, так и в Add.razor
  2. Ввести DataService в Index.razor и определить каскадное значение для его передачи в Manage.razor и Add.razor

Edit:

Если DataService одноэлементный, тогда совершенно ясно, что инъекция будет лучше. Я предполагаю, что если DataService находится в области видимости, тогда все равно будет лучше внедрить. Как вы думаете?

1 Ответ

1 голос
/ 21 июня 2020

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

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

Scoped : он зарегистрирует службу, которая ведет себя как службы Singleton. Это предпочтительно для служб, которые должны быть доступны только текущему пользователю.

...