Это не так просто, как вы могли ожидать - но это выполнимо.
Когда объект добавляется в кэш AppFabric, он попадает в регион, независимо от того, указали ли вы регион илине.Когда создается кэш, создается набор областей по умолчанию (1024 из них на моей тестовой установке, Default_Region_0000
, Default_Region_0001
и т. Д.), И когда элементы добавляются в кэш, я предполагаю, что существует некоторый алгоритмэто определяет, в какой из регионов они идут.
Итак, чтобы найти общее количество объектов в кеше за пределами именованных областей, вам нужно запустить GetObjectsInRegion для каждой области по умолчанию:
int totalItemCount = 0;
foreach (string regionName in cache.GetSystemRegions())
{
totalItemCount += cache.GetObjectsInRegion(regionName).Count();
}
Учитывая сложность этихВ 1024 регионах, я думаю, вы могли бы убедительно доказать, что каждый объект должен находиться в именованном регионе: это фактически не требует затрат, и потенциальная выгода в том, что становится легче увидеть, сколько объектов находится в кэше.Если это стандартное требование для вас, вы также можете подумать о том, чтобы сделать это методом расширения в классе DataCache.