大きな遅延(時間)が許容できる場合のプッシュとポーリング


10

ポーリングは悪い習慣であり、リモートサーバーから常にデータを受信する必要があるモバイルアプリケーションを開発する場合、プッシュが適切な方法であることは最近の常識のようです。

すべての主要なモバイルショップは、プッシュ通知サービスのバージョンを提供しています。

しかし、私はこの仮定がどの程度有効であるのか疑問に思っています。つまり、リモートサーバーを1日に数回しかポーリングせず、「通知」を即座に配信する必要がない(大きな遅延は許容できる)アプリケーションがある場合、それは適切な決定になります。データをプッシュする代わりにポーリングする方法は?

前もって感謝します!


1
私はモバイルプッシュメカニズムに精通していませんが、これを実際に検討することはできませんが、プッシュメカニズムを使用すると、たとえば電源オフ/スリープのシナリオの処理に関して、いくつかの頭痛を軽減できるのではないでしょうか。これが単なるデスクトップ/ Webアプリケーションであれば、ポーリングは問題ないと言えます。プッシュは通常、Webサーバーで接続を開いたままにすることも含むため、デスクトップ/ブラウザーでのポーリングのもう1つの利点ですが、これはモバイルアプリケーションであり、これらの代替プッシュメカニズムを使用できるため、答えは異なる場合があると思います。
Wily博士の弟子2014年

回答:


14

リアルタイムが必要でない場合、ポーリングは常に許容されます。あなたが自問しなければならないのは、なぜあなたは他のものの代わりに1つを使うのですか?

プッシュサービスの目的は2つあります。プッシュがブロードキャストであり、サードパーティのプロバイダーがブロードキャストを行う場合は、処理するトラフィックが大幅に少なくなる可能性があります。これにより、1つのメッセージを送信して何千ものメッセージを受信できます。しかし、お気づきのように、プッシュサービスの最大の恩恵はリアルタイムの性質であり、即座に更新してコンシューマーに到達できます。ただし、プッシュを実行する場合、ブロードキャストする場合は大規模なデータセットをプッシュする必要はありません。また、使用するサードパーティのプッシュサービス(利用する場合)に翻弄されます。

ポーリングの目的は、データの違いを定期的にチェックすることです。更新期間には、特定の期間まで不正確な許容SLAがある場合があります。ポーリングでは、すべてのクライアントが定期的にデータを要求する必要があります。つまり、実行中のすべてのクライアントに対して接続が要求され、データを正確に監視してポーラーに提供できるライブサービスが必要になります。提供する正確なデータがあることは、ディスクとメンテナンスに時間がかかるデータの永続性を意味します。

これから、ネットワークトラフィックまたはサービスのメンテナンスについて懸念がある場合(つまり、要求の認証/承認、ディスク領域を消費するログの記録、サービスを維持するためのすべての通常の要件)があることがわかります。クライアントにポーリングを強制したい。ただし、ユースケースで特に大きなデータセットを送信する必要がある場合、または時間の経過とともにSLAまたは料金が変更される可能性のあるサードパーティのAPIにつなぐことができない場合は、メンテナンスが自作のポーリングシステムを適用できる場合があります。オーバーヘッドは大幅に増える可能性があります。または、すでにサービスを実行していて、データが永続化されているため、ポーリングは既に配置されているインフラストラクチャに簡単に追加できるため、ポーリングがより望ましいものになります。

中心的な点では、あなたが正しいことを確認します。リアルタイムが必要な場合、ポーリングは行われません。そうでない場合は、データをチェックする周期をクライアントベースで乗算し、データセットサイズを乗算して、ネットワークコストが価値があるかどうか、またはプッシュサービスかどうかを判断する計算を行う必要があります。 2番目のステップで大きなデータセットを要求できるようにする変更イベントを常にプッシュできる場合は、より良いでしょう(ただし、これらのステップの原子性は、データの重要度によっては注意が必要な場合があります)。


3

あなたの場合、投票はうまくいくはずです。また、さらに別のシステム(または複数のプラットフォーム用の複数のシステム)と統合する必要はありません。

ただし、デバイスの仕様が問題になる場合があります。アプリがデバイスの前面と中央にないときに確実にポーリングできますか?(あなたにとって問題かもしれないし、そうでないかもしれません)。そうする能力は、アプリの開発に使用している技術に依存する場合があります。


組み込みのタイマーを使用して、アプリがサーバーが「アクティブ」でなくてもサーバーをポーリングできるようにする予定です。私はAndroidでそれを行う方法を知っています。iPhoneとWindowsPhonesが同じ機能を提供することを願っています;)
Thomas CG de Vilhena '23年

2

もちろん。これも簡単です(全員が同じスケジュールでプルしている場合は、プルスパイクに注意してください)。

とはいえ、モバイルユーザーの期待を考慮して、「大きな遅延は許容できる」という仮定に異議を申し立てます。(「マップはリアルタイムで更新されません!許容できません!」-または-「天気予報サービスであることはわかっていますが、明日が晴れるまで5秒ごとに更新ボタンを押し続けます!」


全員が同時に投票するのを防ぐことの良い点。タイマーをランダムに設定するとうまくいくと思います!
Thomas CG de Vilhena
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.