EJB tem Lugar no MVC?  XML
Índice dos Fóruns » Arquitetura de Sistemas
Autor Mensagem
erickfm8
GUJ Master

Membro desde: 06/10/2009 19:29:12
Mensagens: 1396
Offline


Tenho que admitir que depois do seu comentario, erickfm8, o meu conceito do Model estava errado. Mas tranquilo, nos frameworks atuais o Model então é abstraído, já que a delegação das actions da View são feitas pelo Controller do Framework, correto?



Correto,,,em casos extremamente especiais o model não esta abstraido,,,isso depende mtu. mais o pensamento esta certo.



No caso então, FieroddPJ, vc enchega os EJB's como uma camada de "interfaceamento", ou seja, de comunicação entre objetos ou recursos em locais diferentes. Mas mesmo assim, dependendo da aplicação, pode haver regra de negócio no EJB. Claro que não é nada legal, mas pode ser que seja necessário. Eu sinceramente, e me desculpem e me ajudem se eu estiver falando besteira, gosto bastante do conceito de camadas. Uma camada somente para negócio, uma somente para o Banco (Famoso e Conhecido DAO), etc.



O ejb pode ter regra de negócio sim, sem problemas,,, mais vc pode usar o padrão FACADE da uma pesquisada.......


Seria correto então guardar todos os meus EJB's em um pacote e determinar que os mesmos são uma camada apenas de comunicação de objetos em locais diferentes?



o correto e vc guardar os objetos em pacotes diferentes sim,,,

e só para resaltar um coisa,,,, o padrão DAO vc usa, quando utiliza JDBC puro ,,quanto vc usa JPA com entidade agente chama de EAO

Bacharel em Sistema de Informação
SCJP - Sun Certified Java Programmer
OCWCD - Oracle Certified Web Component Developer (Estudando..)
FieroddPJ
JavaGuru
[Avatar]

Membro desde: 20/02/2005 00:00:00
Mensagens: 231
Offline

Java wrote:
No caso então, FieroddPJ, vc enchega os EJB's como uma camada de "interfaceamento", ou seja, de comunicação entre objetos ou recursos em locais diferentes. Mas mesmo assim, dependendo da aplicação, pode haver regra de negócio no EJB. Claro que não é nada legal, mas pode ser que seja necessário. Eu sinceramente, e me desculpem e me ajudem se eu estiver falando besteira, gosto bastante do conceito de camadas. Uma camada somente para negócio, uma somente para o Banco (Famoso e Conhecido DAO), etc.

Seria correto então guardar todos os meus EJB's em um pacote e determinar que os mesmos são uma camada apenas de comunicação de objetos em locais diferentes?


Eu sugiro colocar seus EJBs em um pacote especifico, mas por organização não por causa de alguma regra ou padrão.

Sim eu vejo os EJB como forma de tornar meus objetos localizáveis e adicionar a eles todos os recursos que a tecnologia EJB oferece, mas isso não quer dizer que eu sempre crio objetos especificos para serem EJBs, muitas vezes o que eu preciso é apenas disponibilizar objetos já existentes, neste caso eu transformo esses objetos em EJBs o que faz que meu EJB tenha regras de negócio, não vejo problema nisso.

LinkedIn
[Email] [MSN]
asaudate
GUJ Master
[Avatar]

Membro desde: 01/09/2007 19:31:41
Mensagens: 1794
Localização: São Paulo
Offline

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

Alexandre Saudate
__________________________

Do not try to bend the spoon - that's impossible. Instead, only try to realize the truth: there is no spoon.

Série quickstart: Spring+Spring Security+Jersey (REST) +Hibernate (JPA) -> https://github.com/alesaudate/kickstart-springjerseyhibernate

Evite usar Axis2!!! Leia aqui para mais detalhes!

@alesaudate
Quer ler um blog especializado em web services e SOA?

erickfm8
GUJ Master

Membro desde: 06/10/2009 19:29:12
Mensagens: 1396
Offline


Ele não diz respeito quanto ao que deve ser utilizado para sua implementação,


DIZ SIM ... POIS FRAMEWORKS COM JSF, e Spring MVC implementa o MVC de acordo com suas "regras"


Ou vocês vão dizer que uma aplicação .NET não tem MVC ?


Tenho quase certeza que ninguem aqui pensa isso ;D

