Overview
I am doing the introductory decision making on technology for a new project. We will need to have business objects maintained in a central location and viewed on client devices. The client devices will be thick clients (WPF, Silverlight, MacOS, Linux) and mobile clients (Android, iPads/iPhones, WP7). The nominal use case is a LAN scenario, but distributed internet use is also a possibility. We need to be able to have the central location (thinking WCF service) update the business objects based on input from the clients and rapidly have the view of those business objects be updated on all connected devices that are viewing those objects.
Security
Security is a low concern, the only important data to be transferred is names at this point, although final decision there has not been made.
Basic Question
My basic question is this: How to best approach this? I am thinking a WCF service as the home for the business objects, but we need distribution of changes to be very rapid. Preferably it would seem instantaneous to users. To me, that means around 1/4 second. I just don’t know if that is possible. I’m assuming to reach the device audience, it would need to be a basic web service. What will polling at that rate from the devices do to battery life of devices? Is there an elegant way to push to all those devices?
Since you need a very short update/propagation times (1/4 sec) you’d need to use a very fast web service polling, which is IMO not achieveble.
For such short delays your best bet would be to use some kind of web push technology (comet, websockets) or even directly sockets.
Also, I don’t think you can push to devices that are in sleep mode. They would at least need to have processor and network running, which would of course significantly shorten the battery life.