我刚刚开始使用AppFabric …
我的应用程序是医疗保健 – 我们有大约15000个系统用户,他们突然访问患者信息(例如,想到一个护士团队/医生在住院时访问患者).
我想做的是在内存中缓存某些项目(例如患者人口统计信息)
缓存主机服务器上的其他项目(例如实验室,药物,诊断成像,报告).底层数据来自各种第三方系统,其中一些系统返回数据的速度极慢.
有谁知道是否可以指示某些项目进入本地缓存而其他项目进入服务器?所有数据都适合内存.在查看MSDN文档时,这是一个示例配置文件.
<dataCacheClient requestTimeout="15000" channelOpenTimeout="3000" maxConnectionsToServer="1">
<localCache isEnabled="true" sync="TimeoutBased" ttlValue="300" objectCount="10000"/>
<clientNotification pollInterval="300" maxQueueLength="10000"/>
<hosts>
<host name="CacheServer1" cachePort="22233"/>
<host name="CacheServer2" cachePort="22233"/>
</hosts>
<securityProperties mode="Transport" protectionLevel="EncryptAndSign" />
<transportProperties connectionBufferSize="131072" maxBufferPoolSize="268435456"
maxBufferSize="8388608" maxOutputDelay="2" channelInitializationTimeout="60000"
receiveTimeout="600000"/>
</dataCacheClient>
看起来启用本地缓存可以启用整个缓存客户端吗?
为了支持我描述的场景,这是否意味着我必须创建两个缓存客户端,我的代码必须知道/知道将数据放入哪个缓存客户端?或者,在将数据存储到缓存中时是否可以使用API /标志/参数?或者,使用区域/标签处理?
谢谢!
最佳答案 假设您正在使用具有不同配置的AppFabric 1.1,
you can configure multiple dataCacheClient nodes.因此,使用您现有的示例,您将执行以下操作:
<!-- local caching client -->
<dataCacheClient name="LocalCaching" requestTimeout="15000" channelOpenTimeout="3000" maxConnectionsToServer="1">
<localCache isEnabled="true" sync="TimeoutBased" ttlValue="300" objectCount="10000"/>
<clientNotification pollInterval="300" maxQueueLength="10000"/>
<hosts>
<host name="CacheServer1" cachePort="22233"/>
<host name="CacheServer2" cachePort="22233"/>
</hosts>
<securityProperties mode="Transport" protectionLevel="EncryptAndSign" />
<transportProperties connectionBufferSize="131072" maxBufferPoolSize="268435456"
maxBufferSize="8388608" maxOutputDelay="2" channelInitializationTimeout="60000"
receiveTimeout="600000"/>
然后从代码中使用带有名称而不是仅使用默认值的构造函数来使用不同的DataCacheFactoryConfiguration:
DataCacheFactoryConfiguration localCachingFactoryConfig = new DataCacheFactoryConfiguration("LocalCaching");
DataCacheFactoryConfiguration remoteOnlyCachingFactoryConfig = new DataCacheFactoryConfiguration("RemoteOnlyCaching");
然后,您只需根据您正在使用的数据所需的缓存类型,从代码中的相应工厂创建DataCache实例.