Usuário com melhor resposta
Mesmo projeto para vários clientes.

Pergunta
-
Olá pessoal,
Estou com uma dúvida simples e acho que vocês poderão me ajudar.
Estou desenvolvendo uma aplicação web em ASP.NET MVC com Entity Data Model que rodará em diferentes clientes, porém, a lógica da aplicação é exatamente a mesma para todos esses clientes, inclusive o esquema da base de dados de cada um desses clientes, com exceção apenas do desing (Views, MasterPage e CSS).
Se eu resolver criar um projeto separado para cada cliente eu terei sérios problemas quando for necessária alguma atualização, pois terei que alterar cada projeto individualmente com exatamente a mesma funcionalidade ou correção de erros. Minha pergunta é se tem como eu criar um único projeto que reconheça com qual cliente ele está trabalhando e altere o desing e a fonte de dados automaticamente.
Agradecido
Respostas
-
Ter o layout do site e banco de dados personalizado para cada cliente é apenas um detalhe de configuração da aplicação... Você não precisa (nem deve) criar um projeto separado para cada cliente.
O que você precisa fazer é ter diferentes BUILDS para cada cliente, em que em cada BUILD você inclui a connection string correta no Web.config, e inclui os arquivos de imagens, css, etc... para o cliente correspondente a BUILD.
Abraços,
Caio Proiete
Caio Proiete
Microsoft MVP, MCT, MCPD, MCTS, MCSD
http://caioproiete.net- Sugerido como Resposta Antonio Cardoso Silva Junior terça-feira, 7 de agosto de 2012 17:54
- Marcado como Resposta LSoto sábado, 18 de agosto de 2012 03:57
-
Existe alguma forma de se trabalhar com mais de uma MasterPage dentro do mesmo projeto e criar alguma rotina que avise o VS que para o build do cliente X deve-se utilizar a MasterPage X, para o cliente Y a MasterPage Y.
Sim, existem várias formas diferentes de fazer isso. Provavelmente a mais simples é, partindo do princípio que você terá uma Build Configuration diferente para cada cliente, criar uma MasterPage para cada cliente (ex: _LayoutPage.Cliente1.cshtml, _LayoutPage.Cliente2.cshtml, etc...) marcar essas MasterPages para não serem incluidas no resultado da Build (propriedades do arquivo => Build Action => None), e então no Post-build event você substitui a MasterPage do projeto pela a MasterPage correspondente a configuração da build selecionada, de forma a copiar a MasterPage certa para cada cliente, em cada build...
Abraços,
Caio Proiete
Caio Proiete
Microsoft MVP, MCT, MCPD, MCTS, MCSD
http://caioproiete.net- Marcado como Resposta LSoto sábado, 18 de agosto de 2012 03:56
Todas as Respostas
-
Você vai ter que fazer o seguinte
na tela de LOGIN NO SISTEMA, deixe um campo aberto para a pessoa digitar (APENAS PELA PRIMEIRA VEZ) o endereço do banco de dados dela
Exemplo
Empresa A:
Usuario a
senha a
Servidor :192.168.8.9
Empresa B:
usuario b
senha b
servidor 186.152.141.2
ao logar pela 1ª vez (ou antes mesmo) voce roda o script para gerar o banco e as tabelas.
Voce pode criar propriedades no WEBCONFIG que irão ser alteradas com base no valor da tabela EMPRESASISTEA( que contem os dados de CSS,MASTERPAGE) para cada empresa.
Essa é uma ideia :)
Não sei se é a melhor.
Artigos e Dicas VB.NET, C#, SQL, Report viewer e WPF
Siga @PauloHDSousa -
Ter o layout do site e banco de dados personalizado para cada cliente é apenas um detalhe de configuração da aplicação... Você não precisa (nem deve) criar um projeto separado para cada cliente.
O que você precisa fazer é ter diferentes BUILDS para cada cliente, em que em cada BUILD você inclui a connection string correta no Web.config, e inclui os arquivos de imagens, css, etc... para o cliente correspondente a BUILD.
Abraços,
Caio Proiete
Caio Proiete
Microsoft MVP, MCT, MCPD, MCTS, MCSD
http://caioproiete.net- Sugerido como Resposta Antonio Cardoso Silva Junior terça-feira, 7 de agosto de 2012 17:54
- Marcado como Resposta LSoto sábado, 18 de agosto de 2012 03:57
-
-
-
Obrigado pela dica Caio e provavelmente é o que irei fazer mesmo. Más ainda tenho uma dúvida em relação a MasterPage que é a seguinte:
Imagine que atualizei o projeto e agora preciso implanta-lo para mais de 20 clientes, cada um com sua base e MasterPage distintas. Existe alguma forma de se trabalhar com mais de uma MasterPage dentro do mesmo projeto e criar alguma rotina que avise o VS que para o build do cliente X deve-se utilizar a MasterPage X, para o cliente Y a MasterPage Y. Sei que com o banco, css e as outras configurações isso é possível, más não sei se seria possível com a MasterPage, pois além de setar a MasterPage do cliente em questão como default eu também gostaria que as outras Masters dos outros clientes não fossem embutidas na compilação. Desejo deixar o processo o mais automatizado possível e não ter que setar as masters manualmente para cada build em caso de atualização.
Abraço
Leandro Soto
-
Existe alguma forma de se trabalhar com mais de uma MasterPage dentro do mesmo projeto e criar alguma rotina que avise o VS que para o build do cliente X deve-se utilizar a MasterPage X, para o cliente Y a MasterPage Y.
Sim, existem várias formas diferentes de fazer isso. Provavelmente a mais simples é, partindo do princípio que você terá uma Build Configuration diferente para cada cliente, criar uma MasterPage para cada cliente (ex: _LayoutPage.Cliente1.cshtml, _LayoutPage.Cliente2.cshtml, etc...) marcar essas MasterPages para não serem incluidas no resultado da Build (propriedades do arquivo => Build Action => None), e então no Post-build event você substitui a MasterPage do projeto pela a MasterPage correspondente a configuração da build selecionada, de forma a copiar a MasterPage certa para cada cliente, em cada build...
Abraços,
Caio Proiete
Caio Proiete
Microsoft MVP, MCT, MCPD, MCTS, MCSD
http://caioproiete.net- Marcado como Resposta LSoto sábado, 18 de agosto de 2012 03:56
-