リアルタイムが必要でない場合、ポーリングは常に許容されます。あなたが自問しなければならないのは、なぜあなたは他のものの代わりに1つを使うのですか?
プッシュサービスの目的は2つあります。プッシュがブロードキャストであり、サードパーティのプロバイダーがブロードキャストを行う場合は、処理するトラフィックが大幅に少なくなる可能性があります。これにより、1つのメッセージを送信して何千ものメッセージを受信できます。しかし、お気づきのように、プッシュサービスの最大の恩恵はリアルタイムの性質であり、即座に更新してコンシューマーに到達できます。ただし、プッシュを実行する場合、ブロードキャストする場合は大規模なデータセットをプッシュする必要はありません。また、使用するサードパーティのプッシュサービス(利用する場合)に翻弄されます。
ポーリングの目的は、データの違いを定期的にチェックすることです。更新期間には、特定の期間まで不正確な許容SLAがある場合があります。ポーリングでは、すべてのクライアントが定期的にデータを要求する必要があります。つまり、実行中のすべてのクライアントに対して接続が要求され、データを正確に監視してポーラーに提供できるライブサービスが必要になります。提供する正確なデータがあることは、ディスクとメンテナンスに時間がかかるデータの永続性を意味します。
これから、ネットワークトラフィックまたはサービスのメンテナンスについて懸念がある場合(つまり、要求の認証/承認、ディスク領域を消費するログの記録、サービスを維持するためのすべての通常の要件)があることがわかります。クライアントにポーリングを強制したい。ただし、ユースケースで特に大きなデータセットを送信する必要がある場合、または時間の経過とともにSLAまたは料金が変更される可能性のあるサードパーティのAPIにつなぐことができない場合は、メンテナンスが自作のポーリングシステムを適用できる場合があります。オーバーヘッドは大幅に増える可能性があります。または、すでにサービスを実行していて、データが永続化されているため、ポーリングは既に配置されているインフラストラクチャに簡単に追加できるため、ポーリングがより望ましいものになります。
中心的な点では、あなたが正しいことを確認します。リアルタイムが必要な場合、ポーリングは行われません。そうでない場合は、データをチェックする周期をクライアントベースで乗算し、データセットサイズを乗算して、ネットワークコストが価値があるかどうか、またはプッシュサービスかどうかを判断する計算を行う必要があります。 2番目のステップで大きなデータセットを要求できるようにする変更イベントを常にプッシュできる場合は、より良いでしょう(ただし、これらのステップの原子性は、データの重要度によっては注意が必要な場合があります)。