LA.Net
Reflexões sobre C#, .Net e programação em geral

Pois é, parece que afinal o meu post inicial resultante de uma discussão muito interessante ocorrida na lista microsoft.public.pt.dotnet consegui pôr pelo menos uma pessoa a pensar no assunto (não é verdade Nuno?). Em relação aos argumentos apresentados pelo Nuno no seu post, concordo com alguns deles. É verdade que o uso de SPs dá muito jeito em certas ocasiões. Contudo, tenho de discordar em relação à comparação do código escrito pela Compta vs ATX...em primeiro lugar, uma SP com centenas de linhas de código é algo que implica a definição dum algoritmo complexo no lado do servidor sql. Pode ser indicado para colocar os professores (aliás, como deves ter visto no post anterior, a verdade é que a coisa não correu lá muito bem...), mas nunca numa aplicação distribuída...imagina o que é correr 100 pedidos com esse código todo no servidor...ainda por cima, se estiveres numa transacção, o acesso ás tabelas é bloqueado até que a transacção termine...muito engraçado..portanto, uma aplicação distribuída nunca vai utilizar uma estratégia dessas...como tu dizes e bem, é adequado em algumas situações. E pelo que tu descreves, nesse caso  o objectivo era construir um algoritmo que fizesse o processamento da informação (e esse processamento iria correr de forma isolada)

 Uma coisa interessante (e que acho que não foi bem explicada) prende-se com os selects, insert, updates e deletes simples. É que se construires um modelo OO de acesso a base de dados vais verificar que na prática acabaram todas as instruções "complicadas" (incluindo cursores, etc, etc). Experimenta resolver um problema simples desta forma e quando deres por ti, já só estás a escrever instruções simples de sql (por exemplo, nesta semana estou a acabar um projecto em que a reutilização é muito importante; então optei por construir um modelo de objectos e, que os relacionamentos de 1 para n são representados através de colecções e em que uma operação sobre o elemento principal desencadeia automaticamente todas as operações semelhantes sobre os outros objectos associados - e, como é óbvio, cada objecto encapsula uma tabela).

Claro que concordo contigo no que diz respeito à utilização de SPs em várias situações. Por exemplo, num dos projectos que trabalhei, tinha a necessidade construir um historico dos meus dados. Por isso, todas as tabelas continham uma tabela duplicada com o nome nome_tabela_Historico por forma a ser possivel manter o historial dos dados ao longo do tempo. Neste caso, optei por utilizar SPs porque tinha de escrever algumas instruções em sql e achei que um SP era adequado.

Em relação ao C++, não posso acrescentar mais nada...apenas que, por infelicidade minha, estou condenado a não utilizá-lo nos próximos tempos (o resto do pessoal não gosta muito do C++; basta falar nisso e já começa toda a gente a fugir :) )

posted on Thursday, October 21, 2004 6:35 PM
Comments
  • # re: Stored procedures - parte II
    Pedro Santos
    Posted @ 10/21/2004 10:23 PM
    Por acaso já tinha discutido muito com o Nuno sobre todas as coisas que faláste no teu post. Para mim, que só vim ver a bola, mando logo os SP's fora por uma razão muito simples: manuntenção!

    Tenho dito!
  • # re: Stored procedures - parte II
    Nuno Silva
    Posted @ 10/22/2004 11:14 PM
    Eu não concordo ctg sobre essa da manutenção. Acho que uma das vantagens do Sp é realmente essa. Chegaras à Bd e Substituires um SP pela nova versão sem tocares numa linha do teu código. Adição de novas funcionalidades claro que é um pouco mais dificil... Claro que eu aqui n tou a falar de SP's simples pq esses concordo inteiramente com o Luis. Agora Sp's complexos.... mas pronto isto é uma daquelas guerras de surdos (como já disse). Como o Luis disse, esperemos pelo Yukkon para ver o que nos espera
  • # re: Stored procedures - parte II
    Nuno Silva
    Posted @ 10/22/2004 11:17 PM
    esqueci-me de uma coisa: com adição de adição de novas funcionalidades implicava claro adição de novos parâmetros.
    Como o pre disse e muito bem: Tenho dito
  • # re: Stored procedures - parte II
    Luis Abreu
    Posted @ 10/23/2004 12:17 AM
    Nuno, acredita no que te digo: a nivel de manutencao ganhas muito muito pouco. Exemplo: hoje tive de alterar um subprojoecto devido ao facto de termos descoberto um bug na aplicacao principal (e uma aplicacao de base de dados geo-referenciadas) q n permite a utilizacao de colunas bigint, decimal e timestamp. Tivemos de mudar os bigints todos para int! Como neste subprojecto tinha o codigo sql embebido, so tive de alterar o tipo do parametro; se tivesse num sp tinha de alterar o tipo do parametro no codigo C# e no SP (parece-me que alterar em dois lugares e mais complicado do que num so!)
  • # re: Stored procedures - parte II
    Pedro Santos
    Posted @ 10/23/2004 9:49 AM
    Dois? Tens de alterar todos os SP's relativos a uma tabela e também o código para adicionar mais um parâmetro. Fazer update a SP's de CRUD é uma seca, eu sei que já senti isso bem na pele.

    E Nuno, quando se fala em manuntenção é inserção ou remoção de novas funcionalidades! ;-)
Title  
Name  
Url
Box Code
Protected by FormShield
Comments