2008-08-25 6 views
-1

Dites que j'ai une application qui souhaite une connexion permanente à un serveur. Comment implémenter la logique de connexion/reconnexion pour ne pas gaspiller de ressources (puissance/bande passante) et avoir un temps de reconnexion rapide lorsque la connectivité apparaît/s'améliore? Si je n'utilise que des notifications de connectivité, je peux rester bloqué sur des problèmes non liés au réseau local.Reconnecter la logique avec les notifications de connectivité

Bonus si vous pouviez me montrer la version C#.

Répondre

1

Ceci est une question très "énorme". Je peux dire que nous utilisons un Mappeur O/R et chaque "requête" à la base de données a besoin d'un objet appelé PersistenceBroker. Cette classe est en charge de tous les DB Stuff liés à la connexion, à l'authentification, etc.

Nous avons écrit un PersistenceBrokerFactory.GetCurrentBroker() qui retourne le courtier "en service". Si la base de données tombe soudainement en panne (pour une raison quelconque), l'objet CONN sera "timeout()" après 30secs (ou ce que vous définissez). Si cela se produit, nous montrons à l'utilisateur qu'il est hors ligne et affiche un bouton de reconnexion. D'autre part, pour fournir une indication visuelle que l'utilisateur a la connectivité, nous avons un thread en arrière-plan, qui vérifie la connectivité Internet toutes les 15 secondes. Nous faisons 1 ping à google.com. ;) Si cela échoue, nous supposons qu'Internet est en quelque sorte cassé, et nous mettons à jour une barre d'état.

Je pourrais vous montrer tout ce code pour le moniteur de santé du réseau si vous le vouliez. J'ai pris quelques morceaux de google et d'autres je me suis fait moi-même :)

Questions connexes