c# - 序列化 CloudBlockBlob 以进行缓存

标签 c# azure azure-blob-storage azure-in-role-cache

我正在为我拥有的 Web API Web 角色实现 Azure 角色内缓存。我希望能够缓存不经常更改的特定 blob 的 BlobReference。这是我用来获取 BlobReference 的代码。我收到的项目是 CloudBlockBlob 类型的 zip 文件

public ICloudBlob GetBlob(string containerName, string blobName)
{
   CloudBlobContainer container = GetBlockBlobContainer(containerName);
   ICloudBlob blob = container.GetBlobReferenceFromServer(blobName);
   return blob;
}

但是,当我尝试将项目放入缓存时,它说 CloudBlockBlob 不可序列化。由于我无法将该类修改为可序列化,是否有解决方法?如果不是,对于不经常更改的 blob,缓存 blob 元数据的首选方法是什么?

最佳答案

将您需要的内容复制到 DTO 中。将复杂对象放入 appdomain 全局数据结构通常不是一个好的模式。你永远不知道它们背后是什么样的对象图以及它们是否是线程安全的。如果这些类来自第三方库,您将无法知道里面有什么。您需要自己控制对象。

长时间运行的进程中的全局状态是非常关键的资源。如果你搞砸了,应用程序可能会不可用,直到手动进程重新启动为止,这是灾难性的。

关于c# - 序列化 CloudBlockBlob 以进行缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33652805/

相关文章:

c# - GetHashCode() 经常重写冲突方式

c# - ConfigurationSection ConfigurationManager.GetSection() 总是返回 null

asp.net - 尝试访问 Azure Web 应用程序中的特定页面时发生错误

Azure Functions - Blob 流输出绑定(bind)

azure-blob-storage - 使用 SQL 行中的文件名和数据创建 Blob

c# - 如何将数据库更改传播到我的 .edmx 文件?

c# - OxyPlot:如何使用轴标签格式化程序并显示 Y 标签?

python - 如何在azure webjob中使用python虚拟环境

azure - 如何在 Azure AD B2C 中管理用户流之间的单个帐户/ session

c# - 将 VM 物理路径映射到 azure blob 存储