ASP.NET MVC 5 kontra AngularJS / ASP.NET WebAPI [zamknięte]

86

Obecnie oceniam model programowania do tworzenia przyszłych aplikacji internetowych w mojej firmie. Więc zdecyduję między ASP.NET MVC 5 (z Razor Views) a AngularJS z ASP.NET WebAPI. Jakie są zalety / wady tych dwóch modeli programowania?

bitsmuggler
źródło
4
Cóż ... jeśli zamierzasz zakotwiczyć AngularJS w ASP.NET ... tak naprawdę nie dajesz uczciwego porównania. To tak, jakbyś chciał wyjąć JavaScript z Angular, a to po prostu nie jest tak, jak powinno. Angular ma być Twoim frameworkiem dla klienta i działa najlepiej, gdy używasz bardzo niewielu szablonów po stronie serwera: simple-talk.com/blogs/2013/10/16/… . Rzeczy takie jak uwierzytelnianie i tym podobne mają sens, ale zostaw brzytwę i po prostu przejdź od razu .NET i utwórz za jego pomocą warstwę API dla Angular.
Brian Vanderbusch
3
Myślę, że naprawdę potrzebujesz tylko AngularJS z ASP.NET WebAPI. Myślę, że to najlepsze z obu światów. Próbowałem zmieszać MVC z AngularJS i nie było to zbyt miłe doświadczenie, kiedy napotkałem problemy, więc sugerowałbym nie wchodzić w tę pułapkę. Jedną rzeczą, której brakuje mi w tym podejściu, są widoki oparte na urządzeniach, które może zapewnić MVC z silnikiem Razor. Musi istnieć sposób, aby to przezwyciężyć, ale nie zrobiłem tego jeszcze wystarczająco dużo.
Kiran
Pracując z Angularem tylko przez kilka krótkich miesięcy (choć wydaje się, że trwa to wieczność), nigdy nie wróciłbym do Razora. Im więcej pracujesz z Angular, tym bardziej doceniasz to - elastyczność i moc, czasami wydaje się to magiczne. Powinienem powiedzieć, że Web API nie gra ładnie z Angularem, przynajmniej na formularzu POST, ale można to wypracować. Nie jest to łatwe przejście dla programisty C # pod względem składni, ponieważ javascript nie jest językiem silnie typizowanym. Ale kiedy pokonasz tę przeszkodę, docenisz Angular.
Florida G.
Brzytwa to okropna rzecz nawet wśród szablonów silników. Zauważysz drastyczny wzrost produktywności, gdy używasz kątowego na dowolnym silniku szablonowym (Jade, kierownica, maszynka do golenia itp.). Użyj zaplecza obsługującego JSON (może to być web-api, node-express lub PHP) i kątowego interfejsu użytkownika. I dla przypomnienia, nokaut nie jest tak dobry jak kątowy .... Wszystkiego najlepszego ...
Giridhar Karnik
1
@BrianVanderbusch Nie jestem pewien, o czym mówisz. Backend w ogóle nie ma znaczenia. To może być wszystko. Mówi, że użyje ASP.NET jako zaplecza i kątowego jako interfejsu użytkownika po stronie klienta. Angular nadal musi dzwonić do serwera w celu uzyskania danych. Nie ma to nic wspólnego z brakiem rzetelnego porównania Angulara.
user441521

Odpowiedzi:

103

Moje 2 centy. Osobiście wolę czyste widoki HTML, całkowicie kątowy interfejs wraz z zapleczem Web API / EF / SQL Server, w zasadzie bez Razora. Razor to abstrakcja, która pomaga programistom renderować HTML, w dzisiejszych czasach wszyscy dochodzą do wniosku, że usunięcie tych abstrakcji jest lepszym pomysłem, stąd ewolucja ASP.NET z formularzy internetowych do MVC itp. Deweloperzy nie mają trudności z uzyskaniem poradzi sobie z HTML i używa kątowego interfejsu, ponadto ułatwia to pracę projektantom UI, mają czysty HTML i JSON / Javascript, nie muszą zajmować się rozumieniem MVC, Razor, kontrolerów i akcji. Kiedyś pracowaliśmy całkowicie na MVC, w naszym najnowszym projekcie przenieśliśmy się do zaplecza interfejsu API sieci Web i kątowego interfejsu użytkownika i zauważyliśmy, że produktywność naszego projektanta interfejsu użytkownika znacznie się poprawiła.

Mohammad Sepahvand
źródło
3
I chciałbym do tego dodać, dzięki angularowi możesz dynamicznie aktualizować szablony, co jest oczywiście niesamowite
Willem D'Haeseleer
4
Tak, jeśli chodzi o opracowanie bardziej dynamicznego i responsywnego interfejsu użytkownika w porównaniu z kosztami rozwoju, naprawdę nie ma konkurencji.
Mohammad Sepahvand
@ user189756 w jaki sposób dostarczasz strony HTML do klienta, korzystając z podejścia Web API?
Yoav
@Yoav To stara odpowiedź, ale w tamtym czasie był to host MVC z pojedynczym kontrolerem.
Mohammad Sepahvand
1
@Yoav Dokładnie. Ale dodam, że druga odpowiedź również jest doskonała, zwłaszcza biorąc pod uwagę takie rzeczy, jak SEO.
Mohammad Sepahvand
53

Uważam, że nie można porównywać. AngularJS to platforma aplikacji jednostronicowej (SPA), podczas gdy ASP.Net MVC używa standardowego modelu, w którym nawiguje się między stronami. O tym, czy chcesz zbudować SPA, decydują takie czynniki, jak

  • Chcesz SEO. Które z tych bogatych w JS frameworków mają ograniczone wsparcie.
  • Jak możesz zorganizować swoją aplikację jako SPA lub wiele SPA.
  • Przejście z języka C # bezpiecznego dla typów do programowania w języku JavaScript jest wyzwaniem.
  • Nauka AngularJS i efektywne korzystanie z niego.

Używamy standardowego widoku maszynki do golenia MVC 5, aby skonfigurować początkowe widoki AngularJS, aby w razie potrzeby można było je nawet łączyć.

Zobacz odpowiedź. Czy możesz używać AngularJS z Parse.com? aby uzyskać więcej kontekstu.

Chandermani
źródło
12
„... podczas gdy ASP.Net MVC korzysta ze standardowego modelu, w którym nawiguje się między stronami”. To jest po prostu fałszywe. Aplikacje MVC - używając maszynki do golenia - można bardzo łatwo zaprojektować jako SPA.
Sam
7
AngularJS to nie ograniczone SPA, można bardzo dobrze zbudować wielostronicową witrynę z angularem wraz z głębokim linkowaniem ....
Giridhar Karnik
3
AngularJS nie jest SPA. Możesz go używać jak SPA, ale nie jest to automatyczne ani konieczne. Muszę dodać zależność routingu ng-route, aby nawet mieć routing. AngularJS jest niesamowity i może być świetnym SPA, ale głupio jest powiedzieć, że AngularJS = SPA.
Tom Stickel
5
TypeScript to dobra opcja dla bezpiecznego typu js.
Kyle JV
9
AngularJS zostało stworzone przez Google. Jeśli brakuje mu SEO, robią coś nie tak.
Worthy7