views:

37

answers:

2

I am creating a grid application which requires me to send software packets that wrap a class out to participating nodes within my grid.

The first idea that I came up with was to have the master nodes contact each node (running a Windows service) and send an assembly containing a class which adheres to a common interface along with a .config file containing, well, configuration information.

Is there a better way to do this? Aside from the discussion on whether this should be a push or a pull, what's the best way to get what is effectively a software update out? It would be great if I could use something similar to a WCF service called by the client nodes, but that would, of course, leave the real processing on the master node, which would effectively uncluster my cluster.

+1  A: 

You can send the assembly bytes and load them directly into the runtime. It work well for managed code. I'm not aware of a better way to do this. And yes, use a push model :)

csharptest.net
A: 

This seems like a valid approach. This is essentially how most .NET plugin models work.

The only other approach that I can think of would be sent script files back and forth. You could make your own custom DSL, but I think that that would be overkill. Using something like Iron Ruby or Iron Python would be a lot simpler, as well as a lot more powerful. Another thought would be to send PowerShell scripts.

I have never tried this, but it's also possible to send C# or VB files back and forth and then compile them when they need to be run. However, I see little advantage of this over the previous two suggestions.

Jacob Adams