Array
(
)

Site .net com alta performance

Leandro Brito
   - 29 set 2015

Olá,
Vou iniciar a construção de um site para compra de ingressos e a previsão de acesso a página principal é de 8000 usuários por minuto.
Obrigatoriamente usaremos C# .NET e MVC.
O banco de dados, padrão de projeto, ORM e frameworks estão em aberto e podem ser escolhidos.
Até o momento penso em fazer uma WebApi 2.0 com padrão Repository e Micro ORM Dapper e banco SQL Server. O que acham?
Qual a sugestão vocês? Implementariam um sistema de filas ou para essa quantidade de usuários não é necessário?
Obs. Levem em conta um servidor de médio a baixo potencial.
Obrigado

Randrade
   - 30 set 2015

Leandro, até o momento suas escolhas estão boas. Antes de lhe dar uma resposta mais aprofundada, tenho apenas uma dúvida.
Você irá utilizar algum framework front-end, como o angular, knockout, ou outros?

Leandro Brito
   - 30 set 2015


Citação:
Leandro, até o momento suas escolhas estão boas. Antes de lhe dar uma resposta mais aprofundada, tenho apenas uma dúvida.
Você irá utilizar algum framework front-end, como o angular, knockout, ou outros?


Sim. A princípio AngularJS por já ter experiência mas nada impede de utilizarmos outro como knockout se for para ter acréscimo em performance.

Randrade
   - 30 set 2015

Irei responder sua pergunta por partes, então vamos lá.

Citação:
Obrigatoriamente usaremos C# .NET e MVC.


Eu considero essa como uma excelente escolha de arquitetura. Até pq a Microsoft trabalho bem e existem N Framework's para complementar o que a Microsoft "deixou" de fazer.
Ao utilizar MVC você já possui algumas vantagens, como:

Citação:
Como o modelo MVC gerencia múltiplos visualizadores usando o mesmo modelo é fácil manter , testar e atualizar sistemas múltiplos;
É muito simples incluir novos clientes apenas incluindo seus visualizadores e controles;
Torna a aplicação escalável;
É possível ter desenvolvimento em paralelo para o modelo , visualizador e controle pois são independentes;
É mais fácil gerenciar a complexidade da aplicação dividindo-a em modelo, visualizador e controlador (MVC);
-Fonte


Citação:
Até o momento penso em fazer uma WebApi 2.0 com padrão Repository e Micro ORM Dapper e banco SQL Server. O que acham?


Eu não conheço os requisitos de seu se sistema, isso apenas você e/ou sua equipe. Porém, como você terá vários acessos, e necessita de algo robusto e de performance, eu sugeriria estudar a utilização de Asp.Net MVC no lugar do WebApi ou em conjunto, depende de como você prefere trabalhar.

MVC e WebApi são coisas distintas, e com funcionalidades distintas. Você não precisa escolher um ou outro, pode utilizar os dois em conjuntos.

Citação:
O MVC pressupõe que o usuário vá acessar sites que são coleções de páginas para visualizar. WebAPI só retorna resultados, ele obviamente não têm visões, o V do MVC. WebAPI sempre precisou de uma estrutura mais simples, mas se pensar bem elas precisam de modelos (o M) e precisam se não dos controladores (o C) de algo muito parecido. Por isto faz mais sentido usar um framework único.
-Fonte


Porém, se utilizar o WebApi, você necessitará de um FrameWork para o V, do MVC, que no caso você já disse que usará o Angular. Nada contra, mas o angular tem como uso principal SPA (Single Pages Application). Neste caso aconselharia à verificar se realmente é necessário a utilização do mesmo, ou se deixaria por conta do Asp.Net MVC.

Em relação ao seu ORM e banco de Dados, não vejo problema algum. Apenas alternaria entre Dapper e EF (Entity framework). Dapper para queries e EF para outras funcionalidades.

Citação:
Implementariam um sistema de filas ou para essa quantidade de usuários não é necessário?

Para essa parte é muito relativo. Você necessitará realizar testes de carga e stress para determinar quanto o seu site conseguirá suportar, para então ver se há necessidade de implementar um sistema de filas. Lembrando que para isso o seu servidor realmente importa.

-- Adicionais
Problemas de performance podem ser for N possibilidades. A linguagem e Framework

Randrade
   - 30 set 2015

.......

Leandro Brito
   - 30 set 2015

Desconhecia essa abordagem sobre MVC e Webapi e realmente se o site não for SPA a necessidade de um metaframework front-end como o AngularJS pode ser questionável. O site terá alguns CRUDs para alimentar a página principal e nessa situação usar o EF para o CRUD e Dapper para a página principal de consulta onde existe o acesso intenso me parece interessante.

Obrigado pelos esclarecimentos.

Randrade
   - 30 set 2015

Na página do GitHub do Dapper possui algumas comparações em ms (milissegundos) de queries. A página está desatualizada, mas realmente há uma grande diferença entre ambos.
A utilização do MVC você contará com o Identity, que é um excelente componente para autenticação.

Vale lembrar, que existe N modificações para fazer o projeto ficar mais performático. ViewEngine, publish em modo de Release, Rountings, gZip (HTTP compression), dentre outras. Isso tudo interfere na performance do mesmo.