EJB tem Lugar no MVC?

[quote=asaudate]Caros,

MVC é um padrão de projeto arquitetural. Ele não diz respeito quanto ao que deve ser utilizado para sua implementação, apenas dá a idéia do que deve ser feito. Não cabe dizer que EJB tem ou não tem lugar no MVC porque, sendo MVC apenas um modelo abstrato, ele não proíbe ou reforça qualquer tecnologia - aliás, isso é válido inclusive para a linguagem de programação em si. Ou vocês vão dizer que uma aplicação .NET não tem MVC ?

No entanto, é óbvio que - para tudo que envolve TI - deve haver bom senso. Não é uma decisão bem fundamentada querer usar EJB num sistema de padaria (a não ser que seja uma padaria imensa). Assim como não dá pra falar que um revendedor online, tipo um submarino, deve usar somente servlets e jsp (e, se bobear, jdbc pra acessar a base de dados).

Pra finalizar… nem me aventuro a entrar na discussão Spring x EJB. Isso porque cada um tem vantagens e desvantagens - eu quase sempre utilizo EJB. Em alguns casos, utilizo Spring e, em casos mais raros, os dois em conjunto (pois é, eles não são mutuamente excludentes). O que não dá é ser xiita e fechar a cabeça e falar “eu só uso Spring porque EJB é bobo, chato e cabeça de melão”.

[]'s

P.S: Ri muuuito com a frase “EJB é uma solução procurando desesperadamente por um problema”. =D[/quote]

concordo com tudo isso que o asaude falou, apenas complementando, o EJB não está diretamente relacionado ao “conceito de camadas” mesmo, mas ele visa facilitar o ato de evitar alguns problemas ou dificuldades que você pode ter especialmente no modelo, sim. Por exemplo, é nessa camada que você pode ter processamentos mais pesados, para contornar isso você pode ter pools de instâncias dessas regras de negócio pesadas, balanceamento de carga, pode processa isso de forma assíncrona com a regra de negócio em uma fila JMS por exemplo, de forma simplificada. Além disso você pode ter outras facilidades sim como injeção de dependência ou JTA.

Apenas para considerar, o EJB não está diretamente ligado ao conceito de “camadas”, mas honestamente não vejo muita lógica em usa-lo fora do modelo…

asaudate , tudo bem?

em um sistema que use EJB e JSF , considerando o MVC

o que vc consideraria como parte de view , controller , model?

eu sei que isso varia, mais o que VC , consideraria?

Sempre tive uma dúvida quanto ao MVC e a palavra “arquitetura”. Já vi algumas discussões sobre o MVC ser ou não um pattern arquiteturial.
Se o MVC é aplicado em apenas 1 camada, como ele pode ser considerado um padrão arquiteturial?

[quote=erickfm8]asaudate , tudo bem?

em um sistema que use EJB e JSF , considerando o MVC

o que vc consideraria como parte de view , controller , model?

eu sei que isso varia, mais o que VC , consideraria?[/quote]

Tipicamente, em sistemas usando JSF, fica lógico que as telas são View, Managed Beans são controllers e EJB’s são models. O caso é que isso é transiente, de maneira que essa mesma camada de EJB’s pode, por sua vez, ser repartida de novo, como se fosse um novo MVC. Repare que, dentro de um modelo MVC, a View não está restrita ao que o usuário final vê, mas sim, à maneira como determinada camada se apresenta. Assim, um EJB de fachada pode ser considerado View? Sim, pode! E dentro da camada de modelo, dentro do servidor, eu posso ter MVC de novo, então? Sim, posso.

Ou seja, você não deve se ater ao framework e depois ao padrão, você deve entender o que é o padrão, pra que serve e, então, você vai entender porque um framework (nesse caso, JSF) implementa esse padrão.

[]'s

[quote=el_loko][quote=asaudate]
MVC é um padrão de projeto arquitetural
[/quote]

Sempre tive uma dúvida quanto ao MVC e a palavra “arquitetura”. Já vi algumas discussões sobre o MVC ser ou não um pattern arquiteturial.
Se o MVC é aplicado em apenas 1 camada, como ele pode ser considerado um padrão arquiteturial?[/quote]

Porque, de uma forma ou de outra, ele rege como uma camada se comporta. Dessa maneira, ele não vai estar no nível de relacionamento de um bean pra outro, mas sim, de vários beans. Além disso, o MVC não se preocupa em resolver um problema específico, mas sim, prevenir problemas de alto encapsulamento, baixa coesão, etc; que são, por sua vez, preocupações de nível arquitetural.

[]'s

Discordo

