JavaFree.org | RubyOnBr.org

quem leva a regra de negócios??

Acompanhar quem leva a regra de negócios?? 11 posts, 4 participantes

Avatar Marllon 128 posts

E ai pessoal! tranquilos??
to escrevendo hoje porque vejo vários posts falando que a regra de negócios está no model. eu faço as minhas regras no controller, como aprendi em java. mas ql é o certo?o que é melhor? quem deve realmente ter a regra de negócios?? e para que server um controller se não para carregar isso?

queria saber as opiniões, dicas de desenvolvimento neste aspecto e experiencias de voces… =]]

valeu

[]’s

 
Ds054 Grinvon 130 posts

No Java a regra não é feita no controller não, por exemplo. Temos o Struts, ele tem o Action, que seria equivalente ao nosso controller aqui do Ruby, no action geralmente não fazemos a regra, pode-se ter uma classe exclusiva que faz a regra de negocio, faz a ponte entre o controller e o model, como se fosse uma junção. Em JEE, pode-se criar a regra em alguma camada do EJB, você com Spring pode criar também classes que façam esse papel.

No controller do rails podemos fazer uma parte da regra, o model já tem uma, que é justamente aquela validação padrão do rails.

 
Avatar Marllon 128 posts

então é melhor manter a regra de negócios no model, só que dai naum entendo o sentido do controller.. só para validações? pequenas ações? não é melhor centralizar as coisas? como por exemplo, deixar toda a regra no controller e nos models informações e métodos referentes a tratamento direto dos dados vindos e enviados ao banco… é isso que vc quer dizer?? meu conceito pode estar errado =P

valeu a resposta.. =]

 
Avatar Ronie Uliana 891 posts

Na verdade o controller deveria servir só como “cola” entre a view e o model. E também pra controlar a navegação. O ideal é que os controllers são raquíticos de tão magros :)

 
Avatar RoadHouse 65 posts

o controller faz o que seu nome diz: “controla” o fluxo dos programas e a interação entre as views e os models, na verdade as validações são feitas no model né? afinal é lá que você as define, centralizar as coisas foge do paradigma de MVC você não concorda?

 
Avatar RoadHouse 65 posts

ronie escreu o mesmo que eu e ao mesmo tempo! =:P

marllon tente pensar em termos puramente OO um model não é só um objeto que representa uma linha da tabela do BD mas sim entidades da sua aplicação que tem (ou pelo menos deveriam) ter todos os artificios para serem auto-suficientes… se voce der uma olhada no fórum do guj, tem diversas discussões sobre isso (aquela velha história de DTO´S,VO´S e todas essas sopas de letrinhas de java), eu sei, eu sei, é um fórum de java, mas OO é OO em qualquer linguagem né? e os conceitos são os mesmos, embora as implementações nem sempre sejam.

Mas o fato é seus controllers tem que ser magrinhos mesmo, ficando mais elegante desse jeito =;]

 
Avatar Marllon 128 posts

RoadHouse, concordo sim, por isso mesmo prefiria centralizar as coisas no controller, pois sempre achei que models deveriam servir apenas para transportar os dados e nada mais.. asism como vc vcs dizem que o controller serve apenas para a navegação entre as views e o restante do programa =P..
vou tentar me habituar a essa forma de trabalahr então, deixando meus controllers raquiticos, anorexicos, bulímicos e sem barriga dágua… hehehehe

o Grivon tinha falado que a regra de negócios no jee, poderia ser feita em qualquer das camadas da aplicação (seja ejb, seja o diabo que for…)
antigamente eu tinha o seguinte:

view(jsps)→action(struts)→ADO→vo(pojo)

minha regra de negócios ficava quase que toda no action, com exceção de algumas outras classes que fazia pra auxiliar com tarefas complexas ou comuns… então estive “enganado” durante todo esse tempo?

 
Avatar RoadHouse 65 posts

marllon então esse negócio de os models serem apenas uma estrutura de dados é motivo de muita discussão, a questão é que se você deixa os models apenas como “repositorios de dados” o sistema no geral vai perdendo a sua caracteristica OO né? Mas eu tenho a impressão que isso é meio que uma discussão do tipo “sexo dos anjos” que não acaba em nada muito conclusivo, além de um retunbante “depende” hehehehe

 
Avatar Marllon 128 posts

entendi.. então me tire outra duvida por favor… =]

entendi.. então me tire outra duvida por favor… =]faço assim nos meus controllers

entendi.. então me tire outra duvida por favor… =]faço assim nos meus controllersno meu método index por exemplo

entendi.. então me tire outra duvida por favor… =]faço assim nos meus controllersno meu método index por exemplo
e no meu model Tst fica assim

é isso assim mesmo??

parace tão confuso _

vou tentar fazer dessa forma…
as vezes sinto falta de uma classe “session” sabe??

 
Avatar RoadHouse 65 posts

é bem por ai mesmo… (pelo menos eu acho =;D)

mas eu não entendi o que você quis dizer sobre “session”.

eu acho realmente interessante você acompanhar algumas discussões no GUJ sobre isso, vá lá no fórum de J2EE que vez por outra rola uma discussão nesse sentido, talvez isso ajude você a clarear mais as idéias (a mim ajudou)

 
Avatar Marllon 128 posts

o session que me refiro é assim
(habitos de programação desktop)
tinhamos a view que era feira em swing, então tinhamos o controller que chamava os métodos que ficavam nas classes do servidor de aplicação que por sua vez persistiam as coisas…
eram 4 camadas: view →controler →session →hibernate

o session era o responsável pela camada de negócios.

mas as dicas e de voces são válidas.. vou tentar adaptar meus controllers e models para a forma como vcs falaram.. se tiver problemas vou pedir ajuda =P heheheheh

valeu rapaziada…

PS: bom descanso pra todos.. afinal já são wuase 18:00 =]