Boas
Atualmente na empresa onde trabalho tem um projecto ASP.NET MVC 5, com EF6 Code First.
Quando cheguei, a Solution só tinha um projecto, ou seja não era uma aplicacão multi camadas, mas a complexidade foi aumentando e comecei a separar por camadas:
- Criei uma "Data Layer", separando do projecto MVC os DBcontexts, Models, Mappings e classes auxiliares) para um projecto separado. Foi difícil, mas deu certo, ainda mais que uso 2 contextos, um de SQL Server e um MYSQL.
- Foi criado um Windows Service e mais uma console app de "Sockets", daí essencial ter uma camada de dados separada e referenciar só o projecto do Data Layer.
Entretanto tem mais desafios e necessidades:
- Dentro do projecto MVC tem uma Web API incorporada, que é uma parte crítica, dado que comunica com routers 4G e surgiu a necessidade urgente de separar a API num projecto independente, de forma até facilitar alterações e deploys e não ter que parar o projecto Web ou criar bugs. Assim pode-se fazer ajustes, criar novas APIS e não ter que carregar o site todo ás costas.
- A empresa quer cortar custos, junto com o pessoal aqui ser "Linux users", logo é preciso reduzir a dependência do Windows, a começar no futuro deixar de usar SQL SERVER e usar uma alternativa free como MariaDB, PostGreeSQL e afins. Atualmente usamos apenas o SQL SERVER Express, com limitações óbvias quando o projecto começar a escalar.
- Possibilidade de usar a API em Linux, de modo a reduzir custos com servidores Windows e usar Dockers e ter várias instancias para balanceamento.
Com isso e depois de alguma pesquisa, o NET CORE parece atender a isso tudo. Suporta Linux, Suporta Docker, portanto a ideia inicial era criar o projecto de API usando .Core, mas bati numa parede
- O Core tem muitas diferenças pro standart, especialmente configs e fiquei meio perdido.
- Não consigo integrar/referenciar o projecto do database layer, parece que só dá para usar EF CORE, tudo que encontro na web de guias e tutoriais e sempre com EF CORE.
- Migrar a database layer para EF CORE vai dar imensa reprogramação, especialmente os mappings que é uma estrutura BEM DIFERENTE. Um dos motivos de abrir a thread antes de perder horas nisso e depois não dar.
- Como fica o Windows Service e principalmente, o projecto Web? Dá para integrar o EF CORE ou terei que migrar para MVC CORE?
- O Windows Service também seria no futuro migrar para .CORE com suporte a docker, para igualmente rodar em Linux, no fundo o único servidor windows seria para o projecto MVC WEB.
No fundo seria tentar criar uma estrutura na solution do tipo
- WEB
- API
- DAL
- Windows Services e/ou docker services
- Helpers (não existe ainda)
- Unit Tests/console apps de testes
Que ajuda/dicas me dão? ou é melhor pensar em refazer tudo do zero já 100% CORE a longo prazo e migrar as APIS para um projecto Web Api padrão a curto prazo?
Atualmente na empresa onde trabalho tem um projecto ASP.NET MVC 5, com EF6 Code First.
Quando cheguei, a Solution só tinha um projecto, ou seja não era uma aplicacão multi camadas, mas a complexidade foi aumentando e comecei a separar por camadas:
- Criei uma "Data Layer", separando do projecto MVC os DBcontexts, Models, Mappings e classes auxiliares) para um projecto separado. Foi difícil, mas deu certo, ainda mais que uso 2 contextos, um de SQL Server e um MYSQL.
- Foi criado um Windows Service e mais uma console app de "Sockets", daí essencial ter uma camada de dados separada e referenciar só o projecto do Data Layer.
Entretanto tem mais desafios e necessidades:
- Dentro do projecto MVC tem uma Web API incorporada, que é uma parte crítica, dado que comunica com routers 4G e surgiu a necessidade urgente de separar a API num projecto independente, de forma até facilitar alterações e deploys e não ter que parar o projecto Web ou criar bugs. Assim pode-se fazer ajustes, criar novas APIS e não ter que carregar o site todo ás costas.
- A empresa quer cortar custos, junto com o pessoal aqui ser "Linux users", logo é preciso reduzir a dependência do Windows, a começar no futuro deixar de usar SQL SERVER e usar uma alternativa free como MariaDB, PostGreeSQL e afins. Atualmente usamos apenas o SQL SERVER Express, com limitações óbvias quando o projecto começar a escalar.
- Possibilidade de usar a API em Linux, de modo a reduzir custos com servidores Windows e usar Dockers e ter várias instancias para balanceamento.
Com isso e depois de alguma pesquisa, o NET CORE parece atender a isso tudo. Suporta Linux, Suporta Docker, portanto a ideia inicial era criar o projecto de API usando .Core, mas bati numa parede
- O Core tem muitas diferenças pro standart, especialmente configs e fiquei meio perdido.
- Não consigo integrar/referenciar o projecto do database layer, parece que só dá para usar EF CORE, tudo que encontro na web de guias e tutoriais e sempre com EF CORE.
- Migrar a database layer para EF CORE vai dar imensa reprogramação, especialmente os mappings que é uma estrutura BEM DIFERENTE. Um dos motivos de abrir a thread antes de perder horas nisso e depois não dar.
- Como fica o Windows Service e principalmente, o projecto Web? Dá para integrar o EF CORE ou terei que migrar para MVC CORE?
- O Windows Service também seria no futuro migrar para .CORE com suporte a docker, para igualmente rodar em Linux, no fundo o único servidor windows seria para o projecto MVC WEB.
No fundo seria tentar criar uma estrutura na solution do tipo
- WEB
- API
- DAL
- Windows Services e/ou docker services
- Helpers (não existe ainda)
- Unit Tests/console apps de testes
Que ajuda/dicas me dão? ou é melhor pensar em refazer tudo do zero já 100% CORE a longo prazo e migrar as APIS para um projecto Web Api padrão a curto prazo?
Última edição: