Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Arquitetura da aplicação em varios modulos(sub. projetos)

Olá, tenho uma duvida em um projeto que estou trabalhando. Este projeto esta dividio em três modulos(1- Apresentação, 2 - Modelo, 3 - Serviço) cada um desses modulos possui seus arquivos "pom" e também arquivos de ".xml" como ex: applicationContext.xml".

O modulo 1 - Apresentação: tem a função de Visão, é a camada que faz a interação com o usuário(paginas de erro, paginas xhtml, e o template) pagina ;xhtml com primefaces, neste existe a camada CONTROLLER, composta pelas Actions do sistema. Elas são responsáveis pelo comportamento da aplicação da forma como o usuário vê e esta regras referentes ao fluxo de funcionalidades do sistema (controller) e a validação de campos oriundos dos formulários apresentados para o usuário. Acessará única e exclusivamente o módulo de domínio.

O Modulo 2 - Negócio : composta pelas classes que realizam o negócio do sistema. este possui classes classes Managers funcionarão como componentes do Spring dentro do sistema que poderão, a qualquer momento, serem injetados dentro de outra classe por meio das annotations do Spring.

O Modulo 3 - Service : este com classes para consumir webservices a definir ainda.

Eu gostaria de mais informações como este padrão trabalha na comunicação entre cada modulo, visto que cada um é como se fosse um projeto a parte, mais pelo que da perceber a camada Apresentação precisa da Model para existir. Outra coisa no "pom" da pasta raiz existe a indiação dos modulos assim :

<modules>        
        <module>sicel-dominio</module>
        <module>sicel-servico</module>
        <module>sicel-apresentacao</module>
</modules>

As classes manager no controller do modulo de apresntação, elas extende classe do modulo domino. Também a camada apresentação utilização com servidor o jboss, ja outros modulos (.jar)não aparece quando vou adicionar na aba server. Espero que tenha consigo trasmitir minha duvida, gostaria também de algum curso aqui no alura em que eu possa estudar este padrão. Obrigado!

Ha mais um coisa, na camada Apresentação ela faz referencia a arquivo ".xml" da camada de Negocio, Ex :

<context:annotation-config /> 
    <context:component-scan base-package="br.com">
        <context:include-filter type="regex" expression="br.com.administrativa.controller.*Action" />
        <context:include-filter type="regex" expression="br.com.administrativa.converter.*Converter" />
    </context:component-scan>

    <import resource="classpath*:arqsConfig/spring/applicationContext-dominio-01.xml" />

    <import resource="classpath*:arqsConfig/spring/applicationContext-job-06.xml" />
4 respostas

Oi Marcio,

na minha experiencia essa divisão não traz benefícios e aumenta a complexidade do seu projeto desnecessariamente. Qual é o motivo de separa as camadas em módulos?

Uma forma organizar as suas classes mais interessante seria por funcionalidade (na minha humilde opinião).

abs, Nico

Oi Nico, Então acontece que este é um projeto que ja existe dessa forma, eu quero na verdade é saber que padrão seria este ? Serviço ? Micro Serviços ? para que eu então possa me aprofundar no assunto e então talvez tentar implementar uma melhoria, inclusive na arquitetura. Não sei pq foi desenvolvido dessa fora, eu acredito que é para utilizar no modulo VIEW o jsf com primefaces, assim eu acho. Eu acho complicado tanto arquivos de configurações(.xml) no projeto, Ele gera um .jar da camada Negocio e ai no web.xml do projeto Apresentação adiciona ele(.jar Negocio).

solução!

Oi Marcio,

para mim continua ser um MVC onde as camadas se tornaram módulos desnecessariamente. Nem consigo te indicar algo pois não considero boa prática.

Existem padrões como module ou bounded context dentro do Domain Driven Design mas não tem nada a ver com seu projeto (pelo menos eu entendi isso dessa forma). Microservices também é longe disso. A primeira melhoria que vc poderia fazer seria não usar esses modules :)

Fiquei com a impressão que não ajudei muito ... sorry.

abs, Nico

Nico, foi muit util sim! Concordo com você , sobre o padrão ser um MVC, mais muito complexo. Muito obrigado!