As actions são models?

ola! galera do guj,

bem venho ultimamente estudando,mvc,model2,front-controller etc etc e nesse estudo me deparei com essa duvida, as actions
(encontradas em muitos frameworks por ai ) fazem parte do model? ou são controller?

agradeço qualquer ajuda

obs1: ja pesquisei bastante(inclusive aqui no guj) e não consegui tirar esta duvida ainda
obs2: to postando aqui no forum d metodologias mas ser for assunto de web algum moderador pode transferir minha pergunta se quiser! :slight_smile:

abraços

Tudo que é ação/evento é controlador, logo: controller!

abçs

ok!!

então pq na documentação do struts2 por exemplo
as actions estão como model?

[quote=bruno77sa]ola! galera do guj,

bem venho ultimamente estudando,mvc,model2,front-controller etc etc e nesse estudo me deparei com essa duvida, as actions
(encontradas em muitos frameworks por ai ) fazem parte do model? ou são controller?
[/quote]

Entenda que o modelo ( como parte do MVC) é um conjunto de classes que interagem com o modelo da aplicação, com o dominio. Em outras palavras, interagem como o framework MVC não controla.

Em traços gerais a view é o que interage com a camada superior (pode ser uma camada de UI, um Broweser, outro sistema , etc… ) , o model é o que interage com camada inferior ( persistencia, dominio, serviços)
O controlador é o que orquestra o fluxo de dados entre a view e o model e de volta para a view. Normalmente não é extensivel ou não pensamos em extendê-lo. É a parte mecanica da coisa.

O controlador dos frameworks web é um servlet. É nele que tudo acontece. E esse servlet não é alterável ( ou melhor, não precisa ser)
A view são as páginas. E o modelo ? O modelo é o que o controlador questiona quando quer tomar uma decisão ou obter dados. Logo, desse ponto de vista as actions são parte do model.
Atenção que não é porque se chamam “actions” que automaticamente pertencam ou controlador. Aliás o controlador é normalmente a parte que vc não quer estender.

Eventos são objetos de comunicação entre as 3 partes do MVC portanto não pertencem a nenhum dos 3 em particular. Eles contêm dados, mas isso não faz deles parte do model.

Actions são parte do Controller.

O servlet (se existir) é apenas um dispatcher que encontra a action correspondente e a executa, tudo isso ocorre no controller.

De uma maneira simples: Model é onde as regras de negócio ficam e actons não possuem regras de negócio.

Na minha opinião, depende muito de como sua Action está. Se você coloca lógica de negócios nela (como infelizmente muita gente faz), sua Action é um Model BEM poluído.

Se você usa sua Action pra disparar suas lógicas de negócio, então ela é um Controller (está controlando o que vai ser executado).

E se você usar qualquer framework moderno orientado a POJOs, bem provável que sua classe de Model já seja reaproveitada como Action pelo Controller (sem precisar criar Actions bobas).

[quote=pcalcado]Actions são parte do Controller.
De uma maneira simples: Model é onde as regras de negócio ficam e actons não possuem regras de negócio. [/quote]

concordo em genero numero e grau, acho que o model deve abstrair minha camada de aplicação/dominio o q achas?

agora pq frameworks como struts colocam action como modelo em sua documentação? isso deixa a coisa dificil de explicar para outros desenvolvedores aff!!

sergiousp, prefiro pensar que minha action faz parte do controller.

[quote=bruno77sa][quote=pcalcado]Actions são parte do Controller.
De uma maneira simples: Model é onde as regras de negócio ficam e actons não possuem regras de negócio. [/quote]

concordo em genero numero e grau, acho que o model deve abstrair minha camada de aplicação/dominio o q achas?

agora pq frameworks como struts colocam action como modelo em sua documentação? isso deixa a coisa dificil de explicar para outros desenvolvedores aff!!
[/quote]

Já lhe expliquei pq. Do ponto de vista do struts elas são o model. Não interessa se na sua aplicação como um todo elas são o controler, o view ou o pão com manteiga. A partir daí vc pensa o que vc quiser. Vc pode continuar não entendo pq o struts acha que são o model.

Alguem poderia colocar a parte do site que diz que as Actions são Models?!?!? Se´possivel com o link para a página?!?
Impossivel imaginar que a Apache e o pessoal do Struts colocou tamanha besteira no site…

[quote=rodrigoallemand]
Impossivel imaginar que a Apache e o pessoal do Struts colocou tamanha besteira no site…[/quote]

se colocou no site eu nao encontrei, mas no site tem referencias para books, e pdfs que mostra a action como
model veja abaixo:

nesse pdf no capitulo 3 "Core Components " logo apos uma figura que mostra a action como model tem um trecho que diz

sergiotaborda, obrigado pelas explicacoes, eu entendi o seu ponto de vista e concordo.

um abraco a todos