Application pour appareil mobile .NET CF: la meilleure méthodologie pour gérer d'éventuelles expériences hors connexion?

StackOverflow https://stackoverflow.com/questions/224496

Question

Je construis une application mobile dans VB.NET (framework compact) et je me demande quelle est la meilleure façon d’aborder les interactions hors ligne potentielles sur le périphérique. Fondamentalement, les appareils disposent des technologies cellulaires et 802.11, mais peuvent toujours être hors ligne (avec une réception médiocre, etc.). Un chauffeur numérisera les boîtes à la sortie de son camion et je souhaite mettre à jour le nouvel emplacement - immédiatement s'il y a un signal de réseau ou mis en file d'attente s'il est hors ligne et traité plus tard. Cela m'a toutefois fait réfléchir à la façon de gérer le mode hors connexion en général.

  • Est-ce que je mets en cache autant de données que possible sur le périphérique afin que je puisse les utiliser si elles sont hors connexion - chaque périphérique devrait contenir une copie des données de production (pertinentes)? Ou est-il préférable de désactiver certaines fonctionnalités en mode hors connexion afin d'éviter le problème de la synchronisation plus tard? Je sais que cette question est assez spécifique et dépend de mon application, mais je suis curieux de voir si d'autres personnes ont emprunté cette voie.
  • Est-ce que je construis l'application elle-même pour qu'elle agisse comme si elle était toujours hors ligne, en soumettant le tout à une file d'attente locale appartenant à une classe locale (en faisant essentiellement abstraction de l'élément en ligne / hors connexion), puis en soumettant des éléments à la classe le serveur comme il peut? Qu'en est-il des recherches de données - comment celles-ci peuvent-elles être gérées de manière "semi-live"? la mode?
  • Ou dois-je demander à l'application de soumettre des demandes directement au serveur, en temps réel, et de les gérer si sa demande échoue? Je peux voir un problème potentiel qui consiste à obliger l’utilisateur à attendre le délai, mais est-ce le moyen le plus fiable de le faire?

Je ne cherche pas de solution spécifique, mais simplement des histoires sur la façon dont les développeurs y parviennent avec l'expérience utilisateur la plus fluide possible, avec un lien vers des procédures à suivre ou des pistes à suivre ou quelque chose comme ça. Merci pour vos conseils à ce sujet!

Était-ce utile?

La solution

Nous ne pouvons pas vous donner de réponse définitive car il n'y a pas de "droit". réponse qui correspond à tous les scénarios d'utilisation. Par exemple, si vous utilisez SQL Server sur le back-end et SQL CE localement, vous pouvez toujours configurer la réplication de fusion et laisser le moteur de données gérer tout cela à votre place. C'est plutôt propre. L'utilisation du bloc d'application hors connexion peut le résoudre. Utiliser stocker et transférer peut être une option.

Vous pouvez stocker localement, puis lancer votre propre synchronisation avec une connexion directe, le service Web du service WCF utilisé lorsqu’un réseau est détecté. Vous pouvez utiliser MSMQ pour la livraison.

Ce à quoi vous devez penser n’est pas ce que le "droit" Mais comment votre implémentation affectera la convivialité de l’application. Si vous désactivez des fonctionnalités en raison d'un manque de connectivité, l'application est-elle encore utilisable? Si vous avez des données obsolètes, est-ce un problème? Certaines données critiques doivent peut-être être transférées lorsque vous avez le GSM / GPRS (ce qui n'est généralement pas gratuit) et davantage si vous avez le 802.11. Peut-être que vous pouvez exécuter toute la journée avec des tables de consultation réduites dans la matinée et ne télécharger que les transactions, l'appareil surveillant les modifications apportées.

En gros, cela dépend de la manière dont il est utilisé, de la nature des données, de l’importance des transactions entre périphériques, de l’effet de la latence des données et probablement d’autres facteurs auxquels je ne peux pas penser immédiatement.

La première étape consiste donc à déterminer le mode d'utilisation de l'application. puis déterminez l'infrastructure et l'architecture permettant de fournir la connectivité et l'accès aux données nécessaires.

Autres conseils

Je ne l'ai pas utilisé moi-même, mais avez-vous examiné le "Stockage et la transmission"? capacités des FC? Cela peut convenir à vos besoins. Je pense qu’il utilise une boîte aux lettres Exchange comme file d’alarme pour envoyer des paquets SOAP de et vers le périphérique.

La meilleure façon de procéder consiste à toujours travailler en mode hors connexion, puis à utiliser des files de messages pour gérer l'envoi des modifications de / vers le périphérique. Par exemple, lorsque le pilote marque quelque chose comme remis, mettez à jour l'élément comme livré dans votre magasin local et placez également un message dans une file d'attente sortante pour indiquer au serveur qu'il a été remis. Une fois la connexion établie, renvoyez tous les éléments en file d'attente au serveur et récupérez tous les messages mis en file d'attente à partir du serveur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top