2010-04-02 2 views
1

У меня есть унаследованная система клиентских серверов, на которой сервер ведет запись некоторых данных, хранящихся в базе данных sqlite. Данные связаны с мониторингом шаблонов доступа к файлам, хранящимся на сервере. Клиентское приложение в основном является удаленным средством просмотра данных. Когда клиент запущен, он подключается к серверу и получает данные с сервера для отображения в виде сетки. Данные обновляются в реальном времени на сервере, и просмотр в клиенте автоматически обновляется.Повышение эффективности системы клиентских серверов

Есть две проблемы, связанные с текущей реализацией:

  1. Когда база данных становится слишком большой, он занимает много времени, чтобы загрузить клиент. Каковы наилучшие способы борьбы с этим. Один из вариантов - поддерживать кеш на стороне клиента. Как лучше всего реализовать кеш?

  2. Как сервер может поддерживать diff так, чтобы он посылал diff только в течение цикла обновления. Может быть несколько клиентов, и каждый клиент должен отображать последние данные, доступные на сервере.

Сервер - это демон службы Windows. И клиент, и сервер реализованы в C#

ответ

0
  • Может поставить дату/временную метку (индексированный) на данных, а затем загрузить данные> последнюю успешную временную метку.

  • Загрузить данные на страницах, чтобы получить быстрый запуск, а затем загрузить остальные в фоновом режиме.

+0

Не могли бы вы подробнее рассказать о данных загрузки в подходах страниц? Я использую представление Grid. Таким образом, мы загружаем данные впоследствии, когда пользователь просматривает представление? – Tanuj

+0

Возможно, отправьте пустую таблицу клиенту, а затем используйте ajax для загрузки данных асинхронно на страницах, скажем 1000 записей за раз. Я бы подождал, пока пользователь будет прокручиваться, потому что пользовательский опыт будет отрывистым по сравнению с текущей реализацией. –

0

Если вы идете на «работу в автономном режиме» (кэшированное) решение, вы должны взглянуть на MS ADO.NET Sync Framework. Он поддерживает поставщиков и решает большинство трудных проблем с синхронизацией данных.

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

+0

Можем ли мы использовать структуру синхронизации с sqlite? – Tanuj

+0

Структура имеет открытую модель поставщика, поэтому вполне возможно написать поставщика SQLite. Уже существует ли один из них с приемлемой лицензией, на что Google должен ответить. –

Смежные вопросы