none
Melhores Práticas mara iniciar um Grande projeto RRS feed

  • Discussão Geral

  • Caros Amigos do MSDN, hoje programo em vb6 e temos um software ERP, já programei em asp.net, mas tem um tempo e as coisas mudam muito rápido, estamos iniciando um projeto ERP de grande porte do zero e gostaria de saber a opinião de vários especialistas sobre várias questões abaixo:

    O meu maior medo é escolher uma tecnologia errada, criar um mega sistema e depois de 6 meses, 1 ano surgir algo muito melhor, com codificação mais rápida e mais eficiente
    Outro medo é que o sistema mesmo que não seja Windows, mas tenho que fazer ele ficar o mais rápido possível Desempenho Máximo.

     

    1.     O que eu devo usar Master Page ou Frame? Ou tem alguma outra tecnologia para dar desempenho.

    RES:

    2.     Acesso a Dados quero ter Independência de Bando de Dados (Hoje uso SQL Server mas poderei usar Oracle, Firebird etc...)
    Destas que relacionei abaixo, Qual será que terá mais futuro? Qual a Tendência
    ?

    ADO.NET OLEDB
    ADO.NET Data Services
    Dynamic Data Applications
    Link SQL
    Data Access Application Enterprise Library 4.0
    Nhibernate
    RES:

     

    3.     Quem tem mais futuro MVC ou Web Form? Qual tem maior desempenho?
    Já tenho uma boa experiência em Web Form, mas se tiver que re-aprender não tem problemas, quero ter um sistema com o melhor desempenho possível

    RES:

     

    4.     Como é um sistema WEB tem como a pessoa usar o sistema o dia todo sem que a conexão caia? Só expira se o usuário parar de mexer uns 20 minutos ou se ele fechar. Outra pergunta tem como tirar a barra de menu e endereço na hora de acessar o browser Windows Explorer ou outros, para aproveitar mais a tela e ganhar mais espaço?

    RES:

     

    5.     O que eu preciso fazer para minhas telas ter agilidade, acesso rápido, escalabilidade, desempenho total e explorar o máximo recurso de desempenho,  qual padrão deverei usar?

    RES:

     

    6.     Os nossos clientes são de ramos variáveis e sempre precisa criar novos campos, o que fazer para facilitar a manutenção? Pensei em criar um componente que ao carregar o Webform ele vai em um dicionário de dados e cria a tela em tempo de runtime, mas tenho medo de perder a performance o que eu MAIS PREZO E PRECISO NESTE ERP. Estou pensando em usar o DetailsView o que acham?

    RES:

     

    7.     Tem como usar o DetailsView em 3 camadas? Será que ele pode deixar o sistema mais lento?

    RES:

     

    8.     Para desenvolver os relatórios de saída o que vocês me sugere uso HTML ou Crystal Report?
    Hoje utilizo relatórios no crystal, pois tem certos relatórios que são muito complexos com n informações em uma única tela.

    RES:

     

    9.     Preciso usar alguns componentes como grid, gráficos, menus, barra de ferramentas com recursos e outros controles que estão prontos e que são mais avançados e não perder tempo o que vocês me sugere, padrão do VS2008 (Gridview), Componente One, Infragits, Dev Express? Outros?

    RES:

     

    10.   Alguém tem algumas dicas de Padrão de programação?
    RES:

    11.   Alguem poderia me explicar qual a diferença de Silverlight e Ajax?
    RES:

    12.   Queremos montar um projeto, estudar as tecnologias e padrões de desenvolvimento antes de começar para não ter problemas La na frente com manutenção e analise errada,  o que vocês me sugere?
    padrão de processo de desenvolvimento de software (CMMI, SPICE, ISO12207 OU MPS/BR)?

    modelo de processo(cascata, interativo, ágeis, formal, RUP, MVC)?

    RES:

    13.   As palavras chave deste projeto é PERFORMACE, ESCALABILIDADE E DESEMPENHO. Baseado na experiência e nas tendências o que vocês me sugere estudar e fazer?

    RES:


    Samuel
    terça-feira, 3 de março de 2009 03:04

