DatastoreDb和DatastoreClient类的依赖项注入的正确生存期是多少

时间:2018-03-28 16:05:45

标签: c# google-cloud-datastore

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

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

查看实现代码,DatastoreDb是一个轻量级的包装器组件,而DataStoreClient在构造底层的其余API代理时会略微增加构造开销。

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

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

任何建议都会感激不尽。

1 个答案:

答案 0 :(得分:1)

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

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

通常,瞬态方法是最安全的,因为您将为每次使用获取新对象,并且您不必担心任何潜在的并发问题。除非您发现由于您无法通过其他方式解决的额外实例而遇到性能问题,否则我建议您使用此路线。

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