【问题标题】:Blazor: Which is better inject or cascading valueBlazor:注入或级联价值哪个更好
【发布时间】:2020-06-20 18:01:40
【问题描述】:

我有 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 是作用域的,那么注入仍然会更好。你怎么看?

【问题讨论】:

  • 如果你的 DataService 是单例的,那么最好将它注入到两个组件中。

标签: blazor blazor-server-side asp.net-blazor


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2021-08-09
    • 1970-01-01
    • 2019-02-02
    • 2013-03-16
    • 1970-01-01
    • 2011-02-22
    • 2013-06-06
    • 2013-11-02
    • 1970-01-01
    相关资源
    最近更新 更多