代码之家  ›  专栏  ›  技术社区  ›  Daniel Schaffer

如何从scaleout-stateserver(soss)获取可用名称缓存对象的列表?

c#
  •  2
  • Daniel Schaffer  · 技术社区  · 16 年前

    我使用V4.0。

    更新:

    到目前为止,我已经破解了:

    public class AllFilter : IFilter
    {
        #region IFilter Members
    
        IndexCollection IFilter.GetIndexCollection()
        {
            return new IndexCollection();
        }
    
        MatchOptions IFilter.GetMatchOptions()
        {
            return MatchOptions.MatchAll;
        }
    
        #endregion
    }
    
    public class CacheMonitorController : Controller
    {
        public ActionResult Index()
        {
            var results =
                from result in ApplicationNamespace.GlobalNamespace.Query(new AllFilter()).OfType<StateServerKey>()
                group result by result.AppId;
    
            var b = new StringBuilder();
    
            foreach (var result in results)
            {
                var cache = CacheFactory.GetCache(result.Key);                
                b.AppendLine(cache.Name);
            }
    
            return this.Content(b.ToString(), "text/plain");
        }
    }
    

    不幸的是,缓存的名称总是出现 null ,即使在创建缓存时肯定有一个名称。这个名字当然需要在用户界面中可以识别,所以我需要一种方法来获取它。

    1 回复  |  直到 13 年前
        1
  •  1
  •   Daniel Schaffer    16 年前

    显然,在v4.0中没有办法做到这一点——两个存储区本身的键以及值的键都存储为哈希(以 uint 因此,除非使用实际名称检索namedcache,否则无法知道该名称。

    唯一的选择是跟踪缓存中另一个存储中的键的字符串值。

    根据scaleout软件公司的MarkWaterman的说法,检索这些名字的能力将在v5.0版本中提供,而v5.0版本将于2009年春季发布。