【问题标题】:What is the correct lifetime for the dependency injection of DatastoreDb and DatastoreClient classesDatastoreDb 和 DatastoreClient 类的依赖注入的正确生命周期是多少
【发布时间】:2018-03-28 16:05:44
【问题描述】:

我目前正在研究将 Google Datastore 与 .Net Core 2 webapi 应用程序结合使用。

我正在尝试计算将 DatastoreDb 实例和/或 DatastoreClient 实例注入存储库组件的正确生命周期。 我猜生命周期应该是作用域(每个 http api 请求一个)或瞬态(每个内部实现调用一个)。

从实现代码来看,DatastoreDb 是一个轻量级的包装组件,而 DataStoreClient 在构造底层的 REST API 代理时具有稍多的构造开销。

还有两个设置类,CallSettings 和 DatastoreSettings,我猜它们可以通过使用某种形式的包装类来获得静态生命周期。

关于如何管理这些类的生命周期以及正确的方法应该是什么,我在文档或示例中找不到太多帮助。

如有任何建议,我们将不胜感激。

【问题讨论】:

标签: c# google-cloud-datastore


【解决方案1】:

如果保证这两个设置类在应用程序的生命周期内是静态的,那么将它们设置为单例是安全的,这就是我将采用的方法。

数据存储和客户端的范围将更多地取决于您的应用程序如何使用它们,而不是对象本身。

一般来说,瞬态方法是最安全的,因为每次使用都会获得一个新对象,而且您无需担心任何潜在的并发问题。除非您发现由于无法通过其他方式解决的额外实例化而导致性能问题,否则我建议您采用这条路线。

请求范围也可能是合适的,尤其是当您的应用程序需要为每个请求创建这些对象的许多实例时。通常,这也是一种线程安全的方法,除非您有分离多个线程或异步调用这些对象的请求。如果是这种情况,您需要确保处理任何共享实例的并发。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-07
    • 2017-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多