none
Mesmo projeto para vários clientes. RRS feed

  • 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

    sábado, 4 de agosto de 2012 05:07

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
    domingo, 5 de agosto de 2012 12:22
    Moderador
  • 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
    quarta-feira, 15 de agosto de 2012 01:37
    Moderador

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

    sábado, 4 de agosto de 2012 11:04
  • 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
    domingo, 5 de agosto de 2012 12:22
    Moderador
  • Concordo plenamente com o CAIO, nada a acrescentar

    http://fparmezani.wordpress.com

    terça-feira, 7 de agosto de 2012 00:05
  • Concordo em gênero e número com Caio!

    Júnior Pacheco

    terça-feira, 7 de agosto de 2012 17:55
  • 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

    terça-feira, 14 de agosto de 2012 00:07
  • 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
    quarta-feira, 15 de agosto de 2012 01:37
    Moderador
  • Obrigado a todos pelas respostas, más definitivamente a resposta do Caio resolveu o meu problema.

    Obrigado


    • Editado LSoto sábado, 18 de agosto de 2012 03:57
    sábado, 18 de agosto de 2012 03:56