Здравствуйте, bin64, Вы писали:
_FR>>Данная ремарка посвящена использованию синглетона, ибо в некоторых кругах, к коим имею честь принадлежать и я, использование изменяемых глобальных объектов считается за не комильфо. Подробнее о синглетонах можно вычитать здесь.
B>B>Синглетон -- это когда нужен ровно один экземпляр. Вопрос контроля самого создания не ставится.
B>_dataService — именно этот случай. Кэш, как таковой, находится между БД и _dataService.
Именно про этот случай принято в нашей секте всячески порицать. Впрочем, никто вас не агитирует: если сказанно в статье не навело вас на "правильные" размышления, можете на мои слова внимания не обращать.
Разница в том, что "_dataService" у вас содержит некое состояние, которое требует настройки (это видно из протокола вызова — не сказано откуда брать данные, значит _dataService это знает, не сказано, как кешировать, значит _dataService это знает и прочее). Это очень печально видеть в, тем более, больших приложениях.
_FR>>Хорошим примером синглетона может служить DBNull.Value. Плохим — глобальный кеш объектов.
B>Вот тут, видимо, тонкая грань и прорисовывается. Т.к. апп-серверов будет несколько (аля кластер), то решено было выделить Головного Арбитра. Он распределяет не только нагрузку по запросам, но и по кэшу (на самом деле их два: апп-арбитр и кэш-арбитр, для удобства, во время своих переговоров с коллегами мы объединяем их, для краткости). На каждом aпп-сервере есть свой арбитр, который в момент запуска определяется кто он: ведомый или ведущий...
B>Теперь вопрос. Такая модель, тоже является "плохим примером"?
Понятия не имею, на самом деле вы сказали очень мало. Кстати, под "глобальный кеш объектов" я на самом деле подразумевал ("Плохим") не сам по-себе кеш, а реализацию его (доступа к нему) в виде синглетона.
Вообще я не очень понимаю идею распределения нагрузки "по кэшу" — это что же, распределятор должен знать, какой у кого кеш?

Или по каким критериям он будет распределять? А то ведь и "по запросам" можно "распределять" в порядке живой очереди или даже рандомайзером