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?
Odpowiedzi:
Po stronie PRO:
Po stronie CON:
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.
źródło
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)
źródło
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;)
źródło