Todas as Respostas

  • Vixi.... Samuel,  Post que tem tudo para ficar longo, e termos uma boa discussão com os participantes. hehehe, isso no geral sempre e bom  para todos 

    Vem vou iniciar dando meus "dois cents”:

    1.     O que eu devo usar Master Page ou Frame? Ou tem alguma outra tecnologia para dar desempenho.

    RES: Antes de tudo desempenho esta diretamente ao uso de boas práticas seja qual for a tecnologia escolhida; Ajax é um exemplo clássico: Ele aumenta bastante o desempenho das paginas reduzindo o round-trip porem se mal usada o  deixar as pagina mais lentas :-).
    Especificamente em relação as 2 opções o Uso de Frames reduzira o roudntrip porem aumentara o complexidade de atua lição de dados entres os frames , o que poderá ficar caro em termos de usabilidade e manutenção, Já o uso de MasterPage permite uma usabilidade melhor, um código mais eficiente e reaproveitado, tendo o custo de ter um custo maior entre os post-back, que pode ser bem resolvido com o uso de boas práticas (olha ela ai ...rs) com CSS  principalmente nas imagens , pois isso será resolvido em cache, alem claro do uso equilibrado dos updatePanels (ajax) e dependendo da interatividade da pagina a utilização do AJAX-Client Side para se obter a performance desejada (quando isso for crítico)

    2.  Acesso a Dados quero ter Independência de Bando de Dados (Hoje uso SQL Server mas poderei usar Oracle, Firebird etc...)
    Destas que relacionei abaixo, Qual será que terá mais futuro? Qual a Tendência? ADO.NET OLEDB, ADO.NET Data Services, Dynamic Data Applications , Link SQL, Data Access Application Enterprise Library 4.0 ,Nhibernate

    RES:  Bem Neste ponto vamos por partes antes de falar das opções que vc citou cabe ressaltar que desde o .NET 2.0 foi introduzido o conceito de PROVIDER , assim temos uma classe Base e as classes para cada provider de banco que herdam desta classe base, Assim o desenvolvimento mult-bancos ficou bastante facilitado se sempre s basear  neste conceito . Dito isso vai perceber que todas asd que citou fazem uso do acabei de falar :-), mas qual delas é a melhor  perguntaria ..... Difícil dizer, acredito que cada um defenderá umas delas (Todas tem prós e contras....) mas se fosse eu pensaria seriamente seguir a linha do ADO. EF + LINQ (Não estou falando do linq to SQL , que por sinal gosto muito porem é específico para o MS-SQL).

    Usaria com certeza tb o ADO.NET DATA Services principalmente e na sua arquitetura este previsto o camada de serviço , isso vai ajudar muito em muitas atividades tornando muito produtivo e de fácil implementação com uma boa relação de Custo X Desempenho

    O Enterprise LIbray 4.0 e uma ótima escolha porem caso opte por ela terá uma curva de aprendizado para usá-la com eficiência, a contra partida disso é que é um Library que esta sempre em evolução já com todas as boas práticas incluídas inclusive com guias de utilização e uma falta documentação e comunidade bastante ativa.

    NHibernate não irei falar pois não uso no dia a dia e se falar mal não terei como justificar com "propriedade" :-)

    3.     Quem tem mais futuro MVC ou Web Form? Qual tem maior desempenho?
    Já tenho uma boa experiência em Web Form, mas se tiver que re-aprender não tem problemas, quero ter um sistema com o melhor desempenho possível

    RES: O problema aí não é aprender, MVC é um Padrão para interface , não acredito que um substitua o outro, e sim convivam juntos. WebForm tem ótimo desempenho quando bem utilizado , um conjunto infinitamente maior de recursos e componentes para todos os gostos , deve também se preocupar que desempenho tem seu custo , nem sempre o mais rápido é o melhor .... Na maior das vezes "menos é mais" .  Minha dica que utilize webform  onde terá um farto material, uma comunidade e recursos  com proficiência  e  utilize MVC aos poucos pois ainda terão muitas arestas a serem resolvidas . 

     
    4.     Como é um sistema WEB tem como a pessoa usar o sistema o dia todo sem que a conexão caia? Só expira se o usuário parar de mexer uns 20 minutos ou se ele fechar. Outra pergunta tem como tirar a barra de menu e endereço na hora de acessar o browser Windows Explorer ou outros, para aproveitar mais a tela e ganhar mais espaço?

    RES:  Particularmente  acho que um dos erros mais comuns é tentar fazer a WEB não ser WEB.... Se esta usando um Browser então o seu sistema devera estar preparado para ter endereço , botão de back , fechar o browser etc Tentar ficar driblando isso vai lhe custar tempo e não será eficiente...Quanto a conexão por conceito trabalha desconectado , logo conexão cair não existe, caso vc perca o acesso ao servidor a operação não será concluída , como vc tem como premissa que esta trabalhando desconectado , sua programação e negócio deveram estar aderentes a este conceito, logo operações de longa duração devem ser avaliadas com cuidado , e se realmente é necessário o uso da Web... Muitos cenários seriam resolvidos utilizando-se um client Windows usando Smart-client e sincronização de dados

    5.     O que eu preciso fazer para minhas telas ter agilidade, acesso rápido, escalabilidade, desempenho total e explorar o máximo recurso de desempenho,  qual padrão deverei usar?

    RES: Se existir um único padrão que faça isso tudo me avisa :-), Como arquiteto o que faço é usar um pouco de tudo , escolho de acordo com os cenários dos diversos módulos e funcionalidades que o sistema ira necessitar. Novamente boas práticas é à base de tudo, outro ponto que vejo e que durante estas escolhas esquecemos um ingrediente fundamental : Os nossos recursos (desenvolvedores) e Nossa cultura. Prefiro um  feijão com arroz muito bem feito , onde tenho quem faça e resolva com extrema eficiência  que um prato extremamente sofisticado , caro e que somente alguns Chefes Internacionais conseguem fazer de forma bem feita.... Voltando a nossa área , a resposta  não existe, O feijão com arroz é o desenvolvimento de 3 camadas e a inclusão de uma camada de serviços com um baixo acoplamento é a base, em cima disso devera aplicar os padrões depois de uma analise mais detalhada pela sua equipe de Arquitetura , e caso identifique alguma tecnologia e/ou padrão que não domine pense em um treinamento para toda sua equipe para que isso possa se disseminado com facilidade entre todos.

     
    6.     Os nossos clientes são de ramos variáveis e sempre precisa criar novos campos, o que fazer para facilitar a manutenção? Pensei em criar um componente que ao carregar o Webform ele vai em um dicionário de dados e cria a tela em tempo de runtime, mas tenho medo de perder a performance o que eu MAIS PREZO E PRECISO NESTE ERP. Estou pensando em usar o DetailsView o que acham? 

    RES: Com certeza para um preço de desempenho..., porem pode pensar em um modelo fixo , performático e uma aba com campos customizados ,     claro que alem disso deve pensar em uma modelagem de dados voltada para isso o que raramente vejo implementado. DetaisViews e uma boa opção, mas o mais importante é o uso do conceito de BIndering que é o que esta pro trás do DetailsViews, o Uso de repeat para grids customizadas tb é uma boa opção para quem quer desempenho e customização .

    7.     Tem como usar o DetailsView em 3 camadas? Será que ele pode deixar o sistema mais lento?

    RES: Não existe relação no uso de um componente com a arquitetura em camadas...
     
    8.     Para desenvolver os relatórios de saída o que vocês me sugere uso HTML ou Crystal Report? Hoje utilizo relatórios no crystal, pois tem certos relatórios que são muito complexos com n informações em uma única tela.

    RES: Report server pode ser uma boa opção e uma relação Custo Benéfico bem + atraente..., Claro que o crystal esta La na sua versão 12.X (eu acho parei de acompanhar na versão 10...) Atualmente tenho optado PT Report Services, que tem tudo para continuar evoluindo. Mas se já tem host com o Crytal Server não vejo porque não continuar a utilizar, principalmente se já possuir esta cultura interna.

     
    9.     Preciso usar alguns componentes como grid, gráficos, menus, barra de ferramentas com recursos e outros controles que estão prontos e que são mais avançados e não perder tempo o que vocês me sugere, padrão do VS2008 (Gridview), Componente One, Infragits, Dev Express? Outros?

    RES: Todos são muitos bons! E são confiáveis (estão no mercado há bastante tempo, e tem evoluído junto com as novas tecnologias) Escolha  a suíte que + Atender as suas necessidades. 

    10.   Alguém tem algumas dicas de Padrão de programação?

    RES: Sim, o melhor padrão é aquele que  você domina :-) Ou seja é melhor um padrão bem feito que vários padrões mal aplicados.

    11.   Alguem poderia me explicar qual a diferença de Silverlight e Ajax?

    RES: Uma coisa é uma coisa , outra coisa é  outra coisa, mas as coisas se falam....rs Brincadeira.... Ajax é um conjunto de tecnologias que permitem a comunicação com o servidor sem necessidade de executar um render completo na pagina e com isso melhorar sensivelmente a desempenho nas pagina alem de propiciar uma melhor usabilidade das interfaces através de utilização de JS para aumentar a riqueza das UI com aumento de interatividade sem a necessidade de ir ao servidor. Porem Ajax se limita a melhorar o que já existe, ou seja,  estamos falando de HTML.
    O mercado vem cada vez tendo a necessidades de termos aplicações cada vez mais Ricas e Interativas (RIA) , Neste contexto entra o SIlverlight que  permite um ambiente gráfico , extremante rico e eficiente utilizando vídeos, animações e uma resposta muito próxima a riqueza das aplicações windows  porem rodando na web, para isso ela usa no client um mine framework .net e os códigos são feitos com linguagem gerenciada como c# já compilada , compactadas e enviadas pro demanda pelo server, alem claro de outras características. Ambas as tecnologias se falam e é possível pelo Client-Ajax acessar controles e dados do Silverligt como também pelo Silverlight acessarmos funções em JS.   


    12.   Queremos montar um projeto, estudar as tecnologias e padrões de desenvolvimento antes de começar para não ter problemas La na frente com manutenção e analise errada,  o que vocês me sugere? padrão de processo de desenvolvimento de software (CMMI, SPICE, ISO12207 OU MPS/BR)?

    RES: Scrum + Agile  é o que tenho usando na nossa equipe com muito sucesso;

    13.   As palavras chave deste projeto é PERFORMACE, ESCALABILIDADE E DESEMPENHO. Baseado na experiência e nas tendências o que vocês me sugere estudar e fazer?

    RES: Tudo que foi falado , e com certeza outras dicas que iram surgir, e recomendo fortemente ter ou contratar uma Equipe de  Arquitetos pois esta será a base para um desenvolvimento e planejamento tranqüilo e adequado.



    UFA!... bem Tem + um zilhão de coisas.... Mas aqui fica meus 2 cent :-) 



    Fernando Cerqueira MVP.ASP.NET TEAM AJAX.TOOLKIT CONSULTOR & ARQUITETO
    terça-feira, 3 de março de 2009 04:22
    Moderador
  • Obrigado Fernando, suas respostas contribuindo e muito para mim, deu para iniciar e formar algumas posições, se alguem puder tambem dar sua opinião eu agradeço.
    Samuel
    domingo, 15 de março de 2009 22:25