none
Organização do projetos em uma mesma solution RRS feed

  • Pergunta

  • Bom dia pessoal! Estou começando com MVC e gostaria de uns links e referencias de estudo sobre o seguinte tema, organização de projetos na solution.

    É que estou querendo desenvolver uma aplicação modular. Um portal web onde os futuros possíveis clientes adquiram acesso a determinados módulos, podendo contratar, apenas Rh, Financeiro, estoque ou frente de loja.

    Pensei em criar uma Solution com um portal principal, tipo um dashboard. E os outros em diferentes projetos, até porque cada parte poderia ser desenvolvida por uma pessoa diferente. (tudo imaginação e vontade por enquanto)...

    Mas depois como vou juntar isso? Porque como faria para acessar as views de outro projeto a partir do meu projeto principal?

    Será que terei que jogar todos os controllers e views dentro do projeto principal?

    Então se puderem me dar uma alguma referencia... fico na dúvida sobre como organizar a parte de acesso a dados... nunca usei class librarys por exemplo...

    Podem me ajudar?

    terça-feira, 4 de julho de 2017 10:59

Respostas

  • Galerinha... pesquisei... encontrei um ótimo tutorial (em inglês) que resolve se baseando na idéia de area. Utilizando area fica relativamente fácil integrar sistemas modulares, desenvolvidos em uma única solution, porém requer:

    1-alterar a rotas adicionando parametro de namespace e

    2-uma pequena  gambiarra na área que depois de criada tem apenas o arquivo Registration salvo para usar depois e a própria sub-pasta da deletada. Sendo que o projeto (o modulo) é criado na pasta area da solução principal.

    usei um tradutor automatico pra traduzir... adicionei as fotos e coloco o tutorial aqui para quem interessar.

    --------------------------------------------------------------------------------------------------------------------------

    Qual é o truque para resolver isso?

    Uma solução para o problema acima é desenvolver módulos de aplicativos de forma independente, sem qualquer dependência direta entre eles e também no código principal do aplicativo. Os desenvolvedores sempre devem optar por uma solução modular, em que os módulos maiores são facilmente mantidos ao longo do tempo, separadamente. Uma vez que cada módulo está pronto para integração, eles podem ser conectados ao aplicativo principal com pouco ou nenhum ajuste do mesmo.

    Então, em suma, a estrutura de um aplicativo complexo asp.net MVC pode ser facilmente mantida usando áreas. O conceito disso é permitir-nos quebrar um grande aplicativo complexo em várias pequenas seções chamadas áreas.

    Essas áreas podem ter seu próprio conjunto de:

     1. Modelos

     2. Visualizações

     3. Controladores

     4. Rotas

    Neste artigo, vamos desenvolver um aplicativo ASP.NET MVC que contenha módulos de acoplamento livre (independentes para a aplicação principal), o que vamos adicionar a aplicação principal.

    Benefícios desta abordagem

    Esta abordagem é extremamente útil para o desenvolvimento de produtos. Utilizando esta abordagem, cada módulo pode ser desenvolvido e implantado para o produto separadamente. Isso ajuda na construção de diferentes versões do produto, como versões básicas, profissionais, premium e empresariais. Também permite que os desenvolvedores de produtos criem o isolamento necessário para

    Ü Crie instaladores separados com os recursos necessários para cada versão diferente

    Ü Uma configuração mestre que só pode instalar recursos definidos conforme a chave de licença usada durante a instalação, ou

    Ü Algumas outras configurações que requerem a técnica de separação modular.

    Demo para uma aplicação modular

    Aqui vamos criar uma aplicação web que contém os seguintes módulos:

    · Venda

    · Compra

    · Manutenção

    · Marketing

    · Estoque

    · Importação

    · Exportação

    Passo 1:

    Abra o Visual Studio 2015 e crie um projeto ASP.NET MVC da seguinte maneira. Dê-lhe um nome significativo (no meu caso eu usei o MVCPluggableDemo). Vazio.

    

    Passo 2:

    Clique com o botão direito do mouse na pasta 'Controladores' e selecione "Adicionar -> Controlador". Nomeie HomeController e selecione "Empty MVC Controller" para o modelo:


    Clique com o botão direito do mouse no método de índice do controlador e selecione "Adicionar vista". Usando padrões, crie a exibição Índice para HomeController para formar a página de destino para o aplicativo:


    Etapa 3:

    Agora, edite a seção destacada em _Layout.cshtml (na pasta Views \ Shared) para criar itens de menu apontando para os módulos desejados:


    Passo 4:

    Execute o aplicativo e você obterá a saída da seguinte maneira:


    Agora, vamos nos concentrar na criação de módulos separados para a nossa aplicação e, em seguida, conectá-los ao principal.

    Passo 5:

    Clique com o botão direito do mouse no título do projeto principal do aplicativo (como em nosso caso MVCPluggableDemo) no Solution Explorer e selecione "Add-> Area" no menu de contexto. Isso criará uma estrutura de pasta básica para a estrutura da Área. Especifique "Venda" como Nome da área e clique em "Adicionar".


    Então, temos uma estrutura de solução de pasta que se parece com:


    Passo 6:

    Faça um backup do arquivo SaleAreaRegistration.cs. Esse arquivo será necessário mais tarde quando adicionarmos o módulo de venda à solução como um projeto separado.

    Agora remova a subpasta Sale da pasta Areas, mantendo a pasta Areas no lugar.

    Em seguida, adicione o novo módulo plugável para "Sale", clique com o botão direito do mouse na solução e escolha "Add-> New Project".

    · Selecione Empty ASP.NET MVC Application

    · Nome para o projeto 'Sale'

    · Defina a localização como "... \ MVCPluggableDemo \ MVCPluggableDemo \ Areas \"

    · Um novo projeto deve ser criado na pasta Áreas (anteriormente criado).


    Após este passo, sua solução deve parecer a seguinte:


    À medida que salvamos o novo projeto Venda sob a pasta Áreas, ele aparece como uma pasta oculta sob a pasta MVConfiguração / Dúvidas no Explorador de Soluções:


    Passo 7:

    Ajuste o arquivo Routeconfig.cs do MVCPluggableDemo para adicionar corretamente a sobrecarga de espaço de nome correto ao método routes.MapRoute ():

    Também usaremos a outra versão sobrecarregada do método routes.MapRoute () que leva o namespace do Controlador.


    Passo 8:

    Defina o diretório de saída do projeto Sale para .. \ .. \ bin \ para que ele seja compilado. As DLLs são colocadas no diretório bin da aplicação MVCPluggableDemo:


    As configurações relacionadas às cadeias de conexão, autenticação, associação, gerenciador de funções, perfil e estado da sessão serão colocadas na web.config do diretório raiz. Então, remova todas essas seções da web.config da venda.

    Passo 9:

    · Crie o controlador Sale no projeto Sale.

    · Crie uma exibição de índice e coloque o conteúdo "Bem-vindo ao módulo de vendas" em seu cabeçalho.

    Passo 10:

    Agora, adicione o arquivo SaleAreaRegistration.cs (arquivo de backup da etapa 6) ao diretório raiz do projeto Sale e altere seu namespace para MVCPluggableDemo; Use a versão sobrecarregada do método context.MapRoute () que aceita o namespace do controlador para usar da seguinte maneira:


    Passo 11:

    Agora, crie a solução e verifique a pasta MVCPluggableDemo \ bin e você terá as DLLs compiladas para o módulo Sale:


    Passo 12:

    Agora execute o aplicativo! Se você seguiu todas as etapas corretamente, ele estará funcionando como esperado.

    Você pode seguir os mesmos passos e criar outros módulos maiores separadamente e conectá-los ao seu aplicativo. Não é simples, mas um recurso tão poderoso quando se trata de desenvolvimento de produtos?

    Publique seus comentários, dúvidas e consultas abaixo. O aplicativo de demonstração também está disponível para download aqui. Codificação feliz!

    FONTE: https://medium.com/@info_nishant/how-to-create-a-modular-web-application-in-c-mvc-85d8074a26bc

    terça-feira, 4 de julho de 2017 13:07