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