none
Ajuda em projeto Web. RRS feed

  • Pergunta

  • Olá pessoal…
    Estou fazendo meu TCC da faculdade e queria leva-lo um pouco a diante, afinal de contas “quem não arrisca não petisca”.
    Então, o meu TCC se baseia em um site de perfis profissionais como os existentes no mercado catho, manager, entre muitos, ou seja, um repositório para manter e consultar perfis.

    As tecnologias em camadas que estou utilizando são:

    - ASP.NET (c#)
    - LINQ
    - Entity Framework, EDMX, Generics
    - SQL Server (talvez eu mude para o MySQL)

    A minha duvida e algo pensando mais adiante, se esse o projeto crescer queria está preparando para uma grande demanda de usuários.

    - O que eu deve me preocupar em relação a performance?
    - Quais preocupações eu deva ter em relação as transações de banco de dados, usar persistência de objetos ou SQL puro. O que seria    melhor para este tipo de projetos?
    - MySQL ou SQL Server?
    - Quais serão os possíveis gargalos ou obstáculos que eu possa encontra pela frente?
    - Segurança?

    Agradeço aos colegas que puderem contribuir com o projeto, pois não possuo um grande experiências com este tipo de projetos, mas a humildade em aceitar sugestão e critica para crescer.

    Grato.


    • Editado goltte domingo, 15 de julho de 2012 23:06
    domingo, 15 de julho de 2012 23:02

Respostas

  • Amigo,

    Por ser um TCC acredito que seria legal um banho de loja...

    Para performance e outras questões de infra-estrutura:
    Windows Azure: http://www.windowsazure.com/en-us/pricing/free-trial/
    Você pode usar durante 90 dias free, aproveita e faça seu projeto lá!

    Para banco eu prefiro o MSSQL mesmo, se você tiver acesso a dados muito comuns e com pouca atualização (Ex. menus, mapa de site, categorias, dados estáticos) Você pode usar persistência para manter esses dados sem necessidade de buscá-lo na base a todo instante.

    Os possíveis gargalos possívelmente será na fase de concepção da arquitetura, seja simples, não queira colocar os 10.000 conceitos existentes em prática e deixar sua arquitetura como uma cebola, e difícil de trabalhar.

    Já que você tem um target de negócio eu lhe recomendo o DDD para modelagem de negócios, se você for apresentar método de desenvolvimento pode abordar o TDD (qualidade) também, tem um post sobre isso no meu site.

    O obstáculo mais difícil mesmo é fazer o sistema sair bonito do papel para o código, eu utilizaria ASP.Net MVC + EntityFramework + MSSQL + Windows Azure

    Para segurança em transações procure considerar o uso do MSDTC.

    Quando modelar seu sistema poste aqui a proposta de arquitetura para debatermos.

    SEGURANÇA:

    Imagina quantos crackes "hackers" (ou mesmo um script kid rsss) tentam atacar os sites tipo Catho, a idéia é praticar código seguro, desenvolver rotinas e código que impossibilitam SQL Injection (nunca confie nos dados provindo do usuário, trate todos antes de processar).

    Não use querystrings (ou as use o mínimo possível, sem trafegar dados sensíveis)

    Cuidado com as sessões de usuário, se fosse você utilizaria Membership para criar um perfil de usuário autenticado.

    Evite o uso de cookies (sempre que possível).

    Escreva as consultas a base de dados em procedures.

    Por hora acho que já da para começar né?
    Vai postando suas dúvidas.

    Abraço.


    É possível sim! Ponha isso na sua cabeça. É possível. "Steve Jobs"

    Eduardo Pires
    www.eduardopires.net.br

           

    • Marcado como Resposta Richard Juhasz quarta-feira, 27 de fevereiro de 2013 14:26
    segunda-feira, 16 de julho de 2012 14:40
  • Para ter escalabilidade e segurança, recomendo uma infra-estrutura baseada em WCF. Os controllers fariam chamadas à camada de serviço, que pode ser escalável em vários servidores, garantindo desde já a disponibilidade do site. As operações CRUD poderiam ser mapeadas no modelo EDMX em forma de métodos, dessa forma evitando SQL Injection. Quanto à durabilidade das transações, é necessário ver se o ADO.NET Data Provider utilizado é fornecido pela Microsoft. Em caso contrário, verificar como o driver utilizado lida com transações, ou seja, se ele necessita de suporte ao MSDTC ou não. Camada de apresentação, com certeza, ASP.NET MVC 3 + jQuery. Sugestão: dê uma olhadinha na biblioteca KnockoutJS para desenvolvimento DDD com JavaScript. Parece ser interessantíssima para tornar a camada cliente bem leve.

    Sds.,

    Rubem Rocha
    MCP, MCPD
    Manaus, AM


    Sds., Rubem Rocha MCP, MCPD Manaus - AM

    • Marcado como Resposta Richard Juhasz quarta-feira, 27 de fevereiro de 2013 14:26
    segunda-feira, 16 de julho de 2012 17:28

Todas as Respostas

  • Amigo,

    Por ser um TCC acredito que seria legal um banho de loja...

    Para performance e outras questões de infra-estrutura:
    Windows Azure: http://www.windowsazure.com/en-us/pricing/free-trial/
    Você pode usar durante 90 dias free, aproveita e faça seu projeto lá!

    Para banco eu prefiro o MSSQL mesmo, se você tiver acesso a dados muito comuns e com pouca atualização (Ex. menus, mapa de site, categorias, dados estáticos) Você pode usar persistência para manter esses dados sem necessidade de buscá-lo na base a todo instante.

    Os possíveis gargalos possívelmente será na fase de concepção da arquitetura, seja simples, não queira colocar os 10.000 conceitos existentes em prática e deixar sua arquitetura como uma cebola, e difícil de trabalhar.

    Já que você tem um target de negócio eu lhe recomendo o DDD para modelagem de negócios, se você for apresentar método de desenvolvimento pode abordar o TDD (qualidade) também, tem um post sobre isso no meu site.

    O obstáculo mais difícil mesmo é fazer o sistema sair bonito do papel para o código, eu utilizaria ASP.Net MVC + EntityFramework + MSSQL + Windows Azure

    Para segurança em transações procure considerar o uso do MSDTC.

    Quando modelar seu sistema poste aqui a proposta de arquitetura para debatermos.

    SEGURANÇA:

    Imagina quantos crackes "hackers" (ou mesmo um script kid rsss) tentam atacar os sites tipo Catho, a idéia é praticar código seguro, desenvolver rotinas e código que impossibilitam SQL Injection (nunca confie nos dados provindo do usuário, trate todos antes de processar).

    Não use querystrings (ou as use o mínimo possível, sem trafegar dados sensíveis)

    Cuidado com as sessões de usuário, se fosse você utilizaria Membership para criar um perfil de usuário autenticado.

    Evite o uso de cookies (sempre que possível).

    Escreva as consultas a base de dados em procedures.

    Por hora acho que já da para começar né?
    Vai postando suas dúvidas.

    Abraço.


    É possível sim! Ponha isso na sua cabeça. É possível. "Steve Jobs"

    Eduardo Pires
    www.eduardopires.net.br

           

    • Marcado como Resposta Richard Juhasz quarta-feira, 27 de fevereiro de 2013 14:26
    segunda-feira, 16 de julho de 2012 14:40
  • Para ter escalabilidade e segurança, recomendo uma infra-estrutura baseada em WCF. Os controllers fariam chamadas à camada de serviço, que pode ser escalável em vários servidores, garantindo desde já a disponibilidade do site. As operações CRUD poderiam ser mapeadas no modelo EDMX em forma de métodos, dessa forma evitando SQL Injection. Quanto à durabilidade das transações, é necessário ver se o ADO.NET Data Provider utilizado é fornecido pela Microsoft. Em caso contrário, verificar como o driver utilizado lida com transações, ou seja, se ele necessita de suporte ao MSDTC ou não. Camada de apresentação, com certeza, ASP.NET MVC 3 + jQuery. Sugestão: dê uma olhadinha na biblioteca KnockoutJS para desenvolvimento DDD com JavaScript. Parece ser interessantíssima para tornar a camada cliente bem leve.

    Sds.,

    Rubem Rocha
    MCP, MCPD
    Manaus, AM


    Sds., Rubem Rocha MCP, MCPD Manaus - AM

    • Marcado como Resposta Richard Juhasz quarta-feira, 27 de fevereiro de 2013 14:26
    segunda-feira, 16 de julho de 2012 17:28
  •  EduardoPires

    Obrigado pelas sugestões, estou terminando MER e vou postar aqui para discurtimos neste primeiro momento sobre modelagem.




    • Editado goltte terça-feira, 24 de julho de 2012 18:43
    terça-feira, 24 de julho de 2012 18:43
  • Golte,

    Mto bom.

    Sugiro que para nao tornar essa thread infinita você a feche marcando uma resposta e abra uma para cada tipo de dúvida, assim fica mais fácil direcionar o assunto para quando formos te ajudar.

    Abç!


    É possível sim! Ponha isso na sua cabeça. É possível. "Steve Jobs"

    Eduardo Pires
    www.eduardopires.net.br

           

    • Sugerido como Resposta Maquine terça-feira, 21 de agosto de 2012 19:16
    quarta-feira, 25 de julho de 2012 11:50
  • Correto, o próximo irei abrir com o titulo "Projeto Web - Fase 1"...

    Abraço!

    quarta-feira, 25 de julho de 2012 15:04
  • Use títulos referente ao tipo de assunto abordado, assim os interessados e entendidos do assunto saberão o teor da dúvida.

    São mais chances de ser respondido.

    PS - Para fechar essa thread é necessário marcar as respostas que lhe ajudaram.


    É possível sim! Ponha isso na sua cabeça. É possível. "Steve Jobs"

    Eduardo Pires
    www.eduardopires.net.br

           

    quarta-feira, 25 de julho de 2012 15:40
  • Goltte,

    Para melhor organização do fórum solicito que finalize sua thread selecionando uma resposta ou postando sua solução.

    Abç!


    É possível sim! Ponha isso na sua cabeça. É possível. "Steve Jobs"

    Eduardo Pires
    www.eduardopires.net.br

           

    terça-feira, 14 de agosto de 2012 13:25