Minha equipe e eu recebemos financiamento para começar a desenvolver um aplicativo da web de nível empresarial (não entrarei em detalhes sobre o que ele faz). O aplicativo terá muitas páginas da web separadas, mas duas dessas páginas serão mais focadas e muito pesadas - pesadas como em muita interação do usuário, modais que exibem dados em massa, conexões de websocket, bate-papo, etc.
Fui designado como arquiteto-chefe no projeto, então estou fazendo algumas pesquisas nas estruturas da web mais recentes. Para o back-end, fizemos alguns testes e decidimos usar a plataforma Azure SQL. Até agora, estou gostando das melhorias que foram feitas e estão sendo feitas no ASP.NET com Core 2.0. Especificamente, o mecanismo Razor, em relação às versões anteriores da ASP.NET MVC.
Eu queria obter algumas opiniões de especialistas sobre o "novo" Razor vs. Angular / React e similares. Estou particularmente mais preocupado com o desempenho. Como o Core 2.0 Razor suporta frameworks de renderização do lado do cliente? As diferenças são insignificantes? Nosso aplicativo tem como alvo um potencial de 1.000.000 de usuários (cerca de 100.000 simultâneos).
Desde já, obrigado!
Respostas:
Acabamos optando por um front-end Angular e um back-end da API ASP.NET Core, usando o Azure SQL. Testamos o Core Razor e, embora melhor que o antigo Razor, o Angular foi muito mais rápido para nós no final. No que diz respeito à experiência do usuário, o Angular (ou React) é muito superior em termos de desempenho. Descobrimos que os aspectos de vinculação de modelo do Angular são uma vantagem gigantesca da renderização do lado do servidor. Usar o Razor (ou renderização do lado do servidor em geral), entretanto, se presta a uma melhor integridade geral no que diz respeito aos dados e contribui para uma melhor transição de dados do front-end para o back-end. Existe uma verdadeira desconexão entre uma estrutura de front-end e uma API. Todos os dados que são transmitidos ao servidor devem ser convertidos em objetos digitados - isso significa que você deve gerenciar dois conjuntos de modelos POCO separados. Isso pode causar problemas se os objetos do servidor e os objetos front-end não estiverem alinhados. No momento, o Entity Framework Core não está muito amadurecido, então temos problemas com a atualização de objetos, consulta de objetos, incluindo objetos filhos, etc.
No geral, essa configuração funcionou muito bem para nós até agora! Imagino que o React seja um substituto semelhante ao Angular se você se sentir mais confortável com ele. Eu tive que aprender Angular, que foi uma transição muito fácil, e eu adoro isso agora!
fonte
Usando Angular / React com API no lado do servidor:
Mas, ao usar Angular / React, você deve se preocupar com os clientes:
fonte
Eu não tenho benchmarks. Mas, tenho vários projetos executando JQuery, Razor, .NET MVC (C #), AJAX. Não na escala que você está enfrentando.
Conselhos .. Certifique-se de pensar sobre as coisas e seguir as melhores práticas. Para manter a manutenção, certifique-se de dividir os controladores, visualizações e modelos em grupos menores e significativos. Quando comecei, cometi o erro de colocar tudo em um controlador Home e uma tonelada de visualizações na pasta compartilhada. Estava bem no início, mas quando o recurso creep começou, tornou-se uma bagunça e difícil de voltar e redesenhar.
Eu também uso o Linq2SQL. Cometi o erro de criar modelos para tudo e então percebi que poderia simplesmente retornar o conjunto de resultados de minhas consultas como um modelo. duh.
Se você for .NET MVC e está preocupado com o desempenho, encontrei o seguinte:
NÃO retorne visualizações parciais que criam grandes blocos de HTML! Certifique-se de minimizar tudo. Livre-se de todos os espaços em branco. Use nomes de ID menores. Aproveite o tempo para criar html o mais leve possível. Retorne JSON e peça ao cliente para fazer parte do trabalho.
Tenha cuidado ao desenvolver seu CSS. Não use muitos estilos embutidos, reserve um tempo para incorporar em arquivos CSS que você pode minimizar mais tarde.
O mesmo vale para o JS do lado do cliente. É tentador colocar o JS em visualizações parciais. Mantenha tudo organizado.
Renderizar no IE é horrível. Especialmente se houver muitas imagens. Certifique-se de compactar as imagens o máximo possível, sem perder a qualidade, é claro.
fonte