views:

259

answers:

2

So I've got a project, running all on a private network. I've got a computer interfacing to some specific pieces of hardware and presenting a user interface via Winforms to control them all.

Now, I'd like the ability to split the app, such that all the interface and main business logic runs on one computer, but the GUI runs on another, connected via a network. There will be only one GUI running. The first impulse is, of course "use remote desktop", but there's high framerate video being displayed that won't quite work that way.

The video I can stream multiple ways, but what's the easiest way to communicate between a Winforms front-end and service back-end? .Net Remoting? WCF? Roll my own?

+1  A: 

WCF works quite well, but you might also want to check out the RemObjects SDK. That's pretty flexible. It has client and server components that you drop on the form/service and you can switch between a whole range of protocols just by change properties. There are versions for different platforms, if you need that.

http://www.remobjectssdk.com/net.aspx

I wouldn't roll my own unless I had very specific performance needs. Much better to use something where the hard work has been done already.

dommer
+1  A: 

I would check out WCF as a first option. Using WCF makes it really easy and natural to split applications into services, and gives you the flexibility to change "bindings" easily to find a balance between performance and interoperability.

If you need high performance, check out the lower-level binary bindings like NetTcp.

Andy White
WCF is mainstream, will be easy to develop with, easy to maintain for you and any future devs. Perf is good, tool support is good, community support is good, operational aspects are well explored. A good, safe, mainstream choice.
Cheeso