2015-09-18 2 views
2

Lorsque vous essayez de vous connecter à un cluster distant dev utilisant le code exemple suivant:Azure Service de tissu appel client à un service Acteur depuis une machine distante retourne une erreur d'adresse inconnue

var proxy = ActorProxy.Create<IActor1_NoS>(ActorId.NewId(), "fabric:/applicationname"); 

Je reçois l'erreur suivante:

System.Fabric.FabricException : The supplied address was invalid

Notez que ce code fonctionne correctement lorsqu'il est exécuté localement à partir de la machine de cluster de développement. Le fichier manifeste du cluster de développement a été modifié pour être écouté sur l'adresse IP de la machine. La machine distante est un Windows 7. Tous les assemblys Fabric Service ont été copiés dans le dossier exécutable.

Comment un appel client utilisant le schéma "fabric: /" fonctionne-t-il dans les coulisses? Comment un client spécifie-t-il le cluster qu'il cible pour un appel de matrice?

Répondre

4

Les proxies d'acteur dépendent des services de plate-forme qui ne sont pas exposés sur les ports publics. Par conséquent, les proxys ne peuvent pas communiquer avec les services d'acteur sur des machines distantes. Ils sont destinés à la communication inter-service au sein du cluster. Le schéma général consiste à créer un service de passerelle au sein du cluster pour fournir un point d'entrée sur un port public, qui peut ensuite relayer les demandes à vos acteurs.

+1

Le même principe s'applique-t-il aux services fiables et à la communication à distance (par défaut)? – Mikhail

+1

Oui, ils sont conceptuellement équivalents. –

+1

Comment quelqu'un pourrait-il mettre en place un tel service de passerelle? J'essaye également d'exposer un serveur d'acteur à un client d'acteur sur une machine différente. –