ASP.NET MVC 5 vs. AngularJS / ASP.NET WebAPI [fechado]

86

Atualmente estou avaliando o modelo de programação para a criação de futuros aplicativos da Web em minha empresa. Então, vou decidir entre ASP.NET MVC 5 (com Razor Views) e AngularJS com ASP.NET WebAPI. Quais são as vantagens / desvantagens desses dois modelos de programação?

bitsmuggler
fonte
4
Bem ... se você vai ancorar o AngularJS ao ASP.NET ... você não está realmente fazendo uma comparação justa. É como se você estivesse tentando tirar o Javascript do Angular, e não é assim que deveria acontecer. O Angular deve ser sua estrutura para o cliente e funciona melhor quando você usa poucos modelos do lado do servidor: simple-talk.com/blogs/2013/10/16/… . Coisas como autenticação e coisas do gênero fazem sentido, mas deixe o razor de fora e vá direto para o .NET e crie uma camada de API para o Angular com ele.
Brian Vanderbusch de
3
Acho que o que você realmente precisa é apenas de AngularJS com ASP.NET WebAPI. Acho que tem o melhor dos dois mundos. Eu tentei misturar MVC com AngularJS e não foi uma experiência muito agradável quando tive problemas, então sugiro não cair nessa armadilha. Uma coisa que sinto falta dessa abordagem são as visualizações baseadas em dispositivo que o MVC com o mecanismo Razor pode fornecer. Deve haver uma maneira de superar isso, mas ainda não experimentei o suficiente.
Kiran
Tendo trabalhado com a Angular por apenas alguns meses (embora pareça uma eternidade), eu nunca voltaria para o Razor. Quanto mais você trabalha com o Angular, mais você começa a apreciá-lo - flexibilidade e poder, às vezes parece mágica. Devo dizer que a API Web não funciona bem com o Angular, pelo menos no formulário POST, mas isso poderia ser resolvido. Não é uma transição fácil para a sintaxe de um programador C #, já que javascript não é uma linguagem fortemente tipada. Mas, ao superar esse obstáculo, você passará a apreciar o Angular.
Florida G.
Navalha é uma coisa horrível, mesmo entre máquinas de modelagem. Você notará um aumento drástico na produtividade ao usar o angular em relação a qualquer motor de modelagem (Jade, guidão, navalha etc.). Use um back-end que atende JSONs (pode ser web-api, node-express ou PHP) e um front-end angular. E só para notar, o nocaute não é tão bom quanto angular ... Tudo de bom ...
Giridhar Karnik
1
@BrianVanderbusch Não tenho certeza do que você está falando. O back-end não importa. Pode ser qualquer coisa. Ele está dizendo que usará ASP.NET como back-end e angular como front-end do lado do cliente. O Angular ainda precisa fazer chamadas para o servidor para obter dados. Isso não tem nada a ver com não dar ao Angular uma comparação justa.
user441521

Respostas:

103

Meus 2 centavos. Eu pessoalmente prefiro visualizações em HTML puro, um front-end inteiramente angular junto com um back-end Web API / EF / SQL Server, basicamente sem Razor. Razor é uma abstração para ajudar os programadores a renderizar HTML, hoje em dia todos estão chegando à conclusão de que remover essas abstrações é uma ideia melhor, daí a evolução do ASP.NET de formulários da web para MVC etc. Não é realmente difícil para os desenvolvedores chegarem a aprende com HTML e usa um front end angular, além disso torna o trabalho de designers de IU mais fácil, eles têm HTML puro e JSON / Javascript, eles não precisam entender MVC, Razor, controladores e ações. Costumávamos trabalhar completamente em MVC, em nosso último projeto mudamos para um back-end de API da Web e um front-end angular, e notamos que a produtividade do nosso designer de IU melhorou muito.

Mohammad Sepahvand
fonte
3
E eu gostaria de acrescentar a isso, com o angular você consegue atualizar seus modelos dinamicamente, o que é obviamente incrível
Willem D'Haeseleer
4
Sim, quando se trata de desenvolver um front-end mais dinâmico e responsivo em relação ao custo de desenvolvimento, realmente não há competição.
Mohammad Sepahvand
@ user189756 como você entrega as páginas HTML ao cliente ao usar a abordagem da API da Web?
Yoav
@Yoav Esta é uma resposta antiga, mas na época era um host MVC com um único controlador.
Mohammad Sepahvand
1
@Yoav Precisamente. Mas acrescentarei que a outra resposta também é excelente, especialmente levando em consideração coisas como SEO.
Mohammad Sepahvand
53

Eu acredito que você não pode comparar. AngularJS é um framework Single Page Application (SPA), enquanto o ASP.Net MVC usa o modelo padrão onde se navega entre as páginas. Se você deseja construir um SPA é decidido por fatores como

  • Você quer SEO. Qual a maioria desses frameworks ricos em JS tem suporte limitado.
  • Como você pode estruturar seu aplicativo como SPA ou múltiplos SPAs.
  • Vir de uma linguagem C # segura para a programação em JavaScript é um desafio.
  • Aprender AngularJS e usá-lo de forma eficaz.

Usamos a visualização de navalha MVC 5 padrão para configurar as visualizações AngularJS iniciais para que você possa até combiná-las se necessário.

Veja esta resposta Você pode usar AngularJS com o Parse.com? para obter mais contexto.

Chandermani
fonte
12
"... enquanto ASP.Net MVC usa o modelo padrão onde se navega entre as páginas." Isso é simplesmente falso. Aplicativos MVC - usando navalha - podem ser projetados como SPA com muita facilidade.
Sam
7
AngularJS não é limitado a SPAs, você pode muito bem construir um site de várias páginas com angular e links profundos ....
Giridhar Karnik
3
AngularJS não é um SPA. Você pode usá-lo como um SPA, mas isso não é automático nem necessário. Tem que adicionar a dependência de roteamento ng-route para ter o roteamento. AngularJS é incrível e pode ser um ótimo SPA, mas é simplesmente bobo dizer AngularJS = SPA.
Tom Stickel
5
TypeScript é uma boa opção para type safe js.
Kyle JV
9
AngularJS foi feito pelo Google. Se falta SEO, eles estão fazendo algo errado.
Worthy7