我刚开始使用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/FLAG/参数?也许是使用区域/标签来处理?
谢谢!
假设您使用的是AppFabric 1.1,则可以配置具有不同配置的多个DataCacheClient节点。因此,使用您现有的示例,您将做类似的事情:
<!-- 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"/>
然后,从代码中,您使用以下名称而不是使用默认值的构造函数有不同的DataCacheFactoryConfigurations
:
DataCacheFactoryConfiguration localCachingFactoryConfig = new DataCacheFactoryConfiguration("LocalCaching");
DataCacheFactoryConfiguration remoteOnlyCachingFactoryConfig = new DataCacheFactoryConfiguration("RemoteOnlyCaching");
然后,您只需根据适当的工厂在代码中创建数据acache实例,该实例基于您需要的数据所需的哪种缓存。