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

Arquitetura de projetos DOT.NET que correspondam ao Java EE

Boa dia. Eu sou novo na plataforma DOT.NET e estou buscando conhecer melhor as arquiteturas existentes e consolidadas para este ecossistema. Eu já trabalho com Java EE faz alguns anos e estou atrás das tecnologias e arquiteturas DOT.NET que correspondem aos frameworks que já utilizo no Java.

Atualmente eu criei um projeto em Java que segue uma arquitetura tradicional Java EE possuindo três projetos: um projeto de apresentação, outro de integração e, por fim, um de negócios. Eu utilizo nos projetos o JSF com Primefaces, CDI, EJB, JPA e JAX-RS para a integração entre os projetos.

Eu gostaria de saber quais seriam as arquiteturas utilizadas no DOT.NET. Quais são as mais utilizadas pelo mercado e se elas já vem configuradas e prontas para uso na IDE Visual Studio.

Eu pretendo utiliza primordialmente o ASP.NET MVC e Entity Framework. Mas tenho interesse em saber quais são as boas práticas no DOT.NET e quais suas implementação para os respectivos frameworks do Java. Desde já agradeço.

6 respostas

Olá, Leonardo

Acho que uma resposta decente à sua pergunta renderia um artigo enorme, então acho melhor linkar aqui um belo artigo do Macoratti, que além de explicar as diferenças, também fornece algumas tabelas de comparação bem úteis:

http://www.macoratti.net/net_java.htm

Boa tarde. Eu agradeço pela resposta. Estou dando uma olhada aqui nos frameworks do DOT.NET. Mas como é estruturado um projeto de grande porte hoje em DOT.NET? Existe alguma estrutura comum ou difundida? Eu gostaria de saber o que está sendo utilizado hoje em dia.

solução!

Oi Leonardo

Um grande projeto ASP.NET precisa ter uma arquitetura que favoreça alguns princípios:

  • Escalabilidade
  • Princípios SOLID
  • Separação de responsabilidade
  • Testes de unidade
  • Cobertura de testes
  • Acesso a dados desacoplado dos controllers

Na prática, pelo que tenho visto, os projetos grandes com MVC por aí acabam tendo:

  • Uma solução com vários projetos (solução com 20, 30 projetos)
  • Múltiplos projetos do tipo ASP.NET MVC, um para cada área da aplicação. Por exemplo: um projeto só para os admins, um projeto para usuário comum, um projeto para geração de relatórios, etc.
  • Múltiplos projetos WEB API Rest, por exemplo: Um projeto WEB API Rest para tratar requisições de admins, outro para requisições de usuários comuns, outro para requisições de geração de relatórios, outro para integração de dados (importação/exportação de dados de e para dentro da base de dados), etc.
  • Um ou mais projetos para Web Workers que precisam processar requisições de fila (seja ela MSMQ - Microsoft Message Queue, Storage Queue da Azure ou SQS - Simple Queue Service da Amazon)
  • Vários projetos do tipo Class Library atendendo necessidade específicas de regras de negócio, entidades do domínio, etc.
  • Vários projetos de teste de unidade, sendo um para cada projeto testável da solução: a tecnologia pode ser NUnit, xUnit ou MSTest.
  • Um ou mais projetos com as entidades do modelos do ORM (Entity Framework) se conectando com banco de dados relacional SQL Server
  • Um ou mais projetos com classes DAO para o acesso aos dados via Entity Framework
  • Um ou mais projetos para acesso a dados de banco de dados não-relacional de documentos: MongoDB, MariaDB, etc.

Se você utilizar o template padrão do ASP.NET a partir do Visual Studio, ele pode parecer muito simples para um projeto grande. Mas se quiser um template mais completo, eu indico o ASP.NET Core Boilerplate, que foi criado pensando em vários dos itens que eu listei acima:

https://marketplace.visualstudio.com/items?itemName=RehanSaeed.ASPNETMVCBoilerplate

Essa estrutura de projetos grandes é uma grande duvida minha também, é algo que não tem curso de C# na Alura fiz um projeto grande com ASP.NET e ele ficou muito confuso pois utilizei apenas um projeto MVC.

Podiam criar um curso falando dessa estruturação em ASP.NET.

Eu vou ver o ASP.NET Core Boilerplate. Eu gostaria de um curso neste formato também, tanto para o Java EE ou Spring, como também para o PHP usando Zend, Symbony ou o Laravel de preferencia.

Olá, Leonardo Cherubini e Leonardo Duarte,

Entendo a preocupação de vocês. Acredito que o ideal é um projeto começar pequeno, e só então ir aumentando "organicamente" em complexidade. Mas esse crescimento vai além do template simples que o Visual Studio fornece, e botar isso em prática exige conhecimento sobre boas práticas de arquitetura, que é justamente onde muitos desenvolvedores acabam se enrolando. Para isso existem esses "atalhos", como o ASP.NET Boilerplate para pular etapas e estabelecer desde o início do projeto uma estrutura modular, desacoplada e escalável.

Estamos elaborando uma lista de novos cursos .NET, então vou propor aqui para o time de instrutores um curso novo sobre arquitetura de aplicações ASP.NET. Mas é necessário um novo curso que foque muito mais em arquitetura do que na linguagem de programação.

De qualquer forma, esse assunto é interessantíssimo, então muito obrigado pela participação! Leonardo Cherubini, veja se o ASP.NET Boilerplate é uma boa opção. Qualquer coisa você pode abrir um outro chamado aqui no fórum para falarmos sobre o Boilerplate.