Mutiplos projetos em MVC e WebAPI

Estou procurando se existe algum modelo de projeto que envolva múltiplos projetos MVC e WebAPI. Na solução que eu estou pensando em projetar (caso seja possível) uma solução de gerenciamento de conteúdo para vários clientes e estou pensando da seguinte maneira:

Queria ter um projeto Pai onde ele seria o core “núcleo” da minha aplicação e o restante seriam sub-projetos onde vou chama-los de “módulos” no qual, esses módulos poderiam ser versionados. Vamos imagina o seguinte senário:

Projeto Principal em MVC aonde eu gerencio os usuários e clientes. Ai eu preciso desenvolver um modulo de gerenciamento de Noticia, outro de gerenciamento Fotos.

SG.MVC -> Master Page, pagina inicial e gerenciamento de módulos

SG.Modulo.Core -> Interfaces necessária para o desenvolvimento de modulo e incluilo na aplicação MVC

SG.Modulo.Noticia.V1

SG.Modulo.Noticia.V2

SG.Modulo.Foto.V1

SG.Modulo.Portifolio.V1

Como eu poderia compilar esses módulos em projetos separados e depois injetar esses módulos na aplicação principal, não sendo necessário recompilar e adaptar a aplicação principal toda vez que tiver que incluir um novo módulo entregando um projeto único de forma dinâmica, um exemplo seria um wordpress, joomla onde podem ser inseridos módulos.

Pensei em buscar os módulos (compilados em dll) salvos em uma pasta, ou então gerenciar a existência desse módulo em um banco de dados mostrando onde a dll de cada módulo está localizada. Qualquer luz no fim do túnel será bem vindo.

=================

=================

2 Respostas
2

=================

Já trabalhei em uma empresa que possuía um ERP enorme e eles tinham uma divisão muito bem feitas dos diversos módulos do sistema. A estrutura que eles utilizavam era basicamente assim:

TFS era utilizado para controle de versão, e confesso que era muito mais agradável que utilizar Git;
Cada módulo do sistema possuía sua própria solution do Visual Studio e todos estavam no controle de versão;
Módulos base compilavam para bibliotecas (DLL);
Módulos base tinham um diretório de saída de build customizado e que era específico para todos eles, uma pasta que não era versionada, ou seja, quando um módulo base era compilado, uma DLL era gerada nessa pasta e o mesmo valia para todos os outros módulos base, no final você tinha uma pasta com todas as DLLs básicas para o funcionamento dos módulos, e essa era a grande chave da história, pois dessa forma essas DLLs podiam ser facilmente referenciados pelos módulos principais, sem que houvem problemas relacionados a diretórios.

Bom, essa é uma forma interessante de abordar esse problema e á a forma que eu utilizaria caso precisasse montar um projeto grande e de maneira que pudesse ser facilmente expandido.

Consegui injetar Class Libraries em MVC usando Unity.Mvc. No entanto, alguns avisos precisam ser dados:

O Unity conflita com o ASP.NET Identity. Nunca consegui resolver a configuração para funcionar;
As Views precisam existir no módulo principal;
A configuração de rotas precisa ser feita utilizando [Route].