Повторно подключите логику с помощью уведомлений о подключении

Скажем, у меня есть приложение, которое хочет постоянное соединение с сервером. Как реализовать логику подключения / повторного подключения, чтобы я не тратил ресурсы (мощность / пропускную способность) и у меня было быстрое время повторного подключения при появлении / улучшении подключения? Если я использую только уведомления о подключении, я могу застрять в проблемах, не связанных с локальной сетью.

Бонус, если вы могли бы показать мне C#версию.

25.08.2008 14:04:49
1 ОТВЕТ

Это очень «огромный» вопрос. Я могу сказать, что мы используем O / R Mapper, и для каждого «запроса» к базе данных требуется объект с именем PersistenceBroker. Этот класс отвечает за все вещи DB, связанные с подключением, аутентификацией и т. Д.

Мы написали PersistenceBrokerFactory.GetCurrentBroker (), который возвращает «работающего» брокера. Если БД внезапно выходит из строя (по какой-либо причине), объект CONN будет «timeout ()» через 30 секунд (или что бы вы ни определяли). Если это произойдет, мы покажем пользователю, что он / она не в сети, и отобразим кнопку повторного подключения.

С другой стороны, чтобы обеспечить визуальную индикацию того, что у пользователя есть подключение, у нас есть поток, работающий в фоновом режиме, который проверяет подключение к Интернету каждые 15 секунд. Мы делаем 1 пинг на google.com. ;) Если это не удается, мы предполагаем, что Интернет как-то не работает, и мы обновляем строку состояния.

Я мог бы показать вам весь этот код для монитора работоспособности сети, если хотите. Я взял некоторые биты из Google и другие, которые я сделал сам :)

1
25.08.2008 14:39:11