none
Restrictions des canaux de communication du .NET Remoting RRS feed

  • Question

  • Salut à tous!
    Je travaille sur une application client-serveur utilisant le .NET Remoting sur un réseau local, constitué de SE Windows XP SP2 au minimum.

    La partie serveur de l'application est un fournisseur de services effectuant les opérations suivantes en vue de publier ses fonctionnalités:
    -Définition du nom de l'application
    -Création du canal TCPChannel avec nom et port uniques, formatage binaire avec l'option Full(TypeFilterLevel) pour la désérialisation.
    -Enregistrement du canal
    -Enregistrement du service héritant de MarshalByRefObject avec spécification du type, de l'URI.
    Tout se passe sans erreur.

    La partie client de l'application est un consomateur de service effectuant les opérations suivantes en vue d'exploiter les fonctionnalités publiées:
    -Création d'un canal TCPChannel avec nom et port uniques.
    -Enregistrement du canal
    -Connexion au service publié avec Activator.GetObject.
    J'ai une référence au proxy du service publié sans erreur. Tous mes appels vers le service sont bien exécutés.

    Un problème se pose cependant quand le service publié veut appeler une fonction comportant des arguments sur un objet client.
    -Par exemple la propagation d'un évènement vers le client, s'accomplissant par l'exécution d'une délégation rattachée au service par le client.
    -Le rappel de la procédure ISponsor.Renewal(ILease lease) pour la persistence du service serveur si le sponsor est du côté client.

    La communication dans le sens Serveur-client est problématique et se limite aux réponses des requêtes client. Le message d'erreur suivant est généré :"This remoting proxy has no channel sink which means either the server has no registered server channels that are listening, or this application has no suitable client channel to talk to the server."
    Il me semble avoir vérifié dans tous les sens qui me sont connus les paramètres de publication et je ne peux m'expliquer cette restriction.

    Alors,
    1-Pourquoi cette restriction d'échange dans le sens Serveur-Client?
    2-Comment étendre cette communication à l'appel de fonction avec des arguments par le serveur sur le client?

    Merci.
    lundi 22 février 2010 08:19

Réponses

Toutes les réponses