MVC e Arquitetura de 3 camadas

É esse o link?

http://www.questoesdeconcursos.com.br/questoes/b0d69b4a-82

É questão de concurso? É essa?

[quote=concurso]Escalabilidade e disponibilidade são vantagens da arquitetura três camadas em comparação à arquitetura cliente/ servidor.

PORQUE

Na arquitetura três camadas tanto o servidor de aplicação como o servidor de banco de dados podem ser instalados em uma ou várias máquinas.

Analisando as afirmações acima, conclui-se que

a) as duas afirmações são verdadeiras e a segunda justifica a primeira.

b) as duas afirmações são verdadeiras e a segunda não justifica a primeira.

c) a primeira afirmação é verdadeira e a segunda é falsa.

d) a primeira afirmação é falsa e a segunda é verdadeira.

e) as duas afirmações são falsas.

[/quote]

A primeira eu acho falsa…a segunda também. Mas não tenho certeza da segunda, pra mim, a escabilidade não tem haver com camadas e sim com as tecnologias que você usa e etc. Não é porque você usa 3 camadas que consegue escalar um servidor

[quote=javablue]Não, não entendi.

Acho que não tô sendo muito claro. Ou estamos usando termos diferentes, o título do tópico é sobre Arquitetura 3 camadas e MVC e isso já foi explicado aqui um zilhão de vezes. Já expliquei também que nada tem haver com Arquitetura 3 camadas com arquitetura cliente/servidor, uma é em relação ao software outro em relação a rede, hardware e etc.

Fica mais fácil você postar o link de onde tirou essa frase. De repente, a nomenclatura da sua referência sobre Arquitetura 3 camadas é outra e por isso a gente não consegue entender a sua dúvida.[/quote]

Petrobrás - 02/2010

Escalabilidade e disponibilidade são vantagens da arquitetura
três camadas em comparação à arquitetura cliente/
servidor.

PORQUE

Na arquitetura três camadas tanto o servidor de aplicação
como o servidor de banco de dados podem ser instalados
em uma ou várias máquinas.

Analisando as afirmações acima, conclui-se que
(A) as duas afirmações são verdadeiras e a segunda justifica
a primeira.
(B) as duas afirmações são verdadeiras e a segunda não
justifica a primeira.
© a primeira afirmação é verdadeira e a segunda é falsa.
(D) a primeira afirmação é falsa e a segunda é verdadeira.
(E) as duas afirmações são falsas.

Resposta: A.

[quote=javablue]É esse o link?

http://www.questoesdeconcursos.com.br/questoes/b0d69b4a-82

É questão de concurso? É essa?

[quote=concurso]Escalabilidade e disponibilidade são vantagens da arquitetura três camadas em comparação à arquitetura cliente/ servidor.

PORQUE

Na arquitetura três camadas tanto o servidor de aplicação como o servidor de banco de dados podem ser instalados em uma ou várias máquinas.

Analisando as afirmações acima, conclui-se que

a) as duas afirmações são verdadeiras e a segunda justifica a primeira.

b) as duas afirmações são verdadeiras e a segunda não justifica a primeira.

c) a primeira afirmação é verdadeira e a segunda é falsa.

d) a primeira afirmação é falsa e a segunda é verdadeira.

e) as duas afirmações são falsas.

[/quote]

A primeira eu acho falsa…a segunda também. Mas não tenho certeza da segunda, pra mim, a escabilidade não tem haver com camadas e sim com as tecnologias que você usa e etc. Não é porque você usa 3 camadas que consegue escalar um servidor[/quote]

Escalabilidade tem a ver sim, e muito. Você pode desenvolver, por exemplo, a tecnologia de banco de dados ser alterar as outras camadas. Você pode aumentar a capacidade do seu servidor, por exemplo. Isso é ser escalável. Cada camada pode ser desenvolvida, melhorada e expandida separadamente.

Você pode desenvolver em camadas, mas isso não quer dizer necessariamente que é escalável. Você precisa de outros fatores além desse. Você deve estar baseando sua nomenclatura baseado mais ou menos nisso?

http://www.dsc.ufcg.edu.br/~jacques/cursos/j2ee/html/intro/intro.htm

Se baseado nesse conceito, sim você está certo. Mas depende da referência. Foi o que eu falei, posso fazer um aplicativo desktop, com 3 camadas. E não tem nada de escalável nele.

As nossas definições eram diferentes, mas causou confusão por causa do MVC.

Acho que está havendo uma confusão aqui entre camadas físicas (tiers) e camadas lógicas (layers).

