Windows Phone7 の Hotmail Push 受信について調べた

Windows Phone7 に限らず、最近 Hotmail では「Hotmail・カレンダーをリアルタイムに同期しよう!」と宣伝をしています。
今回はこの Push 受信について調べてみました。一番の関心事は、電池のもち具合。
以前からこういう技術はあって「リアルタイム同期」といっても、実際は一定間隔でメールサーバに接続しているだけ、というのがありました。こういうものだと一定間隔で接続するので、電池の持ちが悪くなっていました(※今はそんなことを心配する必要がないのかもしれないですが)

Hotmail との同期

WP7 と Hotmail は Exchange ActiveSync で同期されるので、Exchange Server のダイレクトプッシュテクノロジが使われていると思われる。

ダイレクトプッシュについて
http://technet.microsoft.com/ja-jp/library/aa997252.aspx

この文書を読むと、

  1. デバイスは常に Exchange Server に対して HTTPS を張りっぱなしにしておいて
  2. サーバ側で変更があったら HTTPS 経由で通知する
  3. デバイスは通知を受けて同期をする

ということで、ネットワークは常につながっている環境になっていそうです。

Push Notifications

WP7 では Azure からの通知を受け取るフレームワークがあります(@oniak3 さんがセミナーで解説している物)。
こちらはどうなっているのでしょうか?

・Push Notifications Overview for Windows Phone
http://msdn.microsoft.com/en-us/library/ff402558%28v=vs.92%29.aspx

・Understanding Microsoft Push Notifications for Windows Phones
http://windowsteamblog.com/windows_phone/b/wpdev/archive/2010/05/03/understanding-microsoft-push-notifications-for-windows-phones.aspx

・Understanding How Microsoft Push Notification Works – Part 2
http://windowsteamblog.com/windows_phone/b/wpdev/archive/2010/05/04/understanding-how-microsoft-push-notification-works-part-2.aspx

詳細に読んではないですが、

  1. Exchange ActiveSync と同じようにコネクションを張りっぱなしにしておく
  2. プロトコルは HTTPS ではなく独自プロトコルらしい
  3. WP7 上の Push 通知は、OS 管理の Push Client Service が一括して行う。

というところらしいです。

肝は、OS 管理の Push Client Service。
通知を受けるアプリが Push Notification Framework を使用して Push Client Service に通知を登録すると、あとは通知の管理を Push Client Service サーバとのやりとりは行ってくれる。
ということは、Push 通知を受けるアプリが 10ヶあっても、やりとりは 1つのコネクションにまとめられると言うことかな?10ヶのアプリが 10ヶのコネクションを張って受信待機→ばらばらに通信を行いバッテリーを過剰に消費ということは避けられるようだ。