Question

Je voudrais faire une application SL qui pourrait sauver certaines données en local et l'accès s'il est déconnecté. Je pense que je pourrais exposer les entités dans les services (pas DTO), et l'enregistrer dans le stockage isolé. WCF ria pour les services, mais qu'en l'application SL? Quelle est la meilleure façon d'avoir un « modèle déconnecté en cache local »?

Merci à l'avance et joyeux noël

Était-ce utile?

La solution

Celui qui vous donne une réponse claire à cette question ne sait pas de quoi il parle.

L'un des plus grands défis (lire: Pourquoi les développeurs sont effectivement utilisés) est que la création d'un client déconnecté est difficile
. Pas très dur, mais il exige de l'expérience en génie logiciel et au début du compromis et de la planification.

La question que vous avez posée est essentiellement « Comment puis-je construire un client intelligent? »
Il y a eu beaucoup de livres merveilleux écrits sur le sujet et des dizaines de cadres expédiés sur ce thème. Donc, comme je le disais, pas de réponse facile ici.

La première chose que vous devez vous poser est la suivante: Quel est le niveau de Smart Client avez-vous besoin
? Êtes-vous construire un client déconnecté complètement? Un semi client en ligne / hors ligne? Un client hors ligne partiellement activée? etc etc etc

La façon dont je regarde normalement, est grâce à des fonctionnalités:

  • Est-ce le scénario que vous essayez de soutenir une perte de connectivité réseau temporaire
    Ou une perte prolongée de connectivité réseau?

La durée du temps hors ligne (plus précisément, s'il y a un redémarrage de l'application) détermine si votre cache est enregistré sur le disque ou peut faire confiance à la RAM.

  • Le client est assuré au démarrage avec une connectivité réseau
    Ou est-il une possibilité d'une start-up OOB sans connectivité réseau?

Si le client peut commencer à partir OOB sans la connectivité réseau, vous devez stocker des données hors ligne sur le disque. Vous n'aurez pas la possibilité d'aller chercher de nouvelles données à partir du serveur au démarrage.

  • En mode hors-ligne, la requête de l'utilisateur peut récupérer des données précédemment?

Ceci est le dénominateur commun entre tous les clients intelligents. Toutes les applications Smart Client ont accès aux données hors ligne, mais il est important d'appeler ceci comme une caractéristique de l'OMI.

  • En mode hors-ligne, l'utilisateur peut créer de nouvelles données?

Donc, si vous avez une application d'achat et il n'y a pas de connexion réseau, l'utilisateur peut créer un nouvel ordre? Si oui, vous devez mettre en cache ces données et transmettre localement au serveur sur le premier client - cycle Sync <>.

  • Quelle est la portée des données qui peuvent être modifiés hors ligne?

Pouvez-vous limiter la fonction offline à la création de données critiques? Ou avez-vous besoin pour permettre le spectre complet de Création et mise à jour et Supprimer pour toutes vos données hors ligne?

Ma suggestion est de limiter les changements hors ligne puisque vous tomberez dans des scénarios très complexes à résoudre si vous n'avez pas. Par exemple, l'utilisateur A à 00 heures supprime # client 1, à 12h05 utilisateur B émet un nouvel ordre pour # client 1. Les utilisateurs étaient en ligne. Maintenant, allez comprendre ce que il y a la solution d'entreprise correcte:)

Edit: exemple fixe;)

  • En mode hors ligne, ce qui se passe lorsque les requêtes des utilisateurs pour les données qui n'a pas été précédemment récupérés?

Supposons que vos données partagées (une table de clients, par exemple) est massive. Vous avez 10M clients. Vous ne pouvez pas stocker ces données sensibles sur tous les clients. Alors qu'est-ce qui se passe quand une application hors ligne a besoin d'un excès à un client qu'il n'a pas? Êtes-vous OK de dire à l'utilisateur final « Get sur le réseau putain, vous? ».

  • Comment Mission critique est votre application?

La partie intersting à cette question est - Si quelque chose va mal, vous êtes OK avec la fermeture de cet utilisateur? Cette question détermine si vous devez persister sur le disque sur toutes les actions de données (données nouvelles, extraites des données, un champ de formulaire de changement, etc.) ou si vous êtes OK avec persistance sur le disque que lorsque l'application est fermée.

Quand on regarde Silverlight, vous avez quelques bonnes options techniques.

  1. Conserver les données en mémoire. Si votre featureset survit, maintenez le RIA Services Contexte du domaine comme une instance statique.
    lorsque le client perd réseau connectivity, vous obtenez toujours de travailler au large de la RAM.

  2. Comme nous l'avons mentionné précédemment, IsoStore est votre ami. Vous obtenez 1MB (dans le navigateur) / 25MB (sur navigateur) de votre propre espace disque magique privé et si votre application a besoin -. Vous pouvez demander plus
    Sérialisation des données sur le disque vers le bas.

  3. OODB -. Object Oriented Database OODBs en cours d'exécution sur le Silverlight IsoStore sont un moyen merveilleusement facile de persistance des données.
    Il suffit d'aller à votre RIA des services de domaine Conext, et aller "myEntity.Save ()".
    Il y a 3 OODBs en cours d'exécution sur Silverlight IsoStore je connais: DB40, mcObjects et SilverlightDB.

Basé sur le blog de NikhilK afficher quelques mois en arrière, RIA Services est la planification sur le soutien « offlianability ». Mais ne sont pas précisés la portée et le calendrier.

Cheers,
- Justin

Autres conseils

L'une des techniques utilisées pour l'enregistrement des données sur la machine locale est appelée « stockage isolé ». Je vous suggère de commencer par cela.

Vidéo # 1 Vidéo # 2

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