Как создать вспомогательный класс на стороне клиента в Silverlight?

2

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

Теперь я понимаю, как использовать локальное хранилище для кэширования их, за исключением того, что я не хочу, чтобы все "если в локальном хранилище, возвращайте значения локального хранилища, другие получают значения из асинхронного сервера" в коде для моего приложения xaml. < бр / " >
Итак, я попытался переместить этот код в класс-помощник, но для вызовов асинхронного вызова нужен обратный вызов, в котором я теряюсь. Я попытался передать общий EventHandler в мой вспомогательный класс, но метод вспомогательного класса действительно должен быть статичным. Итак, это меня отбрасывает. Будет ли мой вспомогательный метод нестационарным, и если да, то мне нужно беспокоиться о безопасности потоков? Aaarh! Слишком много вопросов! Ха-ха. В любом случае, я уверен, какой-то умный человек может сказать мне лучший способ приблизиться к этому почти сразу! Спасибо заранее.

  • 0
    Да, модель async everything в Silverlight все время отталкивает людей. Я однажды построил слой вставного кэша в Silverlight, где я раньше работал ... но я там больше не сотрудник, поэтому ... мне вас жаль. :-(
  • 0
    Уэйд, тебе все еще нужна помощь?
Показать ещё 1 комментарий
Теги:
wcf
silverlight

1 ответ

3
Лучший ответ

В прошлом я сделал одно крупное приложение Silverlight. Он научил меня, что вы не должны бороться с системой.

Если я не ошибаюсь, Silverlight сам использует сетевой уровень браузера для подключения к Интернету. Таким образом, вы все еще можете использовать рычаги - и Silverlight по-прежнему уважает - вещи с соответствующими заголовками управления кешем и т.д.

Поэтому, исходя из моего опыта, я предлагаю вам попробовать сделать серверный компонент (сервер WCF) правильным типом вывода-кэширования ala ASP.NET и сетевым уровнем в Silverlight и хостинг-браузер будет автоматически выполнять кэширование для вас.

Вам может быть повезло с режимом RESTful WCF, так как вы можете использовать правильное кэширование HTTP во всем, см. это сообщение в блоге: REST в WCF - часть X - поддержка кеширования и условного GET для начала.

Это также делает ваш код менее сложным, так как вам не нужно добавлять еще один сложный слой в вашу систему и приручить его работать с запутанной системой привязки XAML.

  • 0
    Отличные предложения. Я думаю ты прав. Сейчас я просто избегу кеширования на основе кода и использую что-то вроде HttpWatch, чтобы посмотреть, что произойдет. Спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню