0

我有 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

编辑:

如果 DataService 是单例的,那么很明显注入会更好。我想如果 DataService 是作用域的,那么注入仍然会更好。你怎么看?

4

1 回答 1

1

Singleton:它将在整个应用程序中创建服务的单个实例。除非特别小心,否则不建议同一服务器上的应用程序使用单例服务共享状态,因为这可能会引入安全漏洞,例如跨电路泄漏用户状态。

Transient:每当组件从服务容器获取 Transient 服务的实例时,它将为每个组件创建一个新的服务实例。使用起来更安全。

Scoped:它将注册一个行为类似于 Singleton 服务的服务。对于仅适用于当前用户的服务,它是首选。

于 2020-06-21T17:38:49.233 回答