Javafree
Página Inicial do Fórum > Design Patterns, UML e Arquitetura

Dúvida em relação ao MVC



Criar novo tópico   Responder tópico


  1. dicarte
    Posts:447


    Comment Arrow

    Publicado em: 14/03/2013 14:08:49

    Boa tarde, estou em dúvida em relação a seguinte estrutura

    Tenho 4 projetos Maven, sendo 1 projeto Maven e 3 módulos Maven

    Parent - Projeto Maven
    VIEW - Módulo Maven
    CONTROLLER - Módulo Maven
    MODEL - Módulo Maven

    A minha dúvida é em relação ao controller

    O que deveria vir nesse projeto? Minhas fachadas? Nesse projeto deveriam vir apenas as fachadas?

    O meu projeto é JSE, executado através do jar, nesse caso pelo view, que terá a classe main.

    No projeto Model, viria minhas RN, Entidades e DAO
    No projeto Web, viria minha classe main e as iterações com o usuário.
    No projeto Controller, viria minhas fachadas que apenas redirecionaria para meu Model.

    Estou em dúvida se esse projeto Controller, é realmente necessário, já que em alguns projetos que trabalhei percebi que a própria fachada seria o EJB e o RN.

    Alguém poderia me esclarecer?

    _________________

    Eduardo Dicarte
    Graduando Engenharia Mecânica
    Gerente de Configuração Java



  1. ms27817
    Posts:1052


    Comment Arrow

    Publicado em: 16/03/2013 16:43:24

    Boa questão. Estávamos discutindo isso na empresa nessa semana.
    Aparentemente, parece que as fachadas são apenas uma casca fina para acessar o Model, mas vai além.
    Essa camada extra ajuda a desacoplar sua solução da tecnologia usada. Se você usa ManagedBeans ou Servlets, ao invés de deixar a regra neles, você cria um service, que irá acessar suas DAOS e onde serão definidas as regras de negócio.
    Se um dia mudar de JSF para Struts ou para Swing, os services continuam lá, provendo as funcionalidades da aplicação. Afinal, o certo é poder trocar a tecnologia da View com o mínimo de esforço possível.

    _________________

    Marcelo Senaga
    Papel: Moderador
    Scala Developer

    http://www.devmedia.com.br/senaga



  1. dicarte
    Posts:447


    Comment Arrow

    Publicado em: 16/03/2013 16:57:04

    A minha aplicacao é local, como um serviço do windows ou linux, um bath na verdade, mas estou adiantando deixando a possibilidade de transformar a aplicação em JEE futuramente, com JSF, etc.

    Services seriam webservices? Ou seria como alguns serviços como os que são executados pelo JBOSS, acho que a extensão seria *.ser


    _________________

    Eduardo Dicarte
    Graduando Engenharia Mecânica
    Gerente de Configuração Java



  1. ms27817
    Posts:1052


    Comment Arrow

    Publicado em: 16/03/2013 17:03:19

    Não tem a ver com uma tecnologia especifica, como web services, é mais conceitual. Tem a ver com a interface, contrato.
    Por exemplo, na empresa definimos um projeto onde colocamos os serviços que o sistema provê. Um desses serviços é o bloqueio de cartão de crédito.
    Criamos um BloqueioCartaoService ( a interface e a implementação ). A implementação é uma simples classe Java, que não está amarrada a tecnologia alguma. Podemos então exportar esse serviço via WebServices, Rest, acessar de um ManagedBean, Servlet, expor como um serviço RMI, etc.
    Não importa a tecnologia, ela é apenas uma "casca" para o serviço.


    _________________

    Marcelo Senaga
    Papel: Moderador
    Scala Developer

    http://www.devmedia.com.br/senaga



  1. dicarte
    Posts:447


    Comment Arrow

    Publicado em: 16/03/2013 19:39:25

    [quote="ms27817"]Não tem a ver com uma tecnologia especifica, como web services, é mais conceitual. Tem a ver com a interface, contrato.
    Por exemplo, na empresa definimos um projeto onde colocamos os serviços que o sistema provê. Um desses serviços é o bloqueio de cartão de crédito.
    Criamos um BloqueioCartaoService ( a interface e a implementação ). A implementação é uma simples classe Java, que não está amarrada a tecnologia alguma. Podemos então exportar esse serviço via WebServices, Rest, acessar de um ManagedBean, Servlet, expor como um serviço RMI, etc.
    Não importa a tecnologia, ela é apenas uma "casca" para o serviço.



    Entendi.
    _________________

    Eduardo Dicarte
    Graduando Engenharia Mecânica
    Gerente de Configuração Java



  1. ms27817
    Posts:1052


    Comment Arrow

    Publicado em: 17/03/2013 06:44:36

    Seria interessante saber como outras pessoas resolvem essa questão. Se alguém quiser detalhar o modo como resolve a questão das camadas dentro do sistema, seria uma boa.

    Uma série de artigos muito bons sobre isso é:

    www.javabuilding.com/architecture/introduction.html
    http://sergiotaborda.javabuilding.com/2011/05/mvc-onde-e-como/
    http://sergiotaborda.javabuilding.com/2009/11/mvc-e-camadas/
    http://sergiotaborda.javabuilding.com/2012/04/espelho-meu-qual-e-melhor-view-que-eu/
    http://sergiotaborda.javabuilding.com/2012/02/arquitetura-ecb/
    http://sergiotaborda.javabuilding.com/2013/02/pacotes-camadas-e-modulos/

    _________________

    Marcelo Senaga
    Papel: Moderador
    Scala Developer

    http://www.devmedia.com.br/senaga



  1. davi.costa
    Posts:2520


    Comment Arrow

    Publicado em: 20/03/2013 07:12:00

    Web classe main?
    projetos web não precisam de classe min.
    Explica melhor se seu projeto é web ou não que fica mais fácil darmos um norte.

    abcs
    _________________

    att Davi Costa
    Analista/Arquiteto Java
    Especialista em Engenharia de Sistemas
    ScrumMaster Certified



  1. dicarte
    Posts:447


    Comment Arrow

    Publicado em: 04/04/2013 10:40:24

    [quote="davi.costa"]Web classe main?
    projetos web não precisam de classe min.
    Explica melhor se seu projeto é web ou não que fica mais fácil darmos um norte.

    abcs



    Meu projeto não é web, fiz uma alteração na arquitetura, deixando apenas EAR + EJB em um EAR e o VIEW ficando a parte, fora do conteiner, minha estrutura ficou dessa forma:

    PARENT
    |
    |______EAR
    |
    |______EJB


    VIEW

    Meus projetos parent e view ficam dentro do mesmo diretorio, porém meu projeto view poderá ser executado em qualquer cliente e o EAR ficaria no servidor.

    _________________

    Eduardo Dicarte
    Graduando Engenharia Mecânica
    Gerente de Configuração Java



  1. romarcio
    Posts:421


    Comment Arrow

    Publicado em: 04/04/2013 18:45:41

    As fachadas fazem parte do Model e não do Controller. Ser você tem fachadas, seu Controller vai acessar o Model através delas.


    _________________

    http://www.mballem.com/
    Desvendando o MongoDB, do Mongo Shell ao Java Driver - http://bit.ly/1HL8Rya



  1. Relacionados