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 :

Petit soucie de sérialisation avec .net remoting


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Avatar de teddyalbina
    Homme Profil pro
    Développeur .Net,C++
    Inscrit en
    Janvier 2008
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .Net,C++

    Informations forums :
    Inscription : Janvier 2008
    Messages : 466
    Par défaut Petit soucie de sérialisation avec .net remoting
    Salut a tous !!!!

    J'ai fait une petite application C#, afin de tester une implémentation simple, de mapreduce, pour tester sa en réseau j'utilise .net remoting pour le moment.

    Seulement voila j'ai un petit soucie de sérialisation.

    L'application me lance l'erreur



    J'ai marqué les classes comme étant sérialisable pourtant l'erreur persiste.

    La fonction que j'appel est :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
           public IEnumerable<KeyValuePair<TOK, TOV>> Run<TIK, TIV, TTK, TTV, TOK, TOV>(IMapReduces.Map<TIK, TIV, TTK, TTV> map, IMapReduces.Reduce<TTK, TTV, TOK, TOV> reduce, IEnumerable<KeyValuePair<TIK, TIV>> input)
            {
                //
                // Map and group all at once
                //
                Dictionary<TTK, List<TTV>> tempStorage = new Dictionary<TTK, List<TTV>>();
     
                foreach (KeyValuePair<TIK, TIV> inputPair in input)
                {
                    foreach (KeyValuePair<TTK, TTV> tempPair in map(inputPair.Key, inputPair.Value))
                    {
                        List<TTV> vals = new List<TTV>();
                        if (!tempStorage.TryGetValue(tempPair.Key, out vals))
                        {
                            vals = new List<TTV>();
                            tempStorage.Add(tempPair.Key, vals);
                        }
                        vals.Add(tempPair.Value);
                    }
                }
     
     
                //
                // Reduce
                //
                foreach (KeyValuePair<TTK, List<TTV>> tempPair in tempStorage)
                {
                    foreach (KeyValuePair<TOK, TOV> outPair in reduce(tempPair.Key, tempPair.Value))
                    {
                        yield return outPair;
                    }
                }
            }

    Dans mon client la class Program est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
        class Program
        {
            private static IMapReduces.IMapReduce remoteOperation;
            private static string epath = @"F:\Visual Studio 2008\Projects\BlueCurve Desktop Search\Lucene\Lucene.Net\Index";
     
            private static IEnumerable<KeyValuePair<string, int>> WordCountMap(string docId, string doc)
            {
                char[] splitChars = { ' ', '\r', '\n', '\t', '\x0085' };
                foreach (string word in doc.Split(splitChars, StringSplitOptions.RemoveEmptyEntries))
                {
                    yield return new KeyValuePair<string, int>(word, 1);
                }
            }
     
            private static IEnumerable<KeyValuePair<string, int>> WordCountReduce(string word, IEnumerable<int> counts)
            {
                int wordCount = 0;
                foreach (int count in counts)
                {
                    wordCount += count;
                }
                yield return new KeyValuePair<string, int>(word, wordCount);
            }
     
            private static IEnumerable<KeyValuePair<string, string>> AllFilesInDirectory(string path, string searchPattern)
            {
                foreach (string fileName in Directory.GetFiles(path, searchPattern))
                {
                    yield return new KeyValuePair<string, string>(fileName, File.ReadAllText(fileName));
                }
            }
     
            static void Main()
            {
                try
                {
                    TcpChannel channel = new TcpChannel();
                    ChannelServices.RegisterChannel(channel,true);
                    remoteOperation = (IMapReduces.IMapReduce)Activator.GetObject(
                        typeof(IMapReduces.IMapReduce),
                        "tcp://192.168.1.5:1069/RemoteOperation");
     
                    if (remoteOperation != null)
                    {
                        foreach (
                            KeyValuePair<string, int> wordAndCount in remoteOperation.Run<string, string, string, int, string, int>(
                              WordCountMap, WordCountReduce, AllFilesInDirectory(epath, "*.cs")))
                        {
                             Console.WriteLine("{0}: {1}", wordAndCount.Value, wordAndCount.Key);
                        }
                    }
     
     
                }
                catch (Exception e) {
                    Console.WriteLine(e);
                }
                Console.ReadLine();
            }
        }
    J'ai testé plusieurs solutions mais aucune de fonctionne ou c'est moi qui n'est pas capté un truc .

    merci de votre aide !!!!

  2. #2
    Membre très actif
    Avatar de teddyalbina
    Homme Profil pro
    Développeur .Net,C++
    Inscrit en
    Janvier 2008
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .Net,C++

    Informations forums :
    Inscription : Janvier 2008
    Messages : 466
    Par défaut
    J'ai essayé de faire fonctionner mon p'tit programme en utilisant WCF à la place de .net remoting. Et j'ai un problème différent le précédent ayant disparue. Il s'agit d'un soucie de delegate

    voici le bug en question :




    Il semble que l'utilisation des delegates pose un problème, voici mon Iterface pour wcf:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    using System;
    using System.ServiceModel;
    using System.Collections.Generic;
    using System.Collections;
     
     
    namespace IMapReduces
    {
        public delegate IEnumerable<KeyValuePair<TOK, TOV>> Map<TIK, TIV, TOK, TOV>(TIK key, TIV value);
        public delegate IEnumerable<KeyValuePair<TOK, TOV>> Reduce<TIK, TIV, TOK, TOV>(TIK key, IEnumerable<TIV> value);
     
     
        [ServiceContract()]
        public interface IMapReduce 
        {
            [OperationContract]
            IEnumerable<KeyValuePair<TOK, TOV>> Run<TIK, TIV, TTK, TTV, TOK, TOV>(Map<TIK, TIV, TTK, TTV> map,
                                                                                  Reduce<TTK, TTV, TOK, TOV> reduce,
                                                                                  IEnumerable<KeyValuePair<TIK, TIV>> input);
        }
    }
    Si vous avez une idée

    IDE : Visual C# 2008
    Framework : 3.5

  3. #3
    Membre très actif
    Avatar de teddyalbina
    Homme Profil pro
    Développeur .Net,C++
    Inscrit en
    Janvier 2008
    Messages
    466
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .Net,C++

    Informations forums :
    Inscription : Janvier 2008
    Messages : 466
    Par défaut
    Personne n'aurais une petit idée

Discussions similaires

  1. petit soucis d'update avec reel
    Par psychosiffleur dans le forum Windows Forms
    Réponses: 6
    Dernier message: 26/02/2010, 14h04
  2. Impression avec NET REMOTING
    Par ahmedkolsi dans le forum Windows Forms
    Réponses: 1
    Dernier message: 03/11/2009, 17h18
  3. Réponses: 14
    Dernier message: 11/06/2009, 22h08
  4. Réponses: 5
    Dernier message: 05/11/2007, 23h30
  5. [Zip] petit soucis de variable avec "zip.lib.php"
    Par Giantrick dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 29/06/2007, 12h19

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