Inne odpowiedzi koncentrowały się na to, co jest po stronie klienta i programowania po stronie serwera: jakie języki są najczęściej wykorzystywane, jakie zadania muszą być wykonane, itp
Jest to absolutnie słuszne, ale brakuje mi trochę skupienia się na różnicach między oboma rodzajami programowania w kontekście programowania internetowego. Pozwól mi spróbować rozwiązać ten problem.
Bezpieczeństwo i uprawnienia
W programowaniu po stronie klienta nie masz dostępu do pełnego systemu ze względów bezpieczeństwa. Użytkownik niekoniecznie ufa każdemu kawałkowi kodu, który jest pobierany z sieci i wykonywany na jego komputerze, i jest to główny cel projektowania środowiska po stronie klienta (przeglądarki i silnika JavaScript): zapewnienie izolowanego środowiska gdzie kod klienta może zostać wykonany, ale nie może uzyskać dostępu do niczego poza dozwolonym zakresem.
W programowaniu po stronie serwera dobrą praktyką jest również ograniczenie dostępu każdej aplikacji do systemu bazowego, ale jest to znacznie mniej wymuszone na tobie, ponieważ ostatecznie ty lub twoja firma kontroluje ten system. Ten projekt „izolowanej klatki” nie jest wbudowany w narzędzia i języki programowania po stronie serwera, ale jest realizowany poprzez konfigurację instalacji (użycie dedykowanych użytkowników z ograniczonymi uprawnieniami, wybranie portów, które wymagają lub nie wymagają uprawnień roota itp.).
Wdrożenie i platforma
W programowaniu po stronie serwera wdrażanie musi odbywać się spoza kodu, przy użyciu jakiegoś narzędzia (nawet jeśli jest to make install
lub a git clone
), a wdrożenie to zwykle odbywa się ręcznie - lub przynajmniej oczekuje się, że nastąpi w trybie pół-nadzorowanym droga. System (czyli system operacyjny), na którym wdrażasz, jest zwykle jednolity na wielu komputerach, ale można go w dużym stopniu dostosować do własnych potrzeb.
W programowaniu po stronie klienta wdrażanie odbywa się na podstawie kodu po stronie serwera, który obsługuje klientów automatycznie i bez nadzoru. Podstawowy system (głównie przeglądarka) może się znacznie różnić na znacznie większej liczbie komputerów. Aby wdrożenie było w ogóle wykonalne, należy zachować standardy, a jeden język i środowisko wykazują znacznie silniejszą tendencję.
Dlatego kopiowanie kodu po stronie serwera z jednego komputera na inny może zająć tygodnie, podczas gdy kod po stronie klienta jest zwykle trywialny do wykonania na różnych komputerach.
Skutki państwowe i wtórne
(Zastrzeżenie: jest to zdecydowanie najbardziej subiektywny punkt ze wszystkich. Prawdopodobnie jest wiele błędnych aspektów mojej argumentacji. Moim zdaniem jest to po prostu interesująca hipoteza).
W programowaniu po stronie serwera stan jest znacznie większym problemem, tzn. Jak pobierać i aktualizować dane na żądanie użytkownika z możliwością wystąpienia konfliktów z powodu współbieżności. Nawet jeśli większość tej złożoności jest przeniesiona na serwer bazy danych, obowiązkiem kodu po stronie serwera jest umożliwienie bazie danych zachowania gwarancji integralności danych poprzez prawidłowe użycie interfejsu (np. Nie używanie pamięci podręcznej dla aktualizacji, których nigdy nie widzi DB), podczas gdy celem po stronie serwera jest również nie przeciążanie bazy danych pracą i zmuszanie użytkownika do oczekiwania na odpowiedź.
W programowaniu po stronie klienta prezentowanie wyników użytkownikowi jest znacznie większym problemem, a to implikuje efekty wtórne (głównie drukowanie na ekranie). Nie oznacza to, że nie ma w tym żadnego stanu (np. Pliki cookie), a jedynie, że głównym celem kodu jest rzeczywista interakcja z użytkownikiem i nie może się to zdarzyć bez efektów wtórnych.
Dlatego programowanie po stronie klienta zwykle wymaga (w pewnym momencie) spojrzenia na ekran za pomocą demonstracji, aby sprawdzić, czy wszystkie kolory i układ są prawidłowe, podczas gdy programowanie po stronie serwera może się odbywać prawie wyłącznie w środowisku tekstowym, w którym zautomatyzowane testy sprawdzają, czy logika nadal robi to, co powinna.