2009-09-15 9 views
1

Je crée une application de grille qui me demande d'envoyer des paquets logiciels qui enveloppent une classe aux nœuds participants de ma grille.Envoyer une classe, pas seulement une interface de classe, entre les serveurs?

La première idée que je suis venu avec était que les nœuds principaux contactent chaque nœud (exécutant un service Windows) et envoient un assembly contenant une classe qui adhère à une interface commune avec un fichier .config contenant, bien, informations de configuration.

Y a-t-il une meilleure façon de procéder? Mis à part la discussion sur la question de savoir si cela devrait être une poussée ou un retrait, quelle est la meilleure façon d'obtenir ce qui est effectivement une mise à jour logicielle? Ce serait génial si je pouvais utiliser quelque chose de similaire à un service WCF appelé par les nœuds clients, mais cela laisserait, bien sûr, le traitement réel sur le nœud maître, ce qui aurait pour effet de démonter mon cluster.

Répondre

1

Vous pouvez envoyer les octets d'assemblage et les charger directement dans le runtime. Cela fonctionne bien pour le code managé. Je ne suis pas au courant d'une meilleure façon de le faire. Et oui, utilisez un modèle push :)

0

Cela semble être une approche valable. C'est essentiellement ainsi que fonctionnent la plupart des modèles de plugins .NET.

La seule autre approche que je puisse penser serait d'envoyer des fichiers de script dans les deux sens. Vous pourriez faire votre propre DSL personnalisé, mais je pense que ce serait exagéré. Utiliser quelque chose comme Iron Ruby ou Iron Python serait beaucoup plus simple, et beaucoup plus puissant. Une autre idée serait d'envoyer des scripts PowerShell.

Je n'ai jamais essayé cela, mais il est également possible d'envoyer des fichiers C# ou VB d'avant en arrière, puis de les compiler quand ils doivent être exécutés. Cependant, je vois peu d'avantage de ceci sur les deux suggestions précédentes.

Questions connexes