Powodem jest stabilność .
Po stronie serwera mogę wybrać stabilne komponenty. Zwykle oznacza to, że wybieram Javę i kilka bardzo starannie wybranych bibliotek, takich jak FreeMarker. Nie trzeba dodawać, że każda biblioteka poza standardowymi bibliotekami Javy jest traktowana jako jednorazowa, więc uzyskuję dostęp do bibliotek zewnętrznych przez samodzielnie wykonane opakowanie. Oznacza to, że mogę łatwo przejść z jednej biblioteki do drugiej, jeśli pojawi się taki wymóg.
Ilekroć aktualizuję Javę do nowej wersji, zwykle działa ona dobrze, ponieważ Java jest niezwykle stabilnym komponentem nawet w przypadku dużych aktualizacji wersji. Ponadto na każdym serwerze, na którym mam, działa ta sama wersja Java. Nie każdy klient korzysta z tej samej implementacji JavaScript.
Po stronie klienta nie mogę wybrać stabilnych komponentów. Twórcy przeglądarki zmuszą mnie do wybrania JavaScript, języka, który szczególnie mi się nie podoba, ale którego jestem zmuszony używać. (I nie mów mi o językach skompilowanych do JavaScript, są okropne!) Implementacja JavaScript w każdej przeglądarce jest inna. Oznacza to, że testowanie mojego produktu z każdą obsługiwaną wersją przeglądarki to piekło.
Moje rozwiązanie? Po stronie serwera wykonuję jak najwięcej przetwarzania, a po stronie klienta jest to tylko lekkie opakowanie, które wysyła dane do serwera i odbiera dane z serwera w postaci fragmentów JSON i HTML. Unikaj XML; zamiast tego użyj JSON.
Nie wykonuję szablonów po stronie klienta; Renderuję zawartość na serwerze do fragmentu HTML, który następnie przypisuję za pomocą.innerHTML
atrybutu do różnych elementów zastępczych po stronie klienta. Dzięki temu stos technologii jest tak prosty, jak to możliwe, ponieważ nie potrzebuję dwóch silników szablonów (Java i JavaScript).
Wadą jest oczywiście opóźnienie prędkości światła; pół sekundy opóźnienia nie jest niczym niezwykłym między kontynentami.
Pamiętaj, że Twoi klienci mogą być smartfonami. Smartfony mają ograniczoną żywotność baterii, więc jeśli wykonujesz ciężkie obliczenia, lepiej rozładuj je na swoje serwery. Jednak proste rzeczy mogą być bardziej energooszczędne, gdy są wykonywane po stronie klienta, ponieważ wtedy można uniknąć dostępu radiowego. Ale główny argument, stabilność, może oznaczać, że może mieć sens odciążenie nawet prostego obliczenia na serwerze.
Jako uzupełnienie, jak już zauważono w niektórych odpowiedziach, zyskujesz także bezpieczeństwo . Jeśli logika aplikacji jest całkowicie po stronie klienta, ktoś może np. Ustalić cenę za wszystko, co zamierza kupić w sklepie internetowym.