В настоящее время я работаю над настольным приложением c # .NET, которое будет взаимодействовать с базой данных через Интернет через службы WCF и WCF. В приложении будет много точек, которые, возможно, потребуется обновить через некоторый интервал. Самым простым решением было бы просто поместить эти области в таймер и запросить базу данных. Однако, поскольку тысячи клиентов подключаются к уровню обслуживания и, следовательно, к базе данных, эти операции будут очень дорогими для сервера.
То, что я рассмотрел, - это создание RSS-канала, который опрашивается клиентом и позволяет клиенту знать, когда эти конкретные области необходимо обновить. Канал RSS будет управляться службой, которая либо опрашивает базу данных на предмет изменений, либо выполняет итерацию по списку элементов, которые ставятся в очередь запросами WCF, сделанными клиентом.
Я также рассмотрел вопрос о создании какого-либо прямого и непрерывного соединения от клиента к серверу, но я не уверен, какие исходящие порты брандмауэра будут открыты с клиента. Я мог бы рассчитывать только на порт 80 / 443.
Итак, мой вопрос в том, какие решения люди успешно применяют для решения этой проблемы? Люди сделали RSS? Службы синхронизации Microsoft? Двусторонняя связь между клиентом и сервером через какой-либо порт сохранения через WCF?
Любые идеи очень ценятся.