Push vs Poll ketika keterlambatan besar (jam) dapat diterima

10

Tampaknya masuk akal saat ini bahwa pemungutan suara adalah praktik yang buruk dan mendorong adalah cara untuk pergi ketika mengembangkan aplikasi mobile yang perlu untuk terus menerima data dari server jauh.

Semua toko ponsel besar menyediakan versi layanan pemberitahuan push mereka:

Namun saya bertanya-tanya sejauh mana asumsi ini valid. Maksud saya, jika saya memiliki aplikasi yang mem-polling server jarak jauh hanya beberapa kali sehari, dan yang "notifikasi" tidak perlu dikirimkan secara instan (penundaan besar dapat diterima), maka apakah itu akan menjadi keputusan yang baik untuk polling untuk data alih-alih mendorongnya?

Terima kasih sebelumnya!

Thomas CG de Vilhena
sumber
1
Saya tidak cukup akrab dengan mekanisme push seluler untuk benar-benar mempertimbangkan hal ini, tetapi saya bertanya-tanya apakah menggunakan mekanisme push dapat menghemat beberapa sakit kepala, misalnya berkaitan dengan menangani skenario power off / sleep. Jika ini hanya aplikasi desktop / web, maka saya akan mengatakan bahwa polling baik-baik saja; mendorong biasanya juga melibatkan menjaga koneksi terbuka di server web Anda, jadi itu keuntungan lain dari polling di desktop / browser, tetapi karena ini adalah aplikasi seluler, dan Anda dapat menggunakan mekanisme push alternatif ini, saya pikir jawabannya mungkin berbeda.
Apprentice Dr. Wily

Jawaban:

14

Polling selalu diterima ketika real-time bukan suatu keharusan. Apa yang harus Anda tanyakan pada diri sendiri adalah mengapa Anda menggunakan yang satu daripada yang lain?

Tujuan dari layanan push adalah beberapa hal; mungkin lebih sedikit lalu lintas yang harus Anda tangani jika dorongan Anda disiarkan dan penyedia pihak ketiga melakukan siaran - ini memungkinkan Anda untuk mengirim satu pesan dan ribuan orang menerimanya. Tetapi seperti yang Anda perhatikan, anugerah terbesar dari layanan push adalah sifat realtime yang memungkinkan pembaruan segera untuk menjangkau konsumen Anda. Namun ketika melakukan push Anda benar-benar tidak ingin mendorong set data besar jika Anda siaran, dan Anda juga berada di bawah kekuasaan layanan push pihak ketiga yang Anda gunakan (jika Anda menggunakannya).

Tujuan jajak pendapat adalah untuk memeriksa perbedaan data secara berkala, di mana periode pembaruan dapat memiliki SLA yang tidak akurat hingga periode waktu tertentu. Sebuah jajak pendapat akan mengharuskan semua klien Anda untuk meminta data secara berkala yang berarti koneksi diminta untuk setiap klien yang berjalan, dan perlunya layanan langsung dapat memantau data itu secara akurat untuk menyajikannya kepada para pemberi suara. Memiliki data yang akurat untuk ditayangkan berarti beberapa data tetap yang akan memakan waktu disk dan waktu perawatan.

Jadi dari sini kita dapat melihat bahwa jika Anda memiliki kekhawatiran tentang lalu lintas jaringan atau pemeliharaan layanan (yang berarti kemungkinan mengotentikasi / mengotorisasi permintaan, mencatatnya yang membutuhkan ruang disk, semua persyaratan normal untuk mempertahankan layanan) maka Anda tidak perlu Saya tidak ingin memaksa klien untuk memilih. Namun jika use case membutuhkan pengiriman set data yang sangat besar atau Anda tidak dapat ditambatkan ke API pihak ketiga yang dapat berubah dalam waktu serta SLA atau biaya mereka, maka sistem pemungutan suara yang ditanamkan di rumah mungkin berlaku, meskipun pemeliharaan overhead mungkin lebih signifikan. Atau Anda mungkin sudah menjalankan layanan dan data tetap ada sehingga polling merupakan tambahan ringan untuk infrastruktur yang sudah ada, yang membuat polling lebih diinginkan.

Meskipun ke titik pusat Anda membuat Anda benar; jika real-time diperlukan , pemungutan suara tidak akan dilakukan. Jika tidak, maka Anda hanya perlu menghitung secara periodik bagaimana data dapat diperiksa dikalikan dengan basis klien Anda dikalikan dengan ukuran kumpulan data Anda untuk memutuskan apakah biaya jaringan akan sepadan, atau jika layanan push akan lebih baik di mana Anda selalu bisa hanya mendorong acara perubahan yang memungkinkan mereka meminta data besar yang ditetapkan dalam langkah sekunder (meskipun keaslian langkah-langkah ini mungkin sesuatu yang Anda harus berhati-hati tergantung pada kekritisan data).

Jimmy Hoffa
sumber
3

Polling harus baik-baik saja dalam kasus Anda. Dan Anda tidak perlu berintegrasi dengan sistem lain (atau beberapa sistem untuk berbagai platform).

Namun spesifik perangkat mungkin menjadi masalah. Bisakah Anda melakukan polling dengan andal ketika aplikasi tidak berada di depan dan tengah di perangkat? (mungkin atau mungkin tidak menjadi masalah bagi Anda). Kemampuan Anda untuk melakukannya mungkin tergantung pada teknologi yang Anda gunakan untuk mengembangkan aplikasi.

GrandmasterB
sumber
Saya berencana menggunakan pengatur waktu bawaan untuk memastikan aplikasi melakukan polling pada server meskipun tidak "aktif". Saya tahu bagaimana melakukannya di Android, dan saya harap iPhone dan Windows menyediakan fungsionalitas yang sama;)
Thomas CG de Vilhena
2

Tentu saja. Ini juga lebih mudah (hanya waspadai paku tarik jika semua orang menarik pada jadwal yang sama).

Yang mengatakan, saya akan menantang asumsi bahwa 'penundaan besar dapat diterima', mengingat harapan pengguna ponsel. ('Peta tidak diperbarui dalam waktu nyata! Tidak dapat diterima!' - atau - 'Saya tahu ini adalah layanan cuaca, tapi saya akan terus menekan tombol segarkan setiap lima detik hingga ramalan besok akan cerah!')

ptyx
sumber
Poin bagus tentang mencegah semua orang melakukan polling secara bersamaan. Saya kira pengaturan timer secara acak akan melakukan trik!
Thomas CG de Vilhena