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 :

Connexion Client Serveur


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2004
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 19
    Par défaut Connexion Client Serveur
    Bonjour,

    Voici mon deuxieme probleme du jour
    J'ai donc une application Client/Serveur
    Le serveur fournit aux client un objet singletoin nomme MBFacade, qui leur permet en appelant des methodes sur cet objet de recuperer les differents objets qui leur son utiles.
    Voici le code concerné :

    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
    // Connexion au serveur
    			try
    			{
    				_mConnexionNetRemoting = RechercheConnexionNetRemoting(typeof(IMBFacade));
    				IMBFacade MBFacade = (IMBFacade)Activator.GetObject(typeof(IMBFacade),_mConnexionNetRemoting.ObjectUri);
    
    				_MBService  = MBFacade.GetNewService(this);
    
    				//Abonnement à l'évènement de mise à jour de la BDD
    				UpdateDataHandler cb = UpdateDataEvent.Create(new UpdateDataHandler(UpdateControls));
    				MBFacade._UpdateDataHandler += cb;
    			}
    			catch
    			{
    				string msg = "La connexion au serveur à échoué! Relancez le programme.";
    				PopUpErreur( msg, ETypeErreurClient.fatale );
    			}
    			
    			// Connexion à la base de données
    			_MBService.Connecter();
    Jusqu'a hier, tout se passait à merveille, mais subitement, la connexion s'est mise à prendre un temps fou.
    c'est au niveau de la méthode GetNewService que le temps est long, j'ai bien verifie au debugger, ce n'est l'execution de la methode qui prend du temps mais bien l'acces en remoting qui prend du temps
    D'ailleurs, au debugger ce temps est considerablement moins long

    J'espere que vous pourrez m'aider a comprendre ça

    Je suis en cours de dev, il est possible que j'ai fait quelque chose qui ait perturbe ca , mais je ne vouis vraiment pas quoi... Subitement, la connexion est devenue hyper lente..

    voila
    Merci d'avance!!!

    blobette

  2. #2
    Membre averti
    Inscrit en
    Juillet 2004
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 19
    Par défaut
    heeeeelp !!

  3. #3
    Membre expérimenté Avatar de lapanne
    Inscrit en
    Juin 2006
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 200
    Par défaut
    Pourrais-tu poster le code de ton singleton ?

    Il est trés possible aussi que ça n'est pas rien à voir avec ton code !
    Le serveur qui héberge les data est sur un serveur distant ?

  4. #4
    Membre averti
    Inscrit en
    Juillet 2004
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 19
    Par défaut
    Voici le code de mon singleton :

    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
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
     
    using System;
    using System.Collections;
    using IGestionOperations;
    using IGestionClient;
     
    namespace MBServeur
    {
    	/// <summary>
    	/// Description résumée de MBFacade.
    	/// </summary>
    	/// 
    	public class MBFacade : MarshalByRefObject, IMBFacade
    	{
    		public event  UpdateDataHandler		_UpdateDataHandler;
     
    		public MBFacade()
    		{
    		}
     
    		public override object InitializeLifetimeService()
    		{
    			return null;
    		}
     
    		/// <summary>
    		/// Retourne un nouvel objet de type MBOperation 
    		/// </summary>
    		/// <returns></returns>
    		public IMBService GetNewService(IMBClient client)
    		{
    			return new MBService(client,this);
    		}
     
     
    		/// <summary>
    		/// Classe utilisée pour envoyer les évènements en utilisant des thread distincts
    		/// </summary>
    		class MyThread 
    		{
    			public delegate void ErrorHandler(Delegate d);
     
    			public event ErrorHandler		Error;
    			object[]						_args;
    			Delegate						_target;
     
    			public MyThread(Delegate d, params object[] args) 
    			{
    				this._target = d;
    				this._args = args;
     
    			}
    			public void Call() 
    			{
    				System.Threading.ThreadPool.QueueUserWorkItem(new System.Threading.WaitCallback(CallDelegate));
     
    			}
    			void CallDelegate(Object stateInfo) 
    			{
    				try 
    				{
    					this._target.DynamicInvoke(this._args);
    				} 
    				catch 
    				{
    					if( Error!=null) 
    					{
    						Error(this._target);
    					}
    				}
    			}
    		}
     
    		public void Unregister(Delegate d) 
    		{
    			_UpdateDataHandler -= (UpdateDataHandler)d;
    			System.Console.WriteLine("Unregistered");
    		}
     
    		public void FireUpdateDataEvent()
    		{
    			if (_UpdateDataHandler != null) 
    			{
    				UpdateDataHandler copie = _UpdateDataHandler;
    				foreach(Delegate d in copie.GetInvocationList()) 
    				{
    					MyThread t=new MyThread(d);
    					t.Error+=new MBServeur.MBFacade.MyThread.ErrorHandler(Unregister);
    					t.Call();
    				}
    			}
    		}
    	}
    }
    Pour mes tests, le serveur est en local, et il se passe la meme chose à distance

    merci!

  5. #5
    Membre averti
    Inscrit en
    Juillet 2004
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 19
    Par défaut
    dsl je vois que j'ai mis longtemps a repondre... je n'avais pas vu qu'il y avait une reponse!

Discussions similaires

  1. connexion client serveur en j2me
    Par unidach dans le forum Java ME
    Réponses: 2
    Dernier message: 29/06/2007, 18h56
  2. [Réseau] connexion client/serveur
    Par Creuvard dans le forum Réseau
    Réponses: 31
    Dernier message: 09/01/2007, 12h48
  3. Réponses: 8
    Dernier message: 12/07/2006, 17h37
  4. [SOCKET] connexion client serveur avec applet
    Par kaiser2003 dans le forum Applets
    Réponses: 2
    Dernier message: 06/10/2004, 22h32
  5. comment gerer plusieurs connexions client/serveur
    Par naili dans le forum C++Builder
    Réponses: 3
    Dernier message: 14/08/2002, 16h58

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