views:

101

answers:

4

We developed a handheld system (WM5) deployed to 800 Engineer about a year ago. Currently the handheld polls a public web-service every 5 min's to check for new jobs, we are wanting to change this and use push technology so when there's a now job its pushed directly to the handheld bit like exchange email.

Could you please advice how this can be achieved, also if you have any tip would be a big help.

A: 

Exchange push email on Windows Mobile actually works in the same way. It polls the server for new messages every x minutes. So technically speaking that is not even push technology.

I think that the polling system you currently use is pretty good. Why do you want to change it?

tomlog
not sure if i agree with the comment that exchange email pulls as when you send a email a device and have it within seconds. We are wanting to change it as 5 mins can be along time when an engineer is having to wait for the emergency job. There are other reasons but this is one of the main ones.
MartGriff
Whether you agree or not, that's how it works. In almost every scenario, devices are not directly addressable so they have to contact the server.
ctacke
+1  A: 

You could use the store and forward WCF Exchange transport. This would leverage the email subsystem already in place for transport and get you a check-in rate of whatever you have your Exchange server set for.

ctacke
+2  A: 

Comet is the umbrella term for different HTTP push methods. Basically, Exchange uses Long Polling which is a way of maintaining a long lived HTTP connection so that the server can send data as it's received instead of queuing for the next poll.

When the connection times out or is closed, the client immediately reconnects. So, the overall flow looks something like:

  1. Client connects
  2. Client asks for notifications for the next 10 mins
  3. If no notification in 10 mins, server sends HTTP 200 OK and closes the connection
  4. Back to 1

Exchange, of course, is a little bit smarter in that it tries to dynamically adjust the timeout values to compensate for different network conditions that may reset the connection sooner. If the client wakes up after 10 mins and sees that the server never responded or the connection is broken, it'll use a smaller timeout the next time.

Mark Brackett
A: 

You could send an SMS message to the device that triggers the 'check for new jobs'. Keep the polling for 'normal' jobs, but emergencies could be delivered instantly by using this mechanism.

MicGev