W dzisiejszych czasach wydaje się powszechne, że odpytywanie jest złą praktyką, a wypychanie jest właściwą drogą przy opracowywaniu aplikacji mobilnych, które wymagają ciągłego odbierania danych ze zdalnego serwera.
Wszystkie główne sklepy mobilne oferują swoją wersję usługi powiadomień push:
- Usługa powiadomień push Apple
- Google Cloud Messaging na Androida
- Usługa powiadomień push firmy Microsoft
Zastanawiam się jednak, w jakim stopniu to założenie jest ważne. Mam na myśli, że jeśli mam aplikację, która sonduje zdalny serwer tylko kilka razy dziennie i do której „powiadomienia” nie muszą być dostarczane natychmiast (dopuszczalne jest duże opóźnienie), to czy byłaby to dobra decyzja odpytywać o dane zamiast wypychać je?
Z góry dziękuję!
Odpowiedzi:
Sondowanie jest zawsze akceptowalne, gdy czas rzeczywisty nie jest koniecznością. Musisz zadać sobie pytanie, dlaczego miałbyś używać jednego zamiast drugiego?
Celem usługi push jest kilka rzeczy; ruch może być znacznie mniejszy, jeśli masz do czynienia z transmisjami, a nadawca realizuje transmisję - to pozwala ci wysłać jedną wiadomość i otrzymać tysiące. Ale, jak zauważasz, największym dobrodziejstwem usługi push jest natura w czasie rzeczywistym, która umożliwia natychmiastowe aktualizacje, aby dotrzeć do klientów. Jednak podczas wypychania naprawdę nigdy nie chcesz wypychać dużych zestawów danych, jeśli nadajesz, a także jesteś na łasce usługi push innej firmy, z której korzystasz (jeśli z niej korzystasz).
Celem ankiety jest okresowe sprawdzanie różnic danych, w przypadku których okres aktualizacji może zawierać akceptowalną umowę SLA o niedokładności do określonego przedziału czasu. Ankieta będzie wymagać od wszystkich klientów okresowego żądania danych, co będzie oznaczać żądanie połączenia dla każdego działającego klienta oraz konieczność usługi na żywo zdolnej do dokładnego monitorowania tych danych w celu dostarczenia ich do ankieterów. Posiadanie dokładnych danych do podania oznacza trwałość danych, która zajmie czas na dysku i czas konserwacji.
Z tego wynika, że jeśli masz obawy dotyczące ruchu sieciowego lub utrzymania usługi (co oznacza ewentualnie uwierzytelnianie / autoryzowanie żądań, rejestrowanie ich, które zajmuje miejsce na dysku, wszystkie normalne wymagania dotyczące utrzymania usługi), wtedy nie „ chcę zmusić klientów do sondowania. Jeśli jednak przypadek użycia wymaga przesłania szczególnie dużego zestawu danych lub nie można być przywiązanym do interfejsu API innej firmy, który może się zmieniać wraz z umową SLA lub opłatami, wówczas może obowiązywać domowy system odpytywania, chociaż utrzymanie koszty ogólne mogą być znacznie większe. Alternatywnie możesz już uruchomić usługę i mieć utrwalone dane, dzięki czemu odpytywanie jest niewielkim dodatkiem do już istniejącej infrastruktury, co sprawia, że odpytywanie jest bardziej pożądane.
Chociaż do centralnego punktu sprawiasz, że masz rację; jeśli konieczny jest czas rzeczywisty , odpytywanie się nie powiedzie. Jeśli tak nie jest, musisz po prostu wyliczyć, jak okresowo można sprawdzać dane pomnożone przez bazę klientów pomnożone przez rozmiar zestawu danych, aby zdecydować, czy koszt sieci będzie tego wart, czy też usługa push byłoby lepiej, gdybyś zawsze mógł po prostu wcisnąć zdarzenie zmiany, które pozwala im zażądać dużego zestawu danych w kroku wtórnym (chociaż atomowość tych kroków może być czymś, na co trzeba uważać w zależności od krytyczności danych).
źródło
Sondowanie w twoim przypadku powinno być w porządku. I nie będziesz musiał integrować się z innym systemem (lub wieloma systemami dla wielu platform).
Problemem może być jednak specyfika urządzenia. Czy potrafisz w niezawodny sposób sondować, gdy aplikacja nie znajduje się z przodu i nie jest na środku urządzenia? (może, ale nie musi być dla ciebie problemem). Twoja zdolność do tego może zależeć od technologii wykorzystywanej do tworzenia aplikacji.
źródło
Oczywiście. Jest to również łatwiejsze (strzeż się gwałtownych skoków, jeśli wszyscy wykonują ten sam harmonogram).
Mimo to podważam założenie, że „duże opóźnienie jest dopuszczalne”, biorąc pod uwagę oczekiwania użytkowników mobilnych. („Mapy nie są aktualizowane w czasie rzeczywistym! Niedopuszczalne!” - lub - „Wiem, że to serwis pogodowy, ale zamierzam naciskać ten przycisk odświeżania co pięć sekund, aż prognoza na jutro stanie się słoneczna!”)
źródło