views:

191

answers:

2

I've been analyzing my next project and writing up requirements, one of the things I'd like to do involves me communicating over 64 serial ports (16 ports x 4 windows pc's)

The best was I can think to do this is a master/slave application model where the master application is controlled by an operator and the slaves simply execute commands issued by the master (remote procedure calls? I'm not great at the lingo yet, I'm a junior engineer) my questions are as follows:

In .net what is the best way to issue said commands and recieve responses from the remote processes?

Is there a common design pattern to handle this sort of scenario?

If the users don't have direct access to 3 of the 4 systems (maybe even all 4) how can i ensure that the slave processes are spawned on the remote computers? crash recovery is also a concern here, is there an easy way to tell a remote pc to execute something? this seems like a HUGE security issue.

Edit: Glomek asks (in short)

Will anyone be using software on the slaves? Why would the users not have access to the systems?

The systems are strictly pizza boxes, no monitors, these are minimum wage test operators testing products, the 4 computers should communicate with each other via network communications, but the 4 computers then communicate with 64 units under test that all have RS232 serial communications.

+1  A: 

In .net what is the best way to issue said commands and recieve responses from the remote processes?

You can look at .NET Remoting. Other valid options would be to implement them as server (eg soap).

A typical approach might be using queues.

Is there a common design pattern to handle this sort of scenario?

For that have a look at Enterprise Integration Patterns (Gregor Hohpe and Bobby Woolf). Great book.

If the users don't have direct access to 3 of the 4 systems (maybe even all 4) how can i ensure that the slave processes are spawned on the remote computers? crash recovery is also a concern here, is there an easy way to tell a remote pc to execute something? this seems like a HUGE security issue.

Write an API that relies on authentication. You may use webservices with windows authentication enabled. Webservices may also be used to query the state of spawned processes.

This could be done using the message based approach, too.

Sascha
okay, lets assume I don't care about the security of starting executables on remote systems, how would I go about starting them on demand?
Firoso
There must be a service running always on the remote machines. Either inside iis or using a windows service with some other sort of communication (eg queues) will start the executables with the Process class. This service would monitor the processes, too.
Sascha
A: 

Regarding the authentication, you could use certs from your ICA (if you have one).

theG