PADRÃO PARA DESENVOLVIMENTO EM C#
Caros amigos, bom dia!
Gostaria de receber a opinião e vocês quanto ao melhor método de programação em c#.
Seria MVC ? as instruções no banco de dados seriam melho via string sql, e execute, ou via parameters?
Uma luz, por favor! qual melhor forma?
grato
Gostaria de receber a opinião e vocês quanto ao melhor método de programação em c#.
Seria MVC ? as instruções no banco de dados seriam melho via string sql, e execute, ou via parameters?
Uma luz, por favor! qual melhor forma?
grato
PAULOOLIVEIRA,
Mas você vai programar C# + Asp.Net (Web Forms) ou C# (Windows Forms)?
Para WebForms usa-se atualmente o MVC (Pode colocar 3 camadas dentro dele também).
Windows Forms, pode-se usar 3 camadas, fica bem interessante o resultado ... veja este exemplo:
=====================================================
SISTEMA EXEMPLO CLIENTE / PRODUTO DE LOJA
http://www.vbmania.com.br/index.php?modulo=detalhe&id=9259
=====================================================
Seria isso?
[][ô]s,
Tunusat.
Mas você vai programar C# + Asp.Net (Web Forms) ou C# (Windows Forms)?
Para WebForms usa-se atualmente o MVC (Pode colocar 3 camadas dentro dele também).
Windows Forms, pode-se usar 3 camadas, fica bem interessante o resultado ... veja este exemplo:
=====================================================
SISTEMA EXEMPLO CLIENTE / PRODUTO DE LOJA
http://www.vbmania.com.br/index.php?modulo=detalhe&id=9259
=====================================================
Seria isso?
[][ô]s,
Tunusat.
Tunusat, bom dia!
Já fiz alguma coisa no metodo 3 camadas... duvidas:
3 camadas é o melhor ? qual outras opcoes?
Para trabalhar com dados, o insert no bd, a melhor forma seria esta:
cmd.Connection = cn;
cmd.CommandText = [Ô]insert into Produtos (nome, preco, estoque) values (@nome, @preco, @estoque)[Ô];
cmd.Parameters.AddWithValue([Ô]@nome[Ô], produto.Nome);
cmd.Parameters.AddWithValue([Ô]@preco[Ô], produto.Preco);
cmd.Parameters.AddWithValue([Ô]@estoque[Ô], produto.Estoque);
cn.Open();
produto.Codigo = Convert.ToInt32(cmd.ExecuteScalar());
ou esta mais parecido com o vb...
MySqlCommand cmd = new MySqlCommand([Ô]INSERT INTO temp_ates(numero, nome, empresa, proximo_exame) [Ô]
+[Ô] SELECT numero, nome, empresa, proximo_exame FROM ficha [Ô]
+ [Ô]WHERE ficha.proximo_exame >= [ô][Ô] + global.data1 + [Ô][ô] [Ô]
+[Ô] AND ficha.proximo_exame <= [ô][Ô] + global.data2 + [Ô][ô]; [Ô]
+[Ô]COMMIT;[Ô], conexao);
cmd.ExecuteNonQuery();
Grato
Já fiz alguma coisa no metodo 3 camadas... duvidas:
3 camadas é o melhor ? qual outras opcoes?
Para trabalhar com dados, o insert no bd, a melhor forma seria esta:
cmd.Connection = cn;
cmd.CommandText = [Ô]insert into Produtos (nome, preco, estoque) values (@nome, @preco, @estoque)[Ô];
cmd.Parameters.AddWithValue([Ô]@nome[Ô], produto.Nome);
cmd.Parameters.AddWithValue([Ô]@preco[Ô], produto.Preco);
cmd.Parameters.AddWithValue([Ô]@estoque[Ô], produto.Estoque);
cn.Open();
produto.Codigo = Convert.ToInt32(cmd.ExecuteScalar());
ou esta mais parecido com o vb...
MySqlCommand cmd = new MySqlCommand([Ô]INSERT INTO temp_ates(numero, nome, empresa, proximo_exame) [Ô]
+[Ô] SELECT numero, nome, empresa, proximo_exame FROM ficha [Ô]
+ [Ô]WHERE ficha.proximo_exame >= [ô][Ô] + global.data1 + [Ô][ô] [Ô]
+[Ô] AND ficha.proximo_exame <= [ô][Ô] + global.data2 + [Ô][ô]; [Ô]
+[Ô]COMMIT;[Ô], conexao);
cmd.ExecuteNonQuery();
Grato
PAULOOLIVEIRA,
Pelo código acima você está trabalhando com Stored procedures.
A primeira forma trabalha com Stored Procedures ... é legal, mas não pode, de forma alguma, colocar as regras de negócio dentro do Banco de Dados (dentro da Stored procedure) ... motivo: Você que quebra o conceito de 3 camadas, pois existe uma camada somente para tratar as regras de negócio - BLL (Business Logic Layer).
A segunda forma você coloca somente dentro da DAL (Data Access Layer) ... bom ... a primeira também, mas no caso da primeira você só coloca os nomes das Storeds procedures e na segunda você coloca as querys completas.
Eu gosto mais da segunda forma, mas diz a lenda que a primeira forma é mais rápida (porém gera mais manutenção).
Em três camadas é importante você separar bem cada camada e jamais quebrar as regras.
Acho que depende muito do que você quer fazer... De qualquer forma você pode misturar técnicas e aproveitar o melhor de cada uma. Por exemplo: Você pode criar para determinadas situações que poderão ocorrer no seu sistema [Ô]designer patterns[Ô], por exemplo.
[][ô]s,
Tunusat.
Pelo código acima você está trabalhando com Stored procedures.
A primeira forma trabalha com Stored Procedures ... é legal, mas não pode, de forma alguma, colocar as regras de negócio dentro do Banco de Dados (dentro da Stored procedure) ... motivo: Você que quebra o conceito de 3 camadas, pois existe uma camada somente para tratar as regras de negócio - BLL (Business Logic Layer).
A segunda forma você coloca somente dentro da DAL (Data Access Layer) ... bom ... a primeira também, mas no caso da primeira você só coloca os nomes das Storeds procedures e na segunda você coloca as querys completas.
Eu gosto mais da segunda forma, mas diz a lenda que a primeira forma é mais rápida (porém gera mais manutenção).
Em três camadas é importante você separar bem cada camada e jamais quebrar as regras.
Acho que depende muito do que você quer fazer... De qualquer forma você pode misturar técnicas e aproveitar o melhor de cada uma. Por exemplo: Você pode criar para determinadas situações que poderão ocorrer no seu sistema [Ô]designer patterns[Ô], por exemplo.
[][ô]s,
Tunusat.
Estou no ASP.NET mas não em MVC e sim em 3 camadas com NHibernate. A produtividade é imensa, só o fato de não escrever SELECT, INSERT, UPDATE E DELETE, ajuda demais. De vez em quando uso HQL para fazer alguns Selects mas é raro.
Citação:cmd.Parameters.AddWithValue([Ô]@nome[Ô], produto.Nome);
cmd.Parameters.AddWithValue([Ô]@preco[Ô], produto.Preco);
cmd.Parameters.AddWithValue([Ô]@estoque[Ô], produto.Estoque);
PAULOOLIVEIRA, sem sombra de dúvidas a melhor forma é usando os Parameters. Se você não fizer isso, algum malfeitor poderá usar a injeção sql contra a sua base de dados e você ficará completamente indefeso. Jamais deixe de usá-los, pois isso, hoje em dia, é praticamente obrigatório.
http://www.macoratti.net/sql_inj.htm
Citação:Gostaria de receber a opinião e vocês quanto ao melhor método de programação em c#. Seria MVC ?
Muitas pessoas trocam as bolas achando que o MVC é a mesma coisa que o projeto em camadas. Se o seu caso é esse, fique sabendo que MVC é apenas um padrão de projeto (ou arquitetural, como preferem alguns) para WEB.
Citação:3 camadas é o melhor ? qual outras opcoes?
O desenvolvimento em camadas é uma evolução que ocorreu de forma lenta e gradativa ao longo dos tempos, devido a necessidade de cada época. Com o advento da internet e do mundo mobile, tornou-se praticamente obrigatório sua aplicação, pois é uma maneira de organizarmos nossa estrutura para eventuais mudanças.
Objetivo da arquitetura em camadas:
– Modularidade: dividir a aplicação em módulos tão independentes quanto possÃvel;
– Manutenibilidade: reduzir o custo de manutenção da aplicação;
– Extensibilidade: permitir que novas funcionalidades sejam adicionadas sem grande impacto nas já existentes;
– Reusabilidade: permitir que classes e componentes sejam reusados em outros módulos da mesma aplicação ou em outras aplicações.
Muito Grato a todos companheiros , suas colocações foram muito esclarecedoras.
Tópico encerrado , respostas não são mais permitidas