Bacharel em Sistema de Informação
SCJP - Sun Certified Java Programmer
OCWCD - Oracle Certified Web Component Developer (Estudando..)
asaudate
GUJ Master
[Avatar]

Membro desde: 01/09/2007 19:31:41
Mensagens: 1794
Localização: São Paulo
Offline

erickfm8 wrote:

Ele não diz respeito quanto ao que deve ser utilizado para sua implementação,


DIZ SIM ... POIS FRAMEWORKS COM JSF, e Spring MVC implementa o MVC de acordo com suas "regras"



Não implementam com suas "regras", implementam da maneira que eles acham correto. Não faça confusão entre uma implementação de MVC e o padrão em si - seria mais ou menos o mesmo que falar que se você usa injeção de dependências, você usa Spring. Usar um framework que implementa um padrão não quer dizer que você é obrigado a usar o framework para implementar o padrão.

Além disso, não se esqueça de não confundir "MVC" com "camada de apresentação". Além de tudo, MVC não está restrito à apresentação (como, aliás, o Sergio Taborda deixou implícito no blog dele). Isso quer dizer que você pode usar frameworks baseados em MVC que não sejam voltados à apresentação.

[]'s

Alexandre Saudate
__________________________

Do not try to bend the spoon - that's impossible. Instead, only try to realize the truth: there is no spoon.

Série quickstart: Spring+Spring Security+Jersey (REST) +Hibernate (JPA) -> https://github.com/alesaudate/kickstart-springjerseyhibernate

Evite usar Axis2!!! Leia aqui para mais detalhes!

@alesaudate
Quer ler um blog especializado em web services e SOA?

maior_abandonado
JWizard
[Avatar]

Membro desde: 03/09/2007 11:30:08
Mensagens: 2694
Localização: sp
Offline

asaudate wrote: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


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...

espero ter ajudado...

falando nisso, caso seu problema tenha sido resolvido, edite o seu primeiro post e coloque um [RESOLVIDO] no titulo do tópico.
erickfm8
GUJ Master

Membro desde: 06/10/2009 19:29:12
Mensagens: 1396
Offline

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?

Bacharel em Sistema de Informação
SCJP - Sun Certified Java Programmer
OCWCD - Oracle Certified Web Component Developer (Estudando..)
el_loko
JavaEvangelist

Membro desde: 30/10/2007 12:09:43
Mensagens: 357
Offline

asaudate wrote:
MVC é um padrão de projeto arquitetural


asaudate wrote:

Não implementam com suas "regras", implementam da maneira que eles acham correto. Não faça confusão entre uma implementação de MVC e o padrão em si - seria mais ou menos o mesmo que falar que se você usa injeção de dependências, você usa Spring. Usar um framework que implementa um padrão não quer dizer que você é obrigado a usar o framework para implementar o padrão.

Além disso, não se esqueça de não confundir "MVC" com "camada de apresentação". Além de tudo, MVC não está restrito à apresentação (como, aliás, o Sergio Taborda deixou implícito no blog dele). Isso quer dizer que você pode usar frameworks baseados em MVC que não sejam voltados à apresentação.

[]'s


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?
asaudate
GUJ Master
[Avatar]

Membro desde: 01/09/2007 19:31:41
Mensagens: 1794
Localização: São Paulo
Offline

erickfm8 wrote: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?


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

Alexandre Saudate
__________________________

Do not try to bend the spoon - that's impossible. Instead, only try to realize the truth: there is no spoon.

Série quickstart: Spring+Spring Security+Jersey (REST) +Hibernate (JPA) -> https://github.com/alesaudate/kickstart-springjerseyhibernate

Evite usar Axis2!!! Leia aqui para mais detalhes!

@alesaudate
Quer ler um blog especializado em web services e SOA?

asaudate
GUJ Master
[Avatar]

Membro desde: 01/09/2007 19:31:41
Mensagens: 1794
Localização: São Paulo
Offline

el_loko wrote:
asaudate wrote:
MVC é um padrão de projeto arquitetural


asaudate wrote:

Não implementam com suas "regras", implementam da maneira que eles acham correto. Não faça confusão entre uma implementação de MVC e o padrão em si - seria mais ou menos o mesmo que falar que se você usa injeção de dependências, você usa Spring. Usar um framework que implementa um padrão não quer dizer que você é obrigado a usar o framework para implementar o padrão.

