views:

583

answers:

3

We're in the process of developing a measurement device that will be running CE 6.0 with CF 3.5 on x86 embedded hardware, a PC is used to control the device and is connected with it using ethernet.

We would like to communicate using interfaces (using DCOM (we know it is not supported by default on CE6), .NET Remoting or Web services) instead of using some sort of (custom) protocol. Calling methods defined in an interface is so much easier and elegant then parsing raw data.

What would be the best solution in this case?

+1  A: 

I've had some experience setting up comms between CE devices and a PC, and have used custom interfaces using winsock (thwacking some bytes back and forwards) and have tried SOAP. In Windows CE 5.0, the Microsoft provided SOAP server took our device down somehow every couple of hours or so. I spent many weeks trying to work out what was wrong, thinking it was something I'd done wrong. So, I prefer to stick to winsock now because at least I've got a chance of knowing what's going on and can fix it.

Also, CE devices aren't always the quickest performers depending on what hardware you've got. Web-services take up some overhead and time converting data to XML, and this may be a performance hit you are or are not able to afford.

Scott Langham
+2  A: 

If you're using CE 6 and .NET Compact Framework 3.5, have you considered using the Windows Communication Foundation (WCF)? You'd have to write your own transport, but when that is done, you will be able to consume your service interfaces with relative ease.

neilco
A: 

As with Scott, we went down the road of using socket based communications, for performance and stability reasons. The code works well across all devices from Windows CE 2.1 up to mobile 6.0. I found the Windows CE developers handbook, ISBN 0-7821-2414-3, to be very useful in developing this functionality, albeit in C++ rather than C#.

Shane MacLaughlin