LEADTOOLS HTML5医疗Web查看器服务利用缓存机制来加速读取DICOM数据集图像和信息的数据访问。默认的缓存实现是磁盘缓存,使用cache-as- sor的缓存模式,将缓存当作主要的记录系统来使用。该模式将SOR读写活动委托给缓存,因此应用程序代码不直接负责处理缓存细节。
缓存机制在Leadtools.Dicom.Imaging组装。此库通常仅供LEADTOOLS Medical Web Viewer Web Services内部使用。但是,该库包含一个公共接口,允许您提供自定义缓存实现来替换内置实现。
要创建自己的自定义缓存实现,需要实现IDataCacheProvider接口,定义为:
公共接口IDataCacheProvider
{
保龄球包含(字符串id);
无效写< T > (字符串id, T obj,对象选项,日期时间?到期);
T读< T > (字符串id,对象选项);
无效Remove (字符串id);
无效RemoveAll (字符串id);
保龄球IsWritable ();
保龄球IsReadable ();
保龄球IsRemovable ();
}
使用模式是:
///创建一个提供者(IDataCacheProvider)
vardataCache =新Leadtools.Dicom.Imaging.DiskDataCacheProvider (新Leadtools.Dicom.Imaging.DiskDataCacheStorage (settings.Storage));
///将其传递给代理
vardicomSourceProxy =新加上了dataCache DicomSourceProxy ();
要创建自己的缓存提供程序,只需实现IDataCacheProvider接口,并将其传递给DicomSourceProxy.
的示例实现IDataCacheProvider接口。这个例子使用ServiceStack与软件包对话复述,服务器。Redis是最常用的缓存解决方案之一,它有一个Windows实现,并且很容易从。net (c#)代码中使用。为了使用Redis:
示例Redis缓存实现,带有注释
公共类SampleRedisCacheProvider: IDataCacheProvider
{
RedisEndpoint _redisEndpoint;
公共SampleRedisCacheProvider ()
{
//创建到redis服务器的连接,使用安装服务器时使用的配置值
_redisEndpoint =新RedisEndpoint (“localhost”, 6379);
}
///<摘要>
///检查由(id)标识的对象是否在缓存中可用
///> < /总结
///要查找的对象id
///返回>,如果找到对象,则返回true,否则返回false
公共保龄球包含(字符串id)
{
使用(var客户=新RedisClient (_redisEndpoint))
{
返回client.ContainsKey (id);
}
}
///<摘要>
///将类型为T的对象写入缓存。
///> < /总结
///
对象的类型 ///对象id
///要写入的对象
/// . name="options">保留将来使用
///绝对过期时间。如果该参数为空,则该对象将不会过期,当不再需要该缓存项时,由提供程序来释放该缓存项。
公共无效写< T > (字符串id, T obj,对象选项,日期时间?到期)
{
使用(var客户=新RedisClient (_redisEndpoint))
{
varTimeout =过期。HasValue吗?到期。取值-日期时间。现在:时间跨度为零;
client.As T < >()。SetValue(id, obj, timeout);
}
}
///<摘要>
///从缓存中读取类型为T的对象。
///> < /总结
///
对象的类型 ///对象id
/// . name="options">保留将来使用
///返回>。返回>
公共T读< T > (字符串id,对象选项)
{
T结果=默认的(T);
使用(RedisClient客户端=新RedisClient (_redisEndpoint))
{
varwrapper = client.As
(); result = wrapper.GetValue(id);
}
返回结果;
}
///<摘要>
///从缓存中删除项。
///> < /总结
///要删除的项id
无效IDataCacheProvider。Remove (字符串id)
{
使用(RedisClient客户端=新RedisClient (_redisEndpoint))
{
client.Remove (id);
}
}
///<摘要>
///该方法对给定的id执行通配符/模糊匹配,并删除所有相关的缓存对象。
///> < /总结
///要删除的项id
/// comments >这是一个可选的方法,这里没有实现
公共无效RemoveAll (字符串id)
{
返回;
}
///<摘要>
///检查是否有可用的写能力。
///> < /总结
///返回>,如果可写则为true,否则为false返回>
///例如,如果缓存存储已满,则应该返回false comments >
公共保龄球IsWritable ()
{
返回真正的;
}
///<摘要>
///检查读取能力是否可用。
///> < /总结
///返回>,如果可读则为true,否则为false
公共保龄球IsReadable ()
{
返回真正的;
}
///<摘要>
///检查删除功能是否可用。
///> < /总结
///<返回>如果remove可用,则返回true,否则返回false返回>
公共保龄球IsRemovable ()
{
返回真正的;
}
}
缓存项id说明:
的id用于标识缓存对象的格式总是如下:
xxxxxxx / xxxxxxx xxxxxxx
您可以将其作为一个整体使用,也可以将其分成3个部分,用'/'字符分隔。