1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

ASP.NET MVC standart e migração para NET CORE

Discussão em 'Web Development' iniciada por JPgod, 7 de Novembro de 2018. (Respostas: 2; Visualizações: 154)

  1. JPgod

    JPgod Moderador
    Staff Member

    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?
     
    Última edição: 12 de Novembro de 2018 às 18:34
  2. d@niel

    [email protected] Power Member

    Boas.

    Normalmente o problema pode é ser o uso de componentes de terceiros, que não tenham suporte para .Net Core (como falas de uma DLL de um banco).

    Se não é esse o caso ou se esses componentes têm uma versão compatível com .Net Core, era avançar com um projecto de teste onde todas essas peças (Web, API e Serviços [Daemons]) estejam incluídas.

    Com isto, é validar se conseguem ter uma independência total do Windows e do SQL Server, conseguindo alojar tudo em Linux (com ou sem Docker). O "WindowsService" em Linux, seria uma Console App em .Net Core, com umas configurações devem chegar ao mesmo comportamento de um Windows Service (vê se isto ajuda).

    Eu só avançaria num trabalho desses, conseguindo validar que as coisas funcionam mesmo, senão ficam com a coisa a meio.

    A nível de fases, depende de como as coisas estão feitas. O projecto Web só comunica com a API ou também vai ao DataLayer (por intermédio de referência de projectos)? Se é só com a API, então há potencial para fasear o trabalho.


    Em jeito de resumo: O único problema que vejo, é mesmo a DLL do banco... que pode obrigar a manter Windows só para o Serviço.
     
  3. JPgod

    JPgod Moderador
    Staff Member

    A "DLL do banco" é na verdade o projecto de data layer, que é o projecto onde está o contexto de base de dados (2 contextos, um sql server e um mysql) models, migrations e mappings.

    Numa fase inicial vou optar por Web Api 2 normal e futuramente migrar tudo para .NET CORE.

    Penso que de momento não tenho problemas de componentes DLL de terceiros, porque ou uso o que está no framework ou via NUGET.

    A ideia é o projecto Web só comunicar com o datalayer, a API é para acesso externo (comunicação M2M entre routers e o sistema)
     

Partilhar esta Página