O link da Wikipedia sobre multitier architecture diz o seguinte:

Uma camada (layer) é uma divisão lógica da aplicação. Quando dividimos a aplicação em apresentação, negócios e persistência, estamos realizando a divisão em layers.

Agora podemos pegar, por exemplo, o servidor de banco de dados e colocar pra rodar em uma máquina diferente da que roda o servidor de aplicação. Aí estamos realizando a divisão em tiers.

Ambas as formas contribuem para a escalabilidade horizontal da aplicação, que implica em adicionar mais nós - ou computadores - ao sistema.

[quote=tnaires]Acho que está havendo uma confusão aqui entre camadas físicas (tiers) e camadas lógicas (layers).
[/quote]

Isso explica muita coisa. Na conversa com o ECO2004, vi que estávamos falando de coisas diferentes. Mas não sabia a nomenclatura certa.

Valeu

[quote=tnaires]Acho que está havendo uma confusão aqui entre camadas físicas (tiers) e camadas lógicas (layers).

O link da Wikipedia sobre multitier architecture diz o seguinte:

Uma camada (layer) é uma divisão lógica da aplicação. Quando dividimos a aplicação em apresentação, negócios e persistência, estamos realizando a divisão em layers.

Agora podemos pegar, por exemplo, o servidor de banco de dados e colocar pra rodar em uma máquina diferente da que roda o servidor de aplicação. Aí estamos realizando a divisão em tiers.

Ambas as formas contribuem para a escalabilidade horizontal da aplicação, que implica em adicionar mais nós - ou computadores - ao sistema.[/quote]

Obrigado por ter solucionado um problema meu…a diferença entre layer e tier.

Arquitetura cliente/servidor, então, tem apenas tier e não layer?

Creio que a arquitetura cliente servidor impõe apenas que o servidor e o cliente estão necessariamente em computadores diferentes se comunicando através de uma rede, porém a divisão em camadas (físicas ou lógicas) do servidor é algo totalmente transparente para o cliente. O servidor pode fornecer vários serviços - http, ftp, e-mail, aplicações - e cada um desses serviços pode estar rodando em um nó diferente.

Creio que a arquitetura cliente servidor impõe apenas que o servidor e o cliente estão necessariamente em computadores diferentes se comunicando através de uma rede, porém a divisão em camadas (físicas ou lógicas) do servidor é algo totalmente transparente para o cliente. O servidor pode fornecer vários serviços - http, ftp, e-mail, aplicações - e cada um desses serviços pode estar rodando em um nó diferente.[/quote]

Só tenho que discordar de uma coisa. Não necessariamente devem estar em computadores diferentes. Ex. localhost.

Verdade.

[quote=ECO2004][quote=javablue]É esse o link?

http://www.questoesdeconcursos.com.br/questoes/b0d69b4a-82

É questão de concurso? É essa?

[quote=concurso]Escalabilidade e disponibilidade são vantagens da arquitetura três camadas em comparação à arquitetura cliente/ servidor.

PORQUE

Na arquitetura três camadas tanto o servidor de aplicação como o servidor de banco de dados podem ser instalados em uma ou várias máquinas.

Analisando as afirmações acima, conclui-se que

a) as duas afirmações são verdadeiras e a segunda justifica a primeira.

b) as duas afirmações são verdadeiras e a segunda não justifica a primeira.

c) a primeira afirmação é verdadeira e a segunda é falsa.

d) a primeira afirmação é falsa e a segunda é verdadeira.

e) as duas afirmações são falsas.

[/quote]

A primeira eu acho falsa…a segunda também. Mas não tenho certeza da segunda, pra mim, a escabilidade não tem haver com camadas e sim com as tecnologias que você usa e etc. Não é porque você usa 3 camadas que consegue escalar um servidor[/quote]

Escalabilidade tem a ver sim, e muito. Você pode desenvolver, por exemplo, a tecnologia de banco de dados ser alterar as outras camadas. Você pode aumentar a capacidade do seu servidor, por exemplo. Isso é ser escalável. Cada camada pode ser desenvolvida, melhorada e expandida separadamente.[/quote]

não, você não precisa de camadas para fazer um software escalável. Você pode deixar configurável por exemplo a quantidade de threads ou outros recursos que ele irá usar tornando-o escalável, mesmo com uma arquitetura um tanto porca sem camada nenhuma… e pode fazer com camadas e inclusive focar o lado escalável da aplicação em uma determinada camada, é o recomendado, mas é possível fazer diferente…

Galera, estou com uma dúvida, qual a diferença entre arquitetura cliente/servidor e mvc ?