Estou desenvolvendo um aplicativo baseado na Web, cujo objetivo principal é buscar dados do banco de dados, exibi-los na interface do usuário, receber entradas do usuário e gravá-las no banco de dados. O aplicativo não fará nenhum processamento de algoritmo de força industrial, mas receberá um número muito alto de ocorrências nos horários de pico (descrito abaixo), que serão alteradas ao longo do dia.
As camadas são as suas apresentações, negócios e dados típicos. A camada de dados é tratada pelo servidor de banco de dados. A camada de negócios conterá o componente DAL para acessar o servidor de banco de dados através do TCP. As opções que tenho para separar essas camadas em camadas são:
- As camadas de apresentação e negócios podem ser mantidas na mesma camada.
- A camada de apresentação em uma camada separada por si só e a camada de negócios em uma camada separada por si só.
No caso da opção 2, a camada de negócios será acessada pela camada de apresentação usando um serviço WCF por http ou tcp.
Não vejo nenhum processamento pesado sendo feito na camada de negócios, por isso estou me inclinando para a opção 1 acima. Eu também sinto pela mesma razão, adicionar um novo nível apenas introduzirá a latência da rede. No entanto, em termos de escalabilidade, caso eu precise aumentar ou diminuir, qual é o melhor caminho a percorrer? Este aplicativo precisará suportar até 6 milhões de usuários por hora. Haverá uma quantidade razoável de dados em cada sessão do usuário, armazenando as preferências do usuário e outros detalhes. Também usarei o cache no nível da página.