4

我刚开始使用 AppFabric ......

我的应用程序是在医疗保健领域——我们有大约 15000 名系统用户,他们会大量访问患者信息(例如,考虑一组护士/医生在住院时访问患者)。

我想做的是在缓存主机服务器上缓存某些项目(例如患者人口统计信息)和其他项目(例如实验室、药物、诊断成像、报告)。底层数据来自各种第 3 方系统,其中一些系统返回数据极其缓慢。

有谁知道是否可以指示某些项目进入本地缓存而其他项目进入服务器?有太多数据无法全部放入内存。在查看 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/标志/参数?或者,也许,通过使用区域/标签来处理?

谢谢!

4

1 回答 1

2

假设您使用的是 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");

然后,您只需根据您正在使用的数据所需的缓存类型,在代码中从适当的工厂创建您的 DataCache 实例。

于 2012-10-19T19:58:46.113 回答