Widziałem pytania (głównie na temat przepełnienia stosu), w których brakuje tej podstawowej wiedzy. Celem tego pytania jest zapewnienie dobrych informacji dla osób poszukujących go i odnoszących się do niego.
Jakie są różnice w programowaniu po stronie serwera i programowaniu po stronie klienta? Do jakich języków należą i kiedy używasz każdego z nich?
web-development
server-side
client-side
Madara Uchiha
źródło
źródło
Odpowiedzi:
tło
Tworzenie stron internetowych polega na komunikacji. W takim przypadku komunikacja między dwiema (2) stronami za pośrednictwem protokołu HTTP:
Programowanie każdej ze stron odnosi się do kodu działającego na konkretnej maszynie, serwerze lub kliencie.
Podstawowy przykład
Programowanie
Programowanie po stronie serwera
Programowanie po stronie serwera to ogólna nazwa rodzajów programów uruchamianych na serwerze .
Używa
Przykładowe języki
Programowanie po stronie klienta
Podobnie jak po stronie serwera, programowanie po stronie klienta to nazwa wszystkich programów uruchamianych na kliencie .
Używa
Przykładowe języki
* HTML i CSS nie są tak naprawdę „językami programowania” jako takimi. Są to składnia znaczników, według której klient renderuje stronę dla użytkownika .
źródło
Słowami laika:
Tutaj będę mówić tylko o programowaniu internetowym.
Programowanie po stronie klienta ma głównie związek z interfejsem użytkownika, z którym użytkownik wchodzi w interakcje. W programowaniu internetowym to przeglądarka, na komputerze użytkownika, uruchamia kod i odbywa się to głównie w javascript, flash itp. Ten kod musi działać w różnych przeglądarkach.
Jego główne zadania to:
Osoba odpowiedzialna za programowanie przedniej musi wiedzieć :
Programowanie po stronie serwera ma związek z generowaniem dynamicznej zawartości. Działa na serwerach. Wiele z tych serwerów jest „bezgłowych”. Większość stron internetowych nie jest statyczna, przeszukują bazę danych w celu wyświetlenia zaktualizowanych spersonalizowanych informacji. Ta strona współdziała z zapleczem, jak powiedzmy, z bazą danych.
To programowanie można wykonać w wielu językach:
Ten kod dotyczy:
Osoba odpowiedzialna za programowanie po stronie serwera musi wiedzieć:
źródło
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 agit 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.
źródło
W żadnym wypadku nie jest to zamierzona odpowiedź; proponuję raczej jako punkt uzupełniający (w odpowiedzi na
when do you use each of them
pytanie), o którym jeszcze nie wspomniano w innych odpowiedziach, a mianowicie:Ochrona własności intelektualnej
Kod źródłowy, który znajduje się po stronie klienta (np. W Javascript), jest łatwy do odczytania i / lub może być poddany inżynierii wstecznej, jeśli został zaciemniony.
Kod źródłowy, który znajduje się po stronie serwera, może jednak bezpiecznie chronić zastrzeżone algorytmy i zwracać tylko wynik; rodzaj czarnej skrzynki.
źródło