.xhtml é a view
FacesContext é o controlador
ManagendBean é/“pode” ser o model

referência

como vc pode ver no tutorial da IBM…

Tbm concordo com a definição do asaudate.
ManagedBean é pra receber dados do .xhtml e invocar o model,então atua como controller.

mais temos fontes segura no site da IBM que afirma que o controller nao é o ManagendBean

referência : http://java.sun.com/blueprints/patterns/MVC-detailed.html

Traduzindo isso em código,seria assim:

public class UmManagedBean{

  public String salvar(){
    salva();
return "salvou";
}
}

Correto? :lol:

este ultimo não esta se referindo ao JSF, esta se a Servelt puro.

Mesmo assim no meu ponto de vista ao falar

“they appear as GET and POST HTTP requests”

isto pra mim é feito internamente.

Ja no JSF, os metodos salvar,(“aqui por exemplo vc pode verificar se o cliente precisa ter algum requisito para ser salvo”), isto é logica de negócio é o model

[quote=erickfm8]
este ultimo não esta se referindo ao JSF, esta se a Servelt puro.

Mesmo assim no meu ponto de vista ao falar

“they appear as GET and POST HTTP requests”

isto pra mim é feito internamente.

Ja no JSF, os metodos salvar,(“aqui por exemplo vc pode verificar se o cliente precisa ter algum requisito para ser salvo”), isto é logica de negócio é o model[/quote]

Por isso eu digo e repito pra nao esquecer a motivacao do pattern. Uma vez que voce diz q os managed beans sao model, entao vc esta amarrando-os ao JSF. Dessa maneira, vc nao consegue porta-los para outras tecnologias, talvez outras linguagens. Assim, da maneira como voce esta descrevendo, MVC perderia sua motivacao.

[]'s

rsrsrs estou falando isso com base nos artigos lidos, passei referência pra vc…

Então vc discorda com o tutorial da IBM

asaudate acho que algum lugar vc mesmo citou que MVC cada framework implementa de uma forma diferente certo?

então é obvio que se vc mudar de JSF para outra framework que implementa MVC de outra maneira, a implementação vai mudar…

Sim, a implementacao muda, mas o conceito deve permanecer. O struts tem o action controller, o jsf tem tem o facesservlet, o swing tem os listeners… o caso eh q o modelo deve permanecer sempre o mesmo, independente de qual desses eu vou usar. (Alias, no caso do jsf, se os managed beans fossem modelo, seria o modelo mais orientado a string q jah vi =p)

[]'s

referência
http://www2.dbd.puc-rio.br/pergamum/tesesabertas/0410823_06_cap_04.pdf

Você concorda que os controladores desses framework ja vem pronto? no caso do JSF o FacesContext?
Não entendi porque orientado a String, se agente trabalha com objetos dentro dele, isso que vc falou depende do jeito que cada um programa =S…
Tem muita lógica de négocio no MB, e o model contem a lógica de negócio!..

Eu disse que eh orientado a string porque obriga o MB a retornar uma string, para que ele possa achar a pagina. Note que isso, alias, eh um comportamento tipico de um controlador.

Quanto a referencia que voce postou, eu jah conhecia. O caso eh que o que esses frameworks trazem eh uma casca do controller. O comportamento especifico deve ser definido pelo programador, atraves dos managed beans.

Note que o mvc nao delimita que apenas uma classe deve ser usada como controller (como eu falei ha uns posts atras).

[]'s

P.S: A referencia q voce postou diz “usualmente”, nao diz sempre.

"Eu disse que eh orientado a string porque obriga o MB a retornar uma string, para que ele possa achar a pagina. Note que isso, alias, eh um comportamento tipico de um controlador. "

ele reforna uma string para o FacesServlet e o FacesServlet que faz este redirecionamento.

"A referencia q voce postou diz “usualmente”, nao diz sempre. "

sim, por isso que não estou falando de todos os framework até porque não conheço, estou falando e especifico do JSF, que este sim tras o controlador pronto.

View manda um requisição ,FacesServlet (Controlador - internamente passa para o modelo) ,

Para um framework ser considerado MVC, ele nao pode afetar a maneira como o modelo eh feito. Senao, ele fere o proprio conceito de MVC.

[]'s

"Para um framework ser considerado MVC, ele nao pode afetar a maneira como o modelo eh feito. Senao, ele fere o proprio conceito de MVC. "

Concordo ;D

Então por que o JSF obriga ao programador criar managedbeans especificos que irão retornar strings para controle de navegação ?

Muito esquisito, não me entra na cabeça ManagedBeans como Model, nem faz muito sentido.