Структура данных для хранения данных клиента, полученных из веб-службы - PullRequest
1 голос
/ 21 февраля 2012

В веб-приложении я вызываю веб-сервис для получения метаданных документов, связанных с конкретным клиентом.Этот вызов может вернуть набор записей документа между 10 и 300. Я хотел бы сохранить полученные данные в Словаре (Key = docID - Value = метаданные как сложный класс) и сначала проверить идентификатор документа в Словаре.Только если не найден, я бы позвонил в веб-сервис (и затем обновил бы словарь).

Как я могу поддерживать эту структуру данных в сеансе пользователей?
Разные пользователи могутполучить доступ к приложению и запросить данные о разных (или одинаковых) клиентах.В один и тот же момент будет подключено до 40 пользователей.

Насколько безопасным / эффективным было бы создание одноэлементного класса для управления этой структурой данных? Более того, избегая его слишком большого роста.

Кто-нибудь знает хорошую практику в этом сценарии?

Ответы [ 3 ]

1 голос
/ 21 февраля 2012

Я бы использовал Кэш для хранения Dictionary.Cache является общим для всех приложений Sessions.

if(Cache["Documents"] != null){
    var dict = (Dictionary<int,YourClass>)Cache["Documents"];
    if(!dict.ContainsKey(documentID)){
        dict.Add(documentID, yourComplexClass);
    }
}else{
    var dict = new Dictionary<int,YourClass>();
    dict.Add(documentID, yourComplexClass);
    Cache.Insert("Documents", dict);
}
0 голосов
/ 21 февраля 2012

Я думаю, что было бы лучше хранить этот словарь в Магазине приложений , а не в пользовательской сессии.

0 голосов
/ 21 февраля 2012

Вы можете сохранить словарь в сеансе.

не уверен, где синглтон может зайти, просто используйте менеджер сессий.

см. http://msdn.microsoft.com/en-us/library/ms178581.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...