Jak ważne jest używanie tego samego języka dla klienta i serwera?

11

Oceniam rozwiązania architektoniczne dla projektu mobilnego, który oprócz aplikacji natywnych będzie zawierał usługę internetową / aplikację i przyglądałem się różnym bibliotekom, frameworkom i stosom, takim jak Meteor , co jest rodzajem „frameworku pakietu otwartego stosu” , jest ściśle związany z node.js .

Wiele mówi się o korzyściach płynących z używania tego samego języka zarówno po stronie klienta, jak i serwera, i nie rozumiem tego. Mogę zrozumieć, jeśli chcesz wykonać kopię lustrzaną całego stanu aplikacji internetowej zarówno na kliencie, jak i serwerze, ale starasz się znaleźć inne wygrane ... Wydajność przepływu pracy?

Próbuję zrozumieć, dlaczego parytet językowy klient / serwer jest uważany za świętego graala. Dlaczego parzystość języka klient / serwer ma znaczenie przy tworzeniu oprogramowania?

Makita
źródło
12
Twierdzę, że niekoniecznie jest to świetna rzecz, szczególnie gdy JavaScript jest językiem, o którym mowa.
Latty
4
Muszę przyznać, że jeszcze nie doszedłem do momentu objawienia z JS i dlatego nie zrozumiałem, dlaczego chcesz napisać z nim kod serwera, ale to inny temat ..
Makita,
1
Dziękujemy za napisanie pierwszego wpisu na temat programistów stosów wymiany. Aby uzyskać więcej informacji na temat maksymalizacji głosów w górę i minimalizacji głosów w dół, przeczytaj FAQ. Być może zostałeś odrzucony, ponieważ twoje pytanie jest bardziej tematem czatu niż czymś z konkretną odpowiedzią. Przyzwyczajenie się do formatu tutaj może chwilę potrwać. Krótkie, pozbawione szczegółów odpowiedzi są odrzucane. Podobnie są odpowiedzi, które debatują na dany temat. Istnieje pewne podłoże, w którym pytanie lub odpowiedź jest konkretne, ale wystarczająco uniwersalne i uderza w temat z odpowiednią ilością szczegółów.
DeveloperDon
1
Nawet bym się temu sprzeciwił. Używając tego samego języka zarówno dla serwera, jak i klienta, narażasz się na ryzyko zaplątania i specyficznych dla języka funkcji w komunikacji.
Pieter B
3
@Makita Myślę, że to ważne pytanie, ale ludzie zazwyczaj zadowalają się negatywnymi ocenami, gdy pytają o przykłady. Usunąłem niektóre części pierwotnego pytania i skupiłem się na tym, dlaczego parzystość języka klient / serwer ma znaczenie.
wałek klonowy

Odpowiedzi:

5

Po stronie PRO:

  • Jeśli schematy i kod mogą być ponownie wykorzystane przez obie strony, istnieje duża efektywność we wdrażaniu podobnej logiki i danych tylko raz.

Po stronie CON:

  • Klient może być przede wszystkim widokiem dobrze dopasowanym do języka znaczników lub języka skryptowego, podczas gdy serwer może być przede wszystkim logiką biznesową, która jest lepiej dostosowana do innego języka.

Podczas tworzenia stron internetowych języki rozprzestrzeniły się, tworząc potężne narzędzia dla określonych części systemu, a także potrzebę uczenia się wielu specjalizacji przez programistów lub zespoły programistów. W innych obszarach, takich jak przetwarzanie transakcji lub systemy wbudowane, które są zgodne z podejściem projektowania systemów, oszczędności mogą wynikać ze wspólnego języka.

Wydaje się, że nowe frameworki JavaScript docierają do nas bardzo szybko, a niektóre prace nad pakietami API dla zaplecza i narzędzi dla frontonu. Rozsądne może być zachowanie elastyczności i oddzielenie problemów między kodem po stronie klienta a serwerem, abyś mógł swobodnie unosić się między nimi bez zbytniego blokowania się zbyt długo przy użyciu konkretnego narzędzia.

DeveloperDon
źródło
14

Przypuszczalnie postrzegane korzyści to:

tj. ułatwia zarządzanie zasobami dla kierowników projektów i ma niewielką lub żadną korzyść techniczną (być może nawet ujemną korzyść techniczną, jeśli zatrudniasz kilka kucyków z jednym trikiem)

jk.
źródło
1
Jest to korzyść, jeśli rozwijasz się sam, ponieważ nie ma „mentalnej” zmiany między serwerem a klientem. Jeśli chcesz coś zrobić i masz duże doświadczenie w JavaScript, prawdopodobnie uzyskasz w ten sposób lepsze i szybsze wyniki, ale to chyba wszystko ...
K ..
Czy powiedziałby Pan również, że nie ma wady technicznej, być może korzyści z używania innego języka dla każdego podsystemu?
Michael Borgwardt,
1
@MichaelBorgwardt, zakładając, że każdy język jest dobrze dopasowany do podsystemu, powiedziałbym, że tak, nie ma technicznej wady (choć może nie jest to duża zaleta), ale może to mieć duży wpływ na dynamikę zespołu i zatrudnienie. oczywiście większość podsystemów będzie dość łatwa do wdrożenia w dowolnym języku, więc nie spodziewałbym się, że to ekstremalne.
jk.
Uwaga, że ​​jest to zły pomysł, jest nieuzasadniona. Istnieje wiele języków, które można skompilować do JavaScript i języka po stronie serwera, w tym Lisp , który w rzeczywistości jest językiem używanym w kursie SICP chwalonym przez post na blogu Joela.
back2dos
@ back2dos mam nadzieję, że to wyjaśnia
jk.
2

Korzyścią jest to, że możesz ponownie wykorzystać (do pewnego stopnia) wiedzę i kod ludzi po obu stronach.

Ludzie

Programiści muszą opanować jeden język i utworzyć jedną pulę. Zamiast dwóch zasobów wiedzy specjalistycznej. Ułatwia to transfer wiedzy między nimi, a także umożliwia łatwiejsze przełączanie pracy między klientem a serwerem. Wreszcie ułatwia komunikację z członkami zespołu „drugiej strony” podczas omawiania problemów technicznych, ponieważ mają oni to samo zaplecze techniczne.

Kod

Czasami warto mieć pewien stan po stronie klienta, algorytmy lub oba. Czasami to samo dzieje się po obu stronach. Weźmy przykład gry wieloosobowej: musisz przedstawić stan gry zarówno na kliencie, jak i na serwerze. Musisz także wdrożyć reguły po stronie klienta (w celu reagowania), a także po stronie serwera (w celu zatwierdzenia działań gracza). Możliwość ponownego wykorzystania kodu do tych rzeczy może być wielką zaletą. ... w niektórych innych aplikacjach wcale nie byłbyś potrzebny ... wszystko zależy od przypadku.

... oczywiście są też wady, ale to na inny post;)

Dagnele
źródło