|
Разделение данных сервиса между группами клиентов
|
|||
---|---|---|---|
#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&fpage=5&tid=1396801]: |
0ms |
get settings: |
10ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
30ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
38ms |
get tp. blocked users: |
2ms |
others: | 259ms |
total: | 379ms |
0 / 0 |