IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

MemoryMapped From XML FILE ? [Débutant]


Sujet :

C#

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 58
    Points : 57
    Points
    57
    Par défaut MemoryMapped From XML FILE ?
    Bonjour à tous,

    Je cherche le moyen de partager un fichier xml entre deux applications. J'essaie d'utiliser MemoryMapped, mais je pêche par ignorance.
    Je ne sais même pas si c'est réalisable.

    Ma première application ressemble à ça, et s'execute sans erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    _mmf = MemoryMappedFile.CreateFromFile("Stocks2.xml", FileMode.OpenOrCreate, "STOCK");
    _tt = _mmf.CreateViewAccessor(0, 0);
    La seconde pour récupère et lire le contenu de mon fichier xml, est pour l'instant ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    System.Xml.XmlDocument xd = new System.Xml.XmlDocument();
    _mmf = MemoryMappedFile.OpenExisting("STOCK");
    _tt = _mmf.CreateViewAccessor(0, 0);
    if (_tt.CanRead)
    {
       _tt.Read(0, out xd); // Error  --> out xmldocument nullable
    }
    J'ai donc une erreur sur le out xd, car ça pour une structure de sortie doit être non nullable, comment puis-je résoudre ça ?
    Ou dois-je utiliser une autre technique (Un programme met à jour des données dans un fichier XML, l'autre va devoir analyser les données en même temps) ?

    Merci beaucoup pour votre aide et commentaire sur ce sujet.

  2. #2
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 066
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 066
    Points : 4 233
    Points
    4 233
    Par défaut
    Pourquoi un fichier xml ? tu peux pas faire ca avec une base de donnée comme ça les 2 y accède ou tu peux créer un service web sur l'une des applis et l'appeler depuis l'autre appli
    sinon une aide peut être ici :
    https://www.developpez.net/forums/d2...e-application/

  3. #3
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 58
    Points : 57
    Points
    57
    Par défaut
    Merci youtpout978 pour ta réponse,

    Pourquoi un fichier XML, j'ai pas le choix au départ le 1er programme mets à jour environ 500 noeuds par seconde dans ce fichier xml. Donc le fichier est enregistré toutes les minutes, car il peut pas enregistrer à chaque mise à jour de noeud.
    Le 2ème programme que je dois développer doit lire et analyse les données mise à jour (donc pas uniquement lors de l'enregistrement du fichier).

    J'avais bien pensé utiliser une base de données, mais c'est lourd à mettre en place, surtout si le client ne possède pas l'environnement et les accès à gérer une BDD. En ce qui concerne l'idée du webservice, c'est hélas un fichier de très grosse taille (1,5 Go) et en augmentation constante voir exponentielle, donc je crains fort que transmettre via webservice par relais le contenu du fichier, ça va être galère et pas tellement tenable en termes de performance.

    Si tu as une autre idée, je t'avoue que je suis preneur. Là, je tente mon 2ème application avec un memorymapped stream, ça semble ok, bien que je sois obligé de convertir un byte[] en string et d'intégrer le string dans mon xmldoc.innerxml. Pas vrai joli joli comme méthode

  4. #4
    Membre chevronné
    Homme Profil pro
    edi
    Inscrit en
    Juin 2007
    Messages
    905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : Juin 2007
    Messages : 905
    Points : 1 923
    Points
    1 923
    Par défaut
    Tu sauvegardes toutes les minutes un fichier un 1,5Go ?

    Sinon comme youtpout978 je m'interroge sur la nature de ce fichier xml. Est-ce-qu'il te sert à persister des données ou est-ce-qu'il ne sert juste de dépôt temporaire pour transmettre à l'autre programme ? Est-ce-qu'il sert à structurer ou formater des données ? Est-ce-que ton fichier décrit un objet fermé ou s'agit-il d'une liste, qui pourrait être donc être découper ? Est-ce-que tu as besoin de l'intégralité des données ou seulement des mise-à-jour ? Est-ce-que l'usage d'un fichier est structurel pour le programme ou pourrait-on y substituer un autre mécanisme ? Et par ailleurs si tu travailles sur le même objet de données comment tu gères la concurrence pour éviter que la première application ne se mets pas à écrire dans le fichier pendant que la deuxième est en train de le lire ?

    Côté base de données tu peux regarder du côté de SQLite, c'est une base de données fichier qui t'assureras une plus grande fiabilité qu'un simple fichier xml et dispose même d'un mode de fonctionnement "in memory" pour ne pas passer par le disque dur. Et pour de la communication inter-process performante tu peux également t'intéresser aux pipes nommés (named pipes sur la msdn).

  5. #5
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 066
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 066
    Points : 4 233
    Points
    4 233
    Par défaut
    il faut pas transmettre le fichier mais les données serialisés, ca sera beaucoup moins lourds et en communication entre process c'est ultra rapide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 16/11/2006, 13h33
  2. [XML file]Lecture - ecriture :Bienvenue à votre imagination
    Par Terminator dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 27/04/2006, 22h53
  3. [Quartz][Tomcat] Jobs.xml file not found exception
    Par Arnaud Giuliani dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 05/08/2005, 09h20
  4. The XML file cannot be displayed
    Par UVCR dans le forum XMLRAD
    Réponses: 2
    Dernier message: 08/03/2005, 16h26
  5. Xml file system storage
    Par sebA dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 30/09/2004, 07h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo