在应用程序生命周期中使用依赖项注入使CloudBlobClient保持活动状态

时间:2015-10-02 09:37:16

标签: c# azure dependency-injection

我想依赖将CloudBlobContainer实例“容器”注入我的自定义类。

问题是生命。我可以为Per Web Request或者作为单身人士做,因为该客户端在应用程序运行时永远不会改变。

我的问题是我应该预料到问题,因为blobClient会保持一种开放连接吗?

CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
ConfigurationManager.AppSettings["MyDataStorageConnectionString"]
);

CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference("mydata");

1 个答案:

答案 0 :(得分:1)

IIRC,Azure SDK为您提供了一个面向对象的API,可以保护您免受通信细节的影响。您与Azure存储服务进行通信的方式是通过HTTP(它们是level 2 REST services),因此保留CloudBlobContainer对象不会保持连接打开。

在Web应用程序的生命周期内,我一直没有遇到过CloudBlobContainer个对象的问题。

仍然,根据the documentation,实例成员不保证是线程安全的,所以为了安全起见,您应该考虑为每个Web请求设置一个实例。