To idzie tak:
serwery są drogie, ale użytkownicy będą ci dać czas przetwarzania w swoich przeglądarkach za darmo. Dlatego kod po stronie serwera jest relatywnie drogi w porównaniu do kodu po stronie klienta w dowolnej witrynie wystarczająco dużej, aby mógł działać więcej niż jeden serwer. Istnieje jednak kilka rzeczy, których nie można pozostawić klientowi, takich jak sprawdzanie i pobieranie danych. Chciałbyś zrobić to na kliencie, ponieważ oznacza to szybsze czasy reakcji dla użytkowników i mniej infrastruktury serwerowej dla ciebie, ale obawy dotyczące bezpieczeństwa i dostępności oznaczają, że wymagany jest kod po stronie serwera.
Zwykle robisz jedno i drugie. Piszesz logikę po stronie serwera, ponieważ musisz, ale ty też piszesz tę samą logikę w javascriptu w nadziei, że dostarczysz szybsze odpowiedzi do użytkownika i zaoszczędzisz swoim serwerom trochę dodatkowej pracy w niektórych sytuacjach. Jest to szczególnie skuteczne w przypadku kodu walidacyjnego.
Ponieważ wszyscy jesteśmy tutaj (głównie) programistami, powinniśmy natychmiast dostrzec nowy problem. Nie tylko dodatkowa praca polega na opracowaniu dwóch zestawów tej samej logiki, ale także na pracy związanej z jej utrzymaniem, nieuchronne błędy wynikające z platform nie pasują do siebie, a błędy wprowadzone jako implementacje zanikają w miarę upływu czasu.
Wprowadź javascript po stronie serwera. Pomysł polega na tym, że możesz napisać kod jeden raz, więc ten sam kod działa zarówno na serwerze, jak i na kliencie. Wydaje się, że rozwiązuje to większość problemu: natychmiast otrzymuje się pełny zestaw logiki serwera i klienta, nie ma dryfowania ani podwójnej konserwacji. Dobrze, gdy programiści muszą znać tylko jeden język zarówno dla pracy serwera, jak i klienta.
Niestety, w prawdziwym świecie nie działa tak dobrze. Problem jest czterokrotny:
- Widok strony serwera wciąż różni się od widoku strony. Serwer musi być w stanie wykonywać takie czynności, jak bezpośrednia rozmowa z bazą danych, której nie powinno się robić w przeglądarce. Przeglądarka musi robić takie rzeczy, jak manipulowanie DOM, który nie pasuje do serwera.
- Nie kontrolujesz silnika javascript klienta, co oznacza, że nadal będą występować istotne różnice językowe między kodem serwera a kodem klienta.
- Baza danych jest zwykle większym wąskim gardłem niż serwer WWW, więc oszczędności są minimalne.
- Podczas gdy prawie wszyscy znają trochę javascript, niewielu programistów naprawdę zna i rozumie javascript oraz.
To nie są całkowicie niemożliwe do opanowania problemy techniczne: ograniczasz język obsługiwany przez serwer do podzestawu javascript, który jest dobrze obsługiwany w większości przeglądarek, udostępnia IDE, który zna ten podzbiór i rozszerzenia po stronie serwera, wprowadzić pewne zasady dotyczące struktury strony, aby zminimalizować problemy z DOM i dostarczyć trochę skryptu java do obsługi klienta, aby platforma była nieco przyjemniejsza w użyciu. Rezultatem jest coś takiego jak Aptana Studio/Jaxer lub ostatnio Node.js, co może być całkiem miłe.
Ale nie doskonały. Moim zdaniem jest po prostu zbyt wiele pułapek i niewielkich problemów ze zgodnością, aby to naprawdę zabłysnąć. Ostatecznie, dodatkowe serwery są nadal tanie w porównaniu do czasu deweloperów, a większość programistów może być znacznie bardziej wydajna za pomocą czegoś innego niż javascript.
Co naprawdę chciałbym zobaczyć, to częściowy javascript po stronie serwera. Gdy strona jest żądana lub przesłany formularz, platforma serwerowa wymaga potwierdzenia w javascript, prawdopodobnie jako wtyczka do serwera, który jest całkowicie niezależny od reszty, ale odpowiedź została zbudowana przy użyciu wybranej platformy .
Wow! Co za szybkość pisania! –
Nie ma sposobu, abyś po prostu wpisał to: p: –
:) _last_ czas ktoś zadał takie pytanie, że został zamknięty tuż przed tym, jak mogłem trafić. Miałem dość pracy w poście, postanowiłem ją zapisać. –