I'm looking at an industrial-control system design which calls for embedded computers (headless Windows CE 5.x boxes) running behind a NAT which control various tools (e.g. a printer, security lights, single-shot cameras, etc).
These devices are controlled by a system hosted on Azure and are typically sat behind a NAT, which means they need to establish an outbound connection to an Azure service bus, I think.
These embedded, Windows CE-based computers would be both clients (to send reporting data back to the service bus) but also provide services of their own (e.g. the headless computer controlling the lights would have a TurnLightsOn()
service method which the service, via the service-bus, would invoke).
The problem is twofold:
- As far as I can tell, the Azure Service Bus feature only supports WCF services.
- Windows CE cannot host WCF services, it can only be a client for WCF.
How can Windows Azure services be used to solve this problem?
Workarounds exist: to use TCP with an application protocol of my own design that connects directly to my Worker role without any Service Bus between them (but Azure provides automatic load-balancing between Worker instances).
The other option is to move from Windows CE to Windows Embedded, but that adds complexity (as many of the machines being used have built-in Windows CE computers, using Windows Embedded would require the addition of new physical machines which would need to be maintained).