none
Arquitetura de sistemas em .Net RRS feed

  • Pergunta

  • Prezados,

    Estou começando a aprender .Net e gostaria de esclarecer algumas dúvidas em relação a arquitetura de sistemas no desenvolvimento utilizando .Net, mais especificamente aplicações Web Asp.net com C#.

    Não me levem a mal se eu fizer uma comparação com Java, nao sou do tipo que acha uma linguagem melhor que a outra. Nesta fase de aprendizado esse tipo de comparação é inevitável.

    Primeiro assunto: Desenvolvimento MVC com .Net.

    O livro que estou utilizando (C# Use a cabeça) e a maioria dos artigos que encontrei na internet ensina a desenvolver mas não no modelo MVC, que é uma coisa que desde o início se aprende com Java.

    Pesquisei e achei um material sobre o ASP.NET MVC Framework que parece ser um lançamento recente. Estou, juntamente com o aprendizado de WebForms, dando uma "olhada" neste framework.

    Minhas dúvidas são: Antes deste framework o desenvolvimento MVC não era uma prática comum nos sistemas .Net? Se havia desenvolvimento MVC, ele era feito "na mão"? O ASP.NET MVC está para .Net como o Struts está pra Java? A única forma de desenvolvimento MVC é através do ASP.NET MVC?

    Segundo assunto: Organização de Classes em pacotes (namespaces).

    Até agora também não vi no livro, dei uma vasculhada até o final e também não achei, mas pode ser que tenha passado desapercebido.

    Achei alguma coisa na internet à respeito, mas nunca vi nada implementado.

    Minhas dúvidas são: É prática comum no desenvolvimento .Net a separação de classes de forma lógica para reaproveitamento de código. Ex.: A classe Funcionario e tudo que for relativo ser agrupado no namespace "br.com.empresa.rh"? E isso ser utilizado em várias aplicações?

    Terceito assunto: Padrão de nomenclatura.

    Existe alguma coisa desse tipo em .Net? Ex.: As classes devem sempre começar com a primeira letra em maiúscula. Métodos devem usar camelCase. As propriedades devem ter métodos de acesso get e set, etc...

    Nesse último percebi que o C# tem uma delcaração automática pra isso mas quando se utiliza a classe não se usa o get ou set e sim somente o nome da propriedade para acessa-la. Isso é comum?

    Bom, desculpem o texto longo, sei que muitas dessas dúvidas não são de responsabilidade do .Net em si, e sim da arquitetura/modelagem do sistema o que independe da linguagem ou plataforma. Mas minha intenção é justamente saber como a comunidade .Net costuma desenvolver aplicações e quais são suas boas-práticas.

    Obrigado.
    • Movido AndreAlvesLima segunda-feira, 27 de julho de 2009 23:47 de .Net Dvlp Geral (De:.NET Development - Geral)
    segunda-feira, 27 de julho de 2009 19:41

Respostas

  • Oi André,

    Não, o padrão MVC não era comum para o desenvolvimento web com .Net antes do ASP.Net MVC. Em Windows Forms até era mais comum, mas pouco.
    Para web existe o Monorail, do projeto Castle, que também implementa o MVC. Muitas empresas adotaram ele antes da Microsoft lançar o ASP.Net MVC, e acho que algumas ainda o adotam. É um bom framework.

    É comum o uso de namespaces para separar as classes sim. Se isso é feito corretamente é outra história.
    E o padrão é diferente de Java. O mais comum é: NomeDaEmpresa.NomeDoProduto.AiDependeDaEmpresa
    No "AiDependeDaEmpresa" às vezes vai nome do projeto do VS, que geralmente é o nome da DLL, às vezes vai o nome do módulo, ou outro. Varia.

    Padrão de nomeação de objetos não tem nada a ver com .Net. Vai da empresa, ou do desenvolvedor. Você pode ter ou não. Já vi a Microsoft recomendar lower camel casing, mas não é algo obrigatório. Algumas ferramentas, como o Resharper, que se integram no VS, ajudam nisso.

    Propriedades automáticas são assim:

    public int Id {get; set;}

    Quando você compila isso, o compilador gera código para você. O que ele faz é mais ou menos isso:

    private int id {get; set;}
    public int Id {
        get {return this.id; }
        set { id = value; }
    }

    As duas construções dão na mesma. É uma questão de estilo. Na prática, praticamente ninguém usa mais o método com o backing field (segundo caso), se não houver um bom motivo para isso. E na maioria dos casos não há.
    Giovanni Bassi, Microsoft MVP, MCSD, MCPD, CSM, Arquiteto de software - http://www.giovannibassi.com
    • Sugerido como Resposta AndreAlvesLima quinta-feira, 13 de maio de 2010 19:06
    • Marcado como Resposta Leandro Bianchini quinta-feira, 13 de maio de 2010 19:57
    terça-feira, 28 de julho de 2009 04:32
    Moderador

Todas as Respostas

  • Leandro,

    Estou movendo seu post para o fórum de Arquitetura de Aplicações.
    André Alves de Lima - http://andrealveslima.spaces.live.com
    segunda-feira, 27 de julho de 2009 23:46
  • Oi André,

    Não, o padrão MVC não era comum para o desenvolvimento web com .Net antes do ASP.Net MVC. Em Windows Forms até era mais comum, mas pouco.
    Para web existe o Monorail, do projeto Castle, que também implementa o MVC. Muitas empresas adotaram ele antes da Microsoft lançar o ASP.Net MVC, e acho que algumas ainda o adotam. É um bom framework.

    É comum o uso de namespaces para separar as classes sim. Se isso é feito corretamente é outra história.
    E o padrão é diferente de Java. O mais comum é: NomeDaEmpresa.NomeDoProduto.AiDependeDaEmpresa
    No "AiDependeDaEmpresa" às vezes vai nome do projeto do VS, que geralmente é o nome da DLL, às vezes vai o nome do módulo, ou outro. Varia.

    Padrão de nomeação de objetos não tem nada a ver com .Net. Vai da empresa, ou do desenvolvedor. Você pode ter ou não. Já vi a Microsoft recomendar lower camel casing, mas não é algo obrigatório. Algumas ferramentas, como o Resharper, que se integram no VS, ajudam nisso.

    Propriedades automáticas são assim:

    public int Id {get; set;}

    Quando você compila isso, o compilador gera código para você. O que ele faz é mais ou menos isso:

    private int id {get; set;}
    public int Id {
        get {return this.id; }
        set { id = value; }
    }

    As duas construções dão na mesma. É uma questão de estilo. Na prática, praticamente ninguém usa mais o método com o backing field (segundo caso), se não houver um bom motivo para isso. E na maioria dos casos não há.
    Giovanni Bassi, Microsoft MVP, MCSD, MCPD, CSM, Arquiteto de software - http://www.giovannibassi.com
    • Sugerido como Resposta AndreAlvesLima quinta-feira, 13 de maio de 2010 19:06
    • Marcado como Resposta Leandro Bianchini quinta-feira, 13 de maio de 2010 19:57
    terça-feira, 28 de julho de 2009 04:32
    Moderador