Pergunta

Eu encontrei alguns selvagens observações que ASP.NET MVC é 30x mais rápido do que ASP.NET WebForms.O que é a verdadeira diferença de desempenho é lá, isso foi medido e quais são os benefícios de desempenho.

Esta é ajudar-me a considerar mover ASP.NET para WebForms ASP.NET MVC.

Foi útil?

Solução

Nós ainda não realizou o tipo de escalabilidade e desempenho de testes necessário para chegar a quaisquer conclusões.Eu acho que ScottGu pode ter sido a discutir o potencial de desempenho de metas.Como nós nos movemos em direção a Beta e a versão RTM, vamos ser internamente fazendo mais perf testes.No entanto, não tenho certeza de que a nossa política está na publicação de resultados de desempenho de testes.

Em qualquer caso, tais testes realmente precisa considerar aplicações do mundo real...

Outras dicas

Eu acho que isso vai ser uma questão difícil, definitivamente, a resposta é muito dependerá A) como implementar o WebForms aplicação, e B) como você implementar o aplicativo MVC.Em suas "matérias" forms, MVC é provavelmente mais rápido do que o WebForms, mas anos e anos de ferramentas e a experiência de ter produzido um número de técnicas para a construção rápida de aplicações WebForms.Eu estaria disposto a apostar que um sénior ASP.NET desenvolvedor poderia produzir um WebForms aplicativo que rivaliza com a velocidade de qualquer aplicativo MVC - ou obter, pelo menos, uma diferença insignificante.

A diferença real- como o @tvanfosson sugerido- está na capacidade de teste e limpeza SoC.Se a melhoria de desempenho é a sua principal preocupação, eu não acho que é um grande motivo para abandonar o navio em WebForms e começar a re-construção em MVC.Pelo menos não até que tentei as técnicas disponíveis para a otimização do WebForms.

Ele diminuiu um dos meus páginas de 2MB de carga, para 200 mil, somente eliminando o estado de visualização e tornando-a suportável através de programação para trabalhar com o enviado de saída.

O tamanho sozinho, mesmo que o tratamento foi o mesmo irá criar grandes melhorias em conexões por segundo e a velocidade dos pedidos.

Eu acho que muitas das pessoas que pensam que WebForms são inerentemente lento ou com uso intensivo de recursos estão colocando a culpa no lugar errado.9 em cada 10 vezes, quando eu estou trazido para otimizar um webforms app há muitos lugares onde as apps autores entendem o propósito do viewstate.Eu não estou dizendo que o viewstate é perfeito nem nada, mas é muito fácil de abuso, e é esse tipo de abuso que está a causar o inchado viewstate campo.

Este artigo foi invalueable para me ajudar a entender muitos desses abusos. https://weblogs.asp.net/infinitiesloop/truly-understanding-viewstate

A fim de realizar uma comparação válida entre o MVC e WebForms precisamos ter certeza de que ambos os aplicativos estão usando as arquiteturas corretamente.

O meu teste mostra algo entre 2x e 7x mais req/seg no MVC, mas depende de como você criar seus formulários web app.Com apenas texto "olá mundo" em que, sem qualquer lado do servidor de controle, mvc é em torno de 30-50% mais rápido.

Para mim o real "desempenho" aperfeiçoamento em MVC é o aumento da testável superfície da aplicação.Com WebForms, havia um monte de aplicativo que foi difícil para testar.Com MVC a quantidade de código que se torna testável basicamente dobra.Basicamente, o que não é facilmente testável é o código que gera o layout.Toda a sua lógica de negócio e a lógica de acesso a dados-incluindo-se a lógica de que preenche os dados reais utilizados na vista -- agora é passível de teste.Enquanto eu esperava ser mais funcionais, bem como, a página de ciclo de vida é bastante simplificada e mais passíveis de programação web, mesmo se fosse o mesmo ou um pouco mais lento do que seria a pena de comutação a partir de um ponto de vista qualitativo.

Eu acho que o problema aqui é que não importa o quanto mais rápido ASP.Net MVC é que o antigo webforms, ele não vai fazer diferença, porque a maior parte do tempo é tomada no banco de dados.A maior parte do tempo, você servidores web vai sentar-se em 0-10% de uso da CPU, apenas esperando no seu servidor de banco de dados.A menos que você obter um número extremamente grande de visitas no seu site, e seu banco de dados é extremamente rápido, você provavelmente não vai notar uma grande diferença.

A única números concretos posso achar que são a partir do início de ASP.NET MVC-o desenvolvimento é neste fórum thread:

http://forums.asp.net/p/1231621/2224136.aspx

Rob Connery-se de certa forma confirma a afirmação de que ScottGu afirmou que ASP.NET MVC pode servir 8000 solicitações por segundo.

Talvez Jeff e sua tripulação pode dar algum tipo de indício de seu desenvolvimento deste site.

Ao contrário aceito opinião, otimizado webforms de uso completamente mata MVC em termos de desempenho bruto.Webforms tem sido hyper-otimizado para a tarefa de servir de html muito mais do que a CVM tem.

Métricas estão disponíveis no http://www.techempower.com/benchmarks/#section=data-r7&hw=i7&test=db

Cada comparação mvc é no baixo-médio/inferior-superior rankings da lista, enquanto otimizado webforms uso de lugares no alto-médio/superior-inferior do ranking.

Anedótico, mas muito graves de validação para essas métricas, www.microsoft.com é servido por webforms não MVC.Alguém aqui acredita que não teria escolhido MVC se foi empiricamente mais rápido?

