ete*_*ity 20 performance azure
我是否应该在每次想要从存储中获取blob时创建CloudStorageAccount和CloudBlobClient实例?例如,我实现了自定义虚拟路径提供程序以使用blob存储.什么是最好的设计解决方案:创建CloudStorageAccount和CloudBlobClient情况下,一次作为我的自定义虚拟路径提供的私有字段,或使用静态的效用,创造CloudStorageAccount和CloudBlobClient实例(共享)方法,我想从一个blob每次存储?从性能的角度来看它有多贵?
San*_*tia 17
您可以重复使用CloudStorageAccount和CloudBlobClient,因为它们没有状态(请参阅Steve的回复,参见Simon的链接).SDK是开源的,您只需查看GitHub上的源代码即可.
如果您查看CloudStorageAccount类,您可以看到它的主要目的是确保您最终使用Blob/Queue和TableEndpoint的StorageCredentials.查看CloudBlobClient的构造函数,您可以看到它存储了存储凭据,端点Uri和一些默认值.
这里没有任何复杂的东西,没有任何网络I/O意味着处理非常便宜.但是当您考虑性能时,每个小优化都可以提供帮助,因此您可以安全地将其存储在静态变量中(这可能会影响您的单元测试),或者如果您使用IoC容器,则可以选择对整个容器使用单个实例.
现在你需要考虑一些事情.您的CloudStorageAccount和CloudBlobClient都将保存存储凭据和端点Uri.但是,如果您通过门户网站更改此信息(您可能更改了存储帐户的密钥)该怎么办?如果存储CloudStorageAccount/CloudBlobClient的单个实例,则可能需要处理RoleEnvironment.Changing事件以使用新的存储帐户信息"刷新"这些对象.