Azure Storage BufferManager做什么,如何/何时实施?
有关MSDN for的文档介绍了此缓冲区管理器可提高高规模应用程序的性能 我的理解是,这个缓冲区管理器减少了许多小型事务对GC的压力(在许多Azure表实体调用中都会出现这种情况) 然后,我阅读了一篇关于桌面使用的参考资料,而桌面/移动设备使用概况似乎不太可能遇到GC碎片: IBufferManager接口以System.ServiceModel.dll中的BufferManager类为模式,允许桌面客户端轻松利用框架提供的现有实现 问题Azure Storage BufferManager做什么,如何/何时实施?,azure,garbage-collection,azure-storage,azure-table-storage,buffer-manager,Azure,Garbage Collection,Azure Storage,Azure Table Storage,Buffer Manager,有关MSDN for的文档介绍了此缓冲区管理器可提高高规模应用程序的性能 我的理解是,这个缓冲区管理器减少了许多小型事务对GC的压力(在许多Azure表实体调用中都会出现这种情况) 然后,我阅读了一篇关于桌面使用的参考资料,而桌面/移动设备使用概况似乎不太可能遇到GC碎片: IBufferManager接口以System.ServiceModel.dll中的BufferManager类为模式,允许桌面客户端轻松利用框架提供的现有实现 问题 IBufferManager的唯一目的是降低GC的压力吗
System.ServiceModel
”,并尝试使用以下示例:
public class WCFBufferManagerAdapter : IBufferManager
{
private int defaultBufferSize = 0;
public WCFBufferManagerAdapter(BufferManager manager, int defaultBufferSize)
{
this.Manager = manager;
this.defaultBufferSize = defaultBufferSize;
}
public BufferManager Manager { get; internal set; }
public void ReturnBuffer(byte[] buffer)
{
this.Manager.ReturnBuffer(buffer);
}
public byte[] TakeBuffer(int bufferSize)
{
return this.Manager.TakeBuffer(bufferSize);
}
public int GetDefaultBufferSize()
{
return this.defaultBufferSize;
}
}
然后可以按如下方式使用此BufferManager:
StorageCredentials credentials = new StorageCredentials("**", "**");
CloudBlobClient serviceClient = new CloudBlobClient(new Uri("**"), credentials);
BufferManager mgr = BufferManager.CreateBufferManager(<you_can_set>, <you_can_set>);
serviceClient.BufferManager = new WCFBufferManagerAdapter(mgr, <you_can_set>);
serviceClient.GetContainerReference("**");
StorageCredentials credentials=新的StorageCredentials(“**”和“**”);
CloudBlobClient serviceClient=新的CloudBlobClient(新Uri(“**”),凭证);
BufferManager mgr=BufferManager.CreateBufferManager(,);
serviceClient.BufferManager=新的wcfBufferManagerDatapter(mgr,);
serviceClient.GetContainerReference(**);
如果要使用多个线程,可能需要在代码中使用“锁定”。
如果有任何问题,请告诉我