序列化 CloudBlockBlob 以进行缓存
Serializing CloudBlockBlob for Caching
我正在为我拥有的 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 不可序列化。由于我无法将 class 修改为可序列化,是否有解决方法?如果不是,为不经常更改的 blob 缓存 blob 元数据的首选方法是什么?
将您需要的内容复制到 DTO 中。将复杂对象放入 appdomain 全局数据结构中通常不是一个好的模式。你永远不知道它们背后有什么样的对象图,它们是否是线程安全的。如果 类 来自第 3 方库,您将无法知道里面有什么。您需要自己控制对象。
长 运行 进程中的全局状态是非常关键的资源。如果你搞砸了,应用程序可能无法使用,直到手动进程重新启动,这是灾难性的。
我正在为我拥有的 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 不可序列化。由于我无法将 class 修改为可序列化,是否有解决方法?如果不是,为不经常更改的 blob 缓存 blob 元数据的首选方法是什么?
将您需要的内容复制到 DTO 中。将复杂对象放入 appdomain 全局数据结构中通常不是一个好的模式。你永远不知道它们背后有什么样的对象图,它们是否是线程安全的。如果 类 来自第 3 方库,您将无法知道里面有什么。您需要自己控制对象。
长 运行 进程中的全局状态是非常关键的资源。如果你搞砸了,应用程序可能无法使用,直到手动进程重新启动,这是灾难性的。