2013-12-12 5 views
5

Czy można i należy zaplanować pisanie aplikacji HTML5 po stronie klienta, która wykona obliczenia wymagające dużego obciążenia procesora? (Przetwarzanie obrazu)Czy napisanie aplikacji HTML5 obciążającej procesor jest zasadniczo niewłaściwe?

Wiem, że zwykle standardem było odciążanie obliczeń na serwerze, ale ponieważ są nowe opcje z HTML5, zastanawiam się, czy możemy napisać pełną aplikację, która będzie działać w przeglądarce.

Jeśli dobrze rozumiem, pracownicy sieci mogą pomóc w wykonywaniu zadań wielowątkowych, ale nie mam głębokiej wiedzy o tym, jak to działa.

Jeszcze raz szukam potencjalnych klientów, jak do tego podejść, jeśli w ogóle.

Dzięki!

+0

Możliwe? Tak. Rozsądny? Eh, o ile nie blokuje przeglądarki. – BoltClock

+0

HMTL5 -> Web Workers! Teraz, ponieważ * wiesz * o nich, * idź przeczytaj * i postępuj zgodnie z tutorialami/przykładami - właśnie dlatego przegłosowałem. Chociaż każde zadanie, które można zapisać jako jakąś formę kolejki i nie musi być synchroniczne, jest dość łatwe do "rozłożenia w czasie" (tj.z powiązanymi setTimeouts), aby uniknąć negatywnego wpływu na przeglądanie. – user2864740

+0

@ user2864740 Nie pytałem, jak korzystać z pracowników sieci. Zaproponowałem to jako możliwe rozwiązanie i prosząc o innych oraz o możliwą radę. Czytałem o pracownikach internetowych i wiem, jak działają. Po prostu nie jestem pewien, czy to jest droga. – Ben

Odpowiedz

4

Nie, to nie jest całkowicie błędne. Maszyny klienckie mają zazwyczaj dużą moc obliczeniową, a ta moc jest dostępna dla przeglądarek. Tylko pamiętaj, aby napisać swoją aplikację w taki sposób, aby była dobrze widoczna dla użytkownika!

Pracownicy WWW zezwalają na uruchamianie skryptu JavaScript użytkownika podczas numerowania w innym wątku. Brzmi całkiem nieźle dla twojego zadania.

Ponadto, po tej stronie klienta aplikacja nie zależy już od połączenia sieciowego z serwerem. Przy przetwarzaniu obrazu spodziewam się, że wiele danych będzie przesyłanych z klienta na serwer, co może być dość powolne.

1

Uważam, że pisanie aplikacji po stronie klienta, które są umiarkowanie ciężkie, jest całkowicie w porządku. Ale miej oko na użytkowników, na których kierujesz swoją aplikację internetową. Jeśli użytkownicy korzystają z nowoczesnych komputerów, podstawowe przetwarzanie obrazów jest w porządku.

Proponuję jeden wzór, jeśli wykonanie zadania na komputerze klienckim zajmuje więcej niż 2 sekundy, wystarczy wskazać pracę na serwerze i wyświetlić animację przetwarzania w przeglądarce. Jeśli zadanie zakończy się w ciągu 2 sekund, można to zrobić po stronie klienta. Jeśli twój skrypt spowolni komputer użytkownika na więcej niż 2 sekundy, bardzo prawdopodobne, że zauważy spowolnienie i zacznie nienawidzić twojej aplikacji internetowej.

Jeśli obraz, który ma być przetworzony, jest duży, przekonwertuj go na format o niskiej rozdzielczości i wykonaj całe przetwarzanie w niskiej rozdzielczości, aby nie wymagał dużego przetwarzania. Musisz jednak prowadzić dokładny rejestr wszystkich operacji wykonywanych przez użytkownika. Gdy użytkownik jest szczęśliwy, wyślij dziennik na serwer i pozwól serwerowi wykonać ciężką pracę nad obrazem o wysokiej rozdzielczości.

+0

Nie zgadzam się z tą odpowiedzią. Operacja, która trwa> 2 s po stronie klienta, jest całkowicie w porządku. Tak długo, jak interfejs użytkownika pozostaje dość elastyczny. Pracownicy sieci są potencjalnym rozwiązaniem. – ColinE

+0

Jeśli to była aplikacja do przetwarzania obrazu na komputerze, czy wykonałbyś serwer przetwarzania obrazu? Lub aplikacja do edycji wideo? Nie! Aplikacje internetowe nie różnią się, jeśli chodzi o użytkownika, to są to po prostu aplikacje. – ColinE

+0

@ColinE Całkowicie się z tobą zgadzam. Całkiem dobrze jest, aby całe komputery były wykonywane na komputerze klienta. Ale jako osoba rozpoczynająca działalność wiem, jak trudno jest użytkownikom polubić twoją aplikację. Moje pomysły miały jedynie ulepszyć tę aplikację. Jeśli obciążenie jest podzielone, ludzie mogą korzystać z witryny, nawet na tabletach. –

1

Jest to możliwe, nawet zostało zrobione, ale to, czy to dobry pomysł, czy też nie, zależy wyłącznie od kontekstu - kto go użyje, jakie przeglądarki będą obsługiwać, jakich urządzeń będzie potrzebować.

Jeżeli chcesz iść do przodu, jedno do kasy byłoby asm.js to podzbiór javascript (tak to działa we wszystkich przeglądarkach), że przeglądarki mogą zoptymalizować bardzo dobrze (myślę tylko Firefoksa teraz) można albo kod jak do metalu w nim lub bardziej sensownie użyj go jako celu kompilacji - możesz pisać w innym języku (powiedzmy C++) - i skompiluj do czegoś, co będzie działać bardzo szybko w przeglądarce.

Powiązane problemy