Blazor:哪一个更适合注入或级联值

Blazor:哪一个更适合注入或级联值,blazor,blazor-server-side,asp.net-blazor,Blazor,Blazor Server Side,Asp.net Blazor,我有Blazor服务器应用程序,其中的页面组织如下: - Pages - Course - Index.razor - Manage.razor - Add.razor 索引页有两个选项卡控件:管理、添加。两个选项卡都需要访问数据服务。 在资源分配和性能方面,哪一个更好 将数据服务注入Manage.razor和Add.razor 将DataService注入Index.razor并定义级联值以将其传递给Manage.razor和Add.razor 编辑: 若Data

我有Blazor服务器应用程序,其中的页面组织如下:

- Pages
  - Course
    - Index.razor
    - Manage.razor
    - Add.razor
索引页有两个选项卡控件:管理、添加。两个选项卡都需要访问数据服务。 在资源分配和性能方面,哪一个更好

将数据服务注入Manage.razor和Add.razor 将DataService注入Index.razor并定义级联值以将其传递给Manage.razor和Add.razor 编辑:

若DataService是单例的,那个么很明显inject会更好。我想如果DataService的作用域是限定的,那么注入还是更好的。您认为如何?

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

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


作用域:它将注册一个行为类似于单例服务的服务。对于只适用于当前用户的服务,最好使用它。

如果您的数据服务是单例的,那么最好将其注入到两个组件中。