Non sono un fan delle procedure memorizzate
Le Stored procedure sono PIÙ gestibili perché: * Non è necessario ricompilare l'app C # ogni volta che si desidera modificare alcuni SQL
Finirai comunque per ricompilarlo quando cambiano i tipi di dati, o vuoi restituire una colonna aggiuntiva o qualsiasi altra cosa. Il numero di volte in cui è possibile modificare in modo 'trasparente' l'SQL da sotto l'app è piuttosto piccolo nel complesso
- Si finisce per riutilizzare il codice SQL.
I linguaggi di programmazione, incluso C #, hanno questa cosa meravigliosa, chiamata funzione. Significa che puoi invocare lo stesso blocco di codice da più punti! Sorprendente! È quindi possibile inserire il codice SQL riutilizzabile all'interno di uno di questi o, se si desidera ottenere una tecnologia molto avanzata, è possibile utilizzare una libreria che lo fa per te. Credo che si chiamino Object Relational Mapper e sono abbastanza comuni in questi giorni.
La ripetizione del codice è la cosa peggiore che puoi fare quando stai cercando di creare un'applicazione gestibile!
D'accordo, ecco perché i processi memorizzati sono una cosa negativa. È molto più semplice riformattare e decomporre (suddividere in parti più piccole) il codice in funzioni rispetto a SQL in ... blocchi di SQL?
Hai 4 server web e un sacco di app di Windows che usano lo stesso codice SQL Ora hai capito che c'è un piccolo problema con il codice SQl, quindi preferisci ...... cambiare il proc in 1 posto o spingere il codice a tutti i server web, reinstallare tutte le app desktop (clickonce potrebbe aiutare) su tutte le finestre
Perché le tue app di Windows si collegano direttamente a un database centrale? Sembra un enorme buco nella sicurezza proprio lì, e un collo di bottiglia in quanto esclude la cache sul lato server. Non dovrebbero connettersi tramite un servizio Web o simili ai tuoi server Web?
Quindi, spingere 1 nuovo sproc o 4 nuovi server web?
In questo caso è più semplice inviare un nuovo sproc, ma nella mia esperienza, il 95% delle "modifiche inviate" influisce sul codice e non sul database. Se stai inviando 20 cose ai server web quel mese, e 1 al database, difficilmente perderai molto se invece spingi 21 cose ai server web e zero al database.
Più facilmente revisione del codice.
Puoi spiegare come? Non capisco. In particolare visto che gli sproc probabilmente non sono nel controllo del codice sorgente e quindi non è possibile accedervi tramite browser SCM basati sul Web e così via.
Più contro:
Storedprocs vive nel database, che appare al mondo esterno come una scatola nera. Cose semplici come voler metterle nel controllo del codice sorgente diventano un incubo.
C'è anche il problema del puro sforzo. Potrebbe essere sensato suddividere tutto in un milione di livelli se stai cercando di giustificare al tuo CEO perché costano solo 7 milioni di dollari per costruire alcuni forum, ma altrimenti creare un processo memorizzato per ogni piccola cosa è solo un asino in più per no beneficio.