| 
 | 
| 
 
Разделение данных сервиса между группами клиентов 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Добрый день. Не имея достаточного опыта с WCF, сделал такую архитектуру, что вокруг сервиса есть обвязка из статических классов со статическими данными. Вот прям кусок кода такого класса: Код: c# 1. 2. 3. 4. 5. Сервис у меня с CallbackContract. Идея была в том, что, так как все static то данные как бы общие, все сессии их видят и могут вносить изменения и остальные их увидят. Конкурентность пока что не интересует т.к. клиенты только добавляют записи, которые не конфликтуют друг с другом. А сервис сам периодически удаляет устаревшие данные. В итоге все это весьма неплохо и надежно работает, как ни странно для меня т.к. это мой первый реальный опыт с WCF, да и то, что в статике нужно знать меру это понятно. Но теперь появилась необходимость, что бы сервис поддерживал несколько независимых групп пользователей и у каждой группы все эти данные должны быть свои. Вот тут статика вышла мне боком т.к. данные уже просто так не разделить. И теперь я не знаю, как с минимальными усилиями можно из этого выкрутиться. Т.е. нужно что-то типа PerSession только сессия это группа клиентов. InstanceContextMode у меня и стоит PerSession. Можно сделать, что бы при регистрации CallbackContract клиент передавал некий признак принадлежности к группе, пусть даже GUID. Тогда можно было бы в эти общие статические классы добавить этот признак группы и сделать некий класс-обертку, который бы фильтровал данные из статических по этому признаку. При этом создавать этот класс только один раз при регистрации CallbackContract, сохранять в нем этот признак и за счет режима PerSession он при последующих вызовах уже будет иметь этот признак. Как считаете, стоит ли так делать или это принципиально неправильно и лучше это все переделать по-другому пока не слишком поздно? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 08.02.2016, 11:34 | 
  
  
  
   | 
||
| 
 | 

start [/forum/topic.php?fid=19&gotonew=1&tid=1396801]:  | 
    0ms | 
get settings:  | 
    9ms | 
get forum list:  | 
    16ms | 
check forum access:  | 
    4ms | 
check topic access:  | 
    4ms | 
track hit:  | 
    40ms | 
get topic data:  | 
    9ms | 
get first new msg:  | 
    7ms | 
get forum data:  | 
    2ms | 
get page messages:  | 
    43ms | 
get tp. blocked users:  | 
    1ms | 
| others: | 244ms | 
| total: | 379ms | 

| 0 / 0 | 

На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даете согласие с использованием данных технологий.