Могу ли я кешировать данные в silverlight, который используется всеми пользователями? - PullRequest
1 голос
/ 25 февраля 2011

Я создаю графический инструмент в Silverlight, который считывает данные из нескольких файлов и базы данных.

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

Я хочу использовать состояние приложения asp.net Cache ["Object"], но в Silverlight? Какая методология лучше?

Ответы [ 4 ]

4 голосов
/ 25 февраля 2011

Поскольку Silverlight работает на стороне клиента, вам необходимо кэшировать данные на стороне сервера. Вы можете получить ваши данные с WCF. Что-то вроде этого:

В прошлом я занимался кэшированием запроса с использованием WCF с использованием корпоративной библиотеки :

public class YourWcfService
{
    ICacheManager _cacheManager = null;

    public YourWcfService()
    {
        _cacheManager = EnterpriseLibraryContainer.Current.GetInstance<ICacheManager>("Cache Manager");
    }

}

Ваш веб-метод будет выглядеть примерно так:

    [OperationContract]
    public List<Guid> SomeWebMethod()
    {
        if (_cacheManager.Contains("rgal")) // data in cache?
                result = (List<Guid>)_cacheManager.GetData("rgal");
            if (result == null)
            {

                result = FETCH FROM DATABASE HERE;
                // cache for 120 minutes
                _cacheManager.Add("rgal", result, CacheItemPriority.Normal, null, new AbsoluteTime(TimeSpan.FromMinutes(120)));
            }
                    return result;
    }
1 голос
/ 25 февраля 2011

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

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

0 голосов
/ 09 апреля 2011

Новая корпоративная библиотека Silverlight Integration Pack предоставляет вам возможности кэширования на клиенте.Поддерживается 2 типа кэширования данных: в памяти и в изолированном хранилище.Вы также получите гибкость настройки политик истечения срока действия (программно или через внешнюю конфигурацию) и поддержку инструмента настройки.

Примечание: это предварительный просмотр кода, но он должен быть выпущен как окончательный в мае.

0 голосов
/ 25 февраля 2011

Кэширование действительно необходимо? Неужели ты так плохо разбираешься в своей базе данных?

Ваша БД - это ваше хранилище. Если у вас нет проблем с производительностью, это преждевременная оптимизация.

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