Além disso, não se esqueça de não confundir "MVC" com "camada de apresentação". Além de tudo, MVC não está restrito à apresentação (como, aliás, o Sergio Taborda deixou implícito no blog dele). Isso quer dizer que você pode usar frameworks baseados em MVC que não sejam voltados à apresentação.

[]'s


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?


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

Alexandre Saudate
__________________________

Do not try to bend the spoon - that's impossible. Instead, only try to realize the truth: there is no spoon.

Série quickstart: Spring+Spring Security+Jersey (REST) +Hibernate (JPA) -> https://github.com/alesaudate/kickstart-springjerseyhibernate

Evite usar Axis2!!! Leia aqui para mais detalhes!

@alesaudate
Quer ler um blog especializado em web services e SOA?

erickfm8
GUJ Master

Membro desde: 06/10/2009 19:29:12
Mensagens: 1396
Offline


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.


Discordo

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


Model-View-Controller (MVC)

The MVC pattern's purpose is to decouple Model (or data) from the presentation of the data (View). If your application has more than one presentation, you can can replace only the view layer and reuse code for the controller and model. Similarly, if you need to change a model, the view layer remains largely unaffected. Controller handles user actions that might result in changes in the model and updates to the views. When a user requests a JSF page, the request goes to FacesServlet. FacesServlet is the front controller servlet used in JSF. Like many other Web application frameworks, JSF uses the MVC pattern to decouple the view and the model. To handle user requests centrally, the controller servlet makes changes to the model and navigates users to views.

FacesServlet is the controller element in the JSF framework which all user requests go through. FacesServlet examines user requests and calls various actions on the model using managed beans. Backing, or managed, beans are an example of the model. JSF user interface (UI) components represent the view layer. The MVC pattern helps to divide tasks among developers who have different skill sets so tasks can be carried out in parallel; that is, GUI designers can create JSF pages with rich UI components while back-end developers can create managed beans to write business-logic specific code.

referência
http://www.ibm.com/developerworks/web/library/wa-dsgnpatjsf/index.html

como vc pode ver no tutorial da IBM..


Bacharel em Sistema de Informação
SCJP - Sun Certified Java Programmer
OCWCD - Oracle Certified Web Component Developer (Estudando..)
raf4ever
GUJ Master

Membro desde: 30/01/2005 01:34:51
Mensagens: 1755
Localização: Fortaleza-Ce
Offline


Discordo
.xhtml é a view
FacesContext é o controlador
ManagendBean é/"pode" ser o model


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

This message was edited 1 time. Last update was at 11/05/2011 10:39:50


Rafael Roque
Quis custodiet ipsos custodes?
IBM Certified SOA Associate
ITIL Foundations Certified
SCEA(I)
SCWCD
SCJP
[Email] [MSN]
erickfm8
GUJ Master

Membro desde: 06/10/2009 19:29:12
Mensagens: 1396
Offline

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

Bacharel em Sistema de Informação
SCJP - Sun Certified Java Programmer
OCWCD - Oracle Certified Web Component Developer (Estudando..)
erickfm8
GUJ Master

Membro desde: 06/10/2009 19:29:12
Mensagens: 1396
Offline


Controller - The controller translates the user's interactions with the view into actions that the model will perform. In a stand-alone GUI client, user interactions could be button clicks or menu selections, whereas in an enterprise web application, they appear as GET and POST HTTP requests. Depending on the context, a controller may also select a new view -- for example, a web page of results -- to present back to the user.


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

This message was edited 3 times. Last update was at 11/05/2011 11:35:12


Bacharel em Sistema de Informação
SCJP - Sun Certified Java Programmer
OCWCD - Oracle Certified Web Component Developer (Estudando..)
raf4ever
GUJ Master

Membro desde: 30/01/2005 01:34:51
Mensagens: 1755
Localização: Fortaleza-Ce
Offline


Depending on the context, a controller may also select a new view -- for example, a web page of results -- to present back to the user.


Traduzindo isso em código,seria assim:


Correto?

Rafael Roque
Quis custodiet ipsos custodes?
IBM Certified SOA Associate
ITIL Foundations Certified
SCEA(I)
SCWCD
SCJP
[Email] [MSN]
 
Índice dos Fóruns » Arquitetura de Sistemas
Ir para:   
Powered by JForum 2.1.8 © JForum Team