Je dois concevoir une application est principalement une interface avec une base de données pour la saisie de données. L'application doit pouvoir fonctionner lorsqu'elle est déconnectée de la base de données avec des données en cache et insérez ces données lorsqu'elle a une connexion à nouveau. Il y aura deux modes différents, connectés ou déconnectés, pas besoin de détecter la déconnexion au milieu d'une session connectée pour passer à déconnecté. P>
Comme cela me semble une requis commune, je me demandais s'il y a une approche "standard" pour faire face à ce problème. Tables de mise en cache au fichier local, sérialisant les données interrogées sur la base de données ou autre. Peut-être qu'il y a une bibliothèque existante pour faire ça? P>
Merci d'avance. P>
PD: L'application sera effectuée dans .NET P>
Edit: est une application WinForms, pas une toile Web. p>
Edit2: Pour saisir plus de détails sur l'application Il s'agit de saisir des données dans une base de données, mais parfois, les utilisateurs seront hors bureau plusieurs semaines et devront entrer des données comme si elles étaient connectées à des données en cache de la base de données et ceci Les données saisies seront transférées dans la base de données lorsqu'elles se reconnectent à nouveau. P>
5 Réponses :
Ado.net en mode déconnecté [ Lien PDF] peut être votre point de départ. P>
Je pense que cela ne s'applique pas à ce que j'ai mis sur mon édition2, n'est-ce pas?
Comme répondu déjà, Ado.net est le choix logique. P>
http://msdn.microsoft.com /en-us/library/aa719836%28VS.71%29.aspx P>
Utilisation du jeu de données de remplissage de données (en mémoire), utilisez ce jeu de données pendant que vous êtes déconnecté, lorsque vous connectez à nouveau la base de données de mise à jour à l'aide de DataDapter. p>
Je pense que cela ne s'applique pas à ce que j'ai mis sur mon édition2, n'est-ce pas?
Je ne suis pas sûr que vous ne voulez pas créer une application Web ou de bureau, mais Silverlight's Les fonctionnalités de navigateur sont assez soignées aussi. Lien fournit un point de départ génial p>
Il s'agit d'une application WinForms standard et non liée au Web.
Memento est le modèle de conception si c'est ce que vous vouliez savoir ... Donc, quand en mode déconnecté, vous avez des options telles que 1. Déconnectées ADO.net comme indiqué par l'apprentissage 2. RDBM incorporé comme SQLITE 3. OOWBM intégré comme DB40 ou Versant.
En mode connecté ... Le client interagit directement avec le serveur. Sur la déconnexion, vous devrez enregistrer des données dans l'une des 3 méthodes ou simplement une vieille sérialisation .NET ... sur la reconnexion, votre logiciel Server devra peut-être consommer les données du magasin de données locales.
Vous voudrez peut-être examiner comment Google Gears est conçu p>
MMM, je pense que cela n'a rien à voir avec le problème expliqué ici.
Il a des choses à voir avec le problème défini ici. Engrenages met en cache des données d'Internet (qui pourrait être une base de données en ligne) pour l'accès hors connexion. Les utilisateurs peuvent apporter des modifications aux données en mode hors connexion et les engrenages synchronisés avec la source réelle la prochaine connexion est disponible.
Vous pouvez même envisager l'utilisation de bases de données en mémoire telles que SQLite qui pourraient agir en tant que cache à votre dB principal. (En fait, c'est ainsi que Google Gears fonctionne). Il existe des méthodes standard de configuration de DBS en mémoire comme caches à votre dB principal
Mmm, assez intéressant les informations sur SQLite. Permettez-moi de le vérifier
Le scénario que vous décrivez peut être résolu par la réplication de la base de données. Par exemple, si vous utilisez MS SQL Server comme DB C / S principal, il peut être reproduit dans une installation locale MSSQL Express sur votre poste de travail ou ordinateur portable hors ligne. Tant que vos utilisateurs sont hors de bureau, l'application doit se connecter à la DB locale et, à son retour, les modifications sont reproduites à la DB centrale. Je pense que c'est l'approche "standard" que vous recherchez, où vous n'avez pas à écrire de code spécial pour votre situation hors ligne (à l'exception du code qui modifie la connexion et du code pour démarrer la réplication). p>
Il pourrait vous intéresser que le système CRM utilisé par notre société fonctionne comme ceci, le DB local utilisé est "MSSQL Desktop Moteur", le prédécesseur de l'édition Express, mais IMHO Cela devrait fonctionner avec l'édition Express , trop. Autant que je sache, vous n'avez pas à payer de frais de licence pour les instances MSSQL Express. P>
La réplication de la base de données ajoute simplement des données au serveur principal ou le remplace? J'ai besoin que tout le monde des données soit ajouté au serveur DB principal mais non remplacé. Je devrais donc reproduire le serveur principal sur le serveur local sur la connexion, mais il suffit d'ajouter des données de la section locale à la principale lorsqu'il existe des données disponibles.
Si vous souhaitez que votre application ait un comportement restreint comme "Ajouter seulement" en mode déconnecté, vous devez évidemment gérer cela dans l'interface utilisateur de votre application, ce qui est quelque chose que votre base de données ne peut pas faire pour vous. Regardez MSDN ici ici msdn.microsoft.com/en-us/Library/ MS151329.aspx , pour en savoir plus sur SQL Server Fusionner la réplication et la résolution de conflit.