0

Nous créons une application utilisant .net Compact Framework 3.5 fonctionnant sous Windows CE Embedded 7.0. Cette application collecte différentes données de nos différents véhicules et les renvoyer à notre serveur.Meilleures pratiques pour créer une file d'attente simple Compact Framework

Le problème auquel nous sommes confrontés est la perte de connexion, ce qui arrive souvent parce que la réception est parfois tout simplement terrible (tunnels, bois, etc.).

Si la connexion est perdue pendant 15 minutes, un grand nombre de données n'a pas pu atteindre le serveur. La question maintenant est, que devrions-nous faire avec ces données? En utilisant l'un des cadres de file d'attente existants? Créer notre propre?

Certaines choses dont nous avons besoin sont ou des choses qui seraient grands:

  • La file d'attente doit être persistante, donc si l'appareil redémarre les données ne sont pas perdues
  • Notre serveur au moment est en cours d'exécution ASP .NET WebApi, donc ce serait génial si cela pouvait être utilisé
  • Nous envoyons différents types de données, et certaines de ces données doivent atteindre le serveur avant l'autre, donc un certain type de système de priorité serait nécessaire
  • Les nouvelles données sont plus importantes que les anciennes

J'ai beaucoup cherché mais je n'ai rien trouvé. Avez-vous des idées?

J'espère que c'est le bon endroit, il semblait être spécifique aux recommandations de logiciels. Merci

Répondre

0

Je n'ai pas de solution, mais les clients utilisent des frameworks tiers, par exemple MCL, ou écrivent leur propre framework de synchronisation 'basé sur la file d'attente'.

Il y a un bel article à MSDN

Une solution est d'utiliser un système de messagerie basé sur des fichiers avec un processus de communication séparé, découplée le processus principal. Chaque message (données) est un fichier et le communicateur traite les fichiers et met à jour le processus principal ou le serveur de données distant. J'ai fait une solution unidirectinal en utilisant ftp et un en utilisant eMails. Le système eMail a l'avantage d'être déjà persistant et basé sur la «file d'attente».

Une autre solution utilise SMS pour envoyer des mises à jour et traiter des informations au client. Comme j'ai utilisé des files d'attente Compact Framework pour découpler le processus principal et la communication, je n'ai pas eu l'utilité de faire en sorte que celles-ci persistent un warmboot. Mais le simple enregistrement de l'objet file d'attente sur chaque EnQueue ou DeQueue ne devrait pas poser de problème en utilisant la sérialisation.

Mon conseil est d'utiliser les files d'attente CF et de les conserver en utilisant la sérialisation. Cela ne fait aucune différence si vous utilisez un service Web ou autre pour transférer les données entre le serveur et les clients. Avez-vous pensé à des mises à jour simultanées et à des erreurs de synchronisation pour les mises à jour en double des mêmes données de serveur, ou cela ne pose-t-il aucun problème? OTOH MS offre une structure de synchronisation pour SQL Server/SQL Server Compact qui gère la synchronisation des données. Il a besoin et IIS du côté de SQL Server.