Pergunta

Estou no processo de projetar um aplicativo da web que terá vários módulos instaláveis ​​que fornecem funcionalidades diferentes.Há muitas coisas comuns acontecendo aqui e tenho três bibliotecas de classes C# que sei que serão fáceis de usar em diferentes projetos.

A parte em que estou preso é o próprio site.Idealmente, eu gostaria de fazer um ASP.NET biblioteca de páginas que pode ser reutilizado em vários projetos, mas entendo que isso não é possível.

Como vocês estruturam os projetos do seu site para que as páginas possam ser reutilizadas em vários projetos?Até agora, a única solução que encontrei foi criar um repositório em SVN e referenciá-lo no svn:externals propriedades do projeto principal.Isso me permite adicionar a esse diretório páginas que são comuns a todos os sites, e sei que poderei usar isso para verificá-las em outros projetos.No entanto, acho que isso é um pouco desajeitado e causará problemas ao criar novos projetos (haveria uma série de etapas para criar a nova solução, garantindo que os recursos externos corretos estejam implementados).

Existe uma solução melhor?Qual é a melhor maneira quando você deseja compartilhar arquivos ASPX comuns em vários projetos de clientes?Como você gerencia as mudanças contra eles?

Desde já, obrigado!

EDITAR:

Muito obrigado a David por sua resposta.Pensei mais sobre isso e pensei em listar algumas de minhas ideias/preocupações mais concretas.Primeiramente, um pouco mais sobre o(s) projeto(s).Principalmente, é um CMS.No entanto, também temos clientes que desejam CRM, e também há clientes que não desejam nenhum dos dois e desejam um sistema totalmente personalizado desde o início.

Na minha postagem original acima, falei sobre ter subdiretórios da raiz principal (por exemplo, cms), usando svn:externals para permitir fácil compartilhamento de páginas da web em vários projetos.Estou começando a pensar que esta é a única maneira de fazer isso.Uma coisa que me incomodou foi se a URL do cliente fosse:

http://www.shotgunanddribble.com/cms/content.aspx

No entanto, acho que posso usar o Application_BeginRequest para mitigar URLs horríveis reescrevendo-os de acordo com a configuração do site do cliente.Por exemplo, se um cliente fosse apenas um CMS, eu poderia reescrever seu domínio de nível superior para /cms/.O mesmo aconteceria se eles fossem um CRM.Se fossem ambos:

http://www.shotgunanddribble.com/ -> /cms/

http://crm.shotgunanddribble.com/ -> /crm/

Existe alguma desvantagem em usar esse tipo de reescrita?Eu acho que, a menos que alguém tenha alguma ideia mágica, svn:externals é minha única esperança.

Foi útil?

Solução

O código real é fácil de colocar em outros assemblies e herdar, mas os arquivos ASPX são definitivamente uma história diferente.Que tal uma biblioteca comum de controles de usuário para conter a maior parte do conteúdo de exibição, e cada projeto teria suas próprias páginas que apenas enquadram os controles de usuário?Eu nunca tentei, então pode haver alguma "pegadinha" que não estou imaginando agora.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top