Não há realmente nenhuma maneira para responder a isso.MVC usa a Web Forms mecanismo de exibição por padrão em si, e pode ser configurado para usar qualquer número de modo de exibição personalizado motores, por isso, se você quer uma comparação de desempenho, você vai ter que ser mais específico.

Eu comecei a trabalhar em MVC cerca de um ano atrás, eu estava inspirado, mas não impressionado.

Eu avesso o estado de exibição e vê-lo como a raiz de todo o mal, em termos de ASP.NET.É por isso que eu simplesmente não usá-lo e para ser perfeitamente honesto, por que você faria isso?

Eu levei basicamente o ASP.NET MVC Framework conceito e construído, que no meu próprio caminho.Eu mudei algumas coisas embora.Eu construí o meu controlador de quebra automática de código, ou de roteamento de URL código em torno de uma dinâmica recompilação.

Agora, eu gostaria de ir tão longe como a dizer que ASP.NET aplicações MVC vai ser mais rápido com base em como você usá-lo.Se você abandonar completamente WebForms você vai ser mais rápido porque a ASP.NET ciclo de vida e o modelo de objeto é monstruoso.

Quando você está escrevendo, você está instanciando um exército...não, espera, uma legião de objetos que irão participar no processamento de sua visão.Esse vai ser mais lento do que se você se expressar a quantidade mínima de comportamento na página ASPX em si.(Eu não me importo sobre o mecanismo de exibição de abstração, porque o suporte para páginas ASPX no Visual Studio é decente, mas eu completamente ignorados WebForms como um conceito e, basicamente, qualquer ASP.NET quadro devido ao código de inchaço ou não ser capaz de mudar as coisas que o fio de minha aplicação).

Eu encontrei maneiras de depender de recompilação dinâmica (Sistema.Reflexão.Emitir) pela emissão de propósito especial, objetos e código sempre que necessário.A execução deste código é mais rápido do que a reflexão, mas, inicialmente, construído através da reflexão de serviço.Isso tem dado o meu MVC com sabor quadro de grande desempenho, mas também muito estaticamente tipada.Eu não uso e seqüências de pares nome/valor coleções.Em vez minha compilador personalizado serviços se passa em um reescreve um post de formulário para uma ação de controle que está sendo passado de um tipo de referência.Por trás da cena, há um monte de coisas acontecendo, mas esse código é rápido, muito mais rápido do que os WebForms ou MVC Framework.

Também, eu não escrevo URLs, eu escrevo as expressões lambda que ser traduzido em URLs de que, mais tarde, dizer que a ação do controlador para chamar.Este não é particularmente rápido, mas é melhor do que ter quebrado URLs.É como se você tivesse digitado estaticamente recursos, bem como estaticamente tipada de objetos.Um estaticamente tipada aplicação web?É isso que eu quero!

Eu gostaria de encorajar mais pessoas a tentar fazer isso.

Os projetos criados com o visual studio.É mvc4 modelo, outra é WebForm (tranditional).E quando fazer o teste de carga com WCAT, este é o resultado,

MVC4 é bastante lento do que o WebForms, qualquer idéias?

enter image description here

MVC4

  • pode obter cerca de 11 rps
  • o rps é muito baixa 2-cpu ou 4 cpu do servidor

enter image description here

WebForms (aspx)

  • poderia ficar acima de 2.500 rps

  • o desempenho do assassino foi encontrado que é um bug do MVC Bata ou RC.E O desempenho poderia ser melhorado, uma vez que eu remover Bundles coisas.Agora, a mais recente versão corrigiu isso.

O desempenho depende do que você está fazendo...Geralmente MVC é mais rápido do que asp.net principalmente porque Viewstate é ausente e porque MVC trabalha mais com o Retorno de chamada de Reposição por padrão.

Se você otimize sua página de formulário da web, você pode ter o mesmo desempenho que o MVC, mas ele vai ser um monte de trabalho.

Também, o seu é um monte de nugets MVC (e também para o Formulário da web) para o ajudar a melhorar o desempenho do site, como combinar e minify css e javascripts, o grupo de imagens e usá-las como um sprite, e assim por diante.

O desempenho do site depende muito de sua arquitetura.Limpo, com boa separação de preocupação vai lhe trazer mais um código limpo e uma ideia melhor de como melhorar o desempenho.

Você pode dar uma olhada neste modelo "Neos-SDI Modelo MVC"o que irá criar para você uma arquitetura limpa, com muitas melhorias de desempenho por padrão (seleção MvcTemplate site).

enter image description here

Eu fiz um pequeno teste de carga do VSTS experiência com algumas informações básicas código e encontrou ASP.NET MVC o tempo de resposta a ser duas vezes mais rápido comparado com ASP.NET Webforms.Acima é anexado gráfico com o enredo.

Você pode ler este teste de carga experiência em detalhes a partir deste artigo CP https://www.codeproject.com/Articles/864950/ASP-NET-MVC-vs-ASP-NET-WebForm-performance-compari

O teste foi realizado com as especificações abaixo usando VSTS e telerik carga de teste de software:-

Usuário de carga de 25 usuários.

Executar a duração do teste foi de 10 minutos.

Máquina de configuração DELL 8 GB de Ram, Core i3

Projeto foi hospedado no IIS 8.

Projeto foi criado usando o MVC 5.

Ligação LAN de rede foi assumido.Assim, este teste não conta para a latência de rede para agora.

Navegador no teste selecionado o Chrome e o Internet explorer.

Múltiplas de leitura, onde são tiradas durante o teste para a média de ocorrências desconhecidas.7 leituras lugar, e todas as leituras são publicados neste artigo como a leitura de 1 , 2 e assim por diante.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top