У меня есть приложение SaaS, которое развертывается на клиентах как приложение ClickOnce, где клиент подключается к моему облачному серверу через соединение WCF NetTcp. Все данные хранятся на сервере, но клиент должен иметь возможность видеть свои данные.
Все это работает, но у меня возникают небольшие проблемы, когда нужно перенести много данных, например, в одной таблице клиент может иметь около 3000 записей, и это займет очень много времени, чтобы пройти через соединение WCF. Итак, вот проблема 1: как получить необходимые данные с сервера. Прямо сейчас, пытаясь сделать это синхронно, это просто время ожидания. Я мог бы увеличить границы тайм-аута, но это слишком похоже на грубую силу. Вы бы порекомендовали какое-нибудь асинхронное решение - и если да, то как бы вы сделали это через WCF?
Проблема 2: после того, как все эти данные были сброшены один раз, имело бы смысл кэшировать их и выполнить некоторую фоновую синхронизацию, чтобы убедиться, что они остаются свежими. Но как его кешировать? Стоит ли отправлять базу данных SQL Express с приложением ClickOnce? Или есть более простой способ? И где вы можете сохранить данные кэша, учитывая ограничения песочницы приложения ClickOnce?