Не съм фен на съхранените процедури
Съхранените процедури са ПО-поддържаеми, защото:* Не е нужно да прекомпилирате вашето C# приложение, когато искате да промените някакъв SQL
Така или иначе ще го прекомпилирате, когато типовете данни се променят, или искате да върнете допълнителна колона, или каквото и да е. Броят пъти, когато можете „прозрачно“ да промените SQL отдолу на приложението си, като цяло е доста малък
- В крайна сметка ще използвате повторно SQL код.
Езиците за програмиране, включително C#, имат това невероятно нещо, наречено функция. Това означава, че можете да извикате един и същ блок код от множество места! Удивително! След това можете да поставите повторно използваемия SQL код в един от тях или ако искате да получите наистина високи технологии, можете да използвате библиотека, която го прави вместо вас. Вярвам, че се наричат Обектно релационни картографи и са доста често срещани в наши дни.
Повторението на кода е най-лошото нещо, което можете да направите, когато се опитвате да създадете поддържащо приложение!
Съгласен съм, ето защо storedprocs са нещо лошо. Много по-лесно е да преработите и разложите (разбиете на по-малки части) код във функции, отколкото SQL в... блокове от SQL?
Имате 4 уеб сървъра и куп приложения за Windows, които използват един и същ SQL код. Сега разбрахте, че има малък проблем със SQL кода, така че предпочитате да промените процеса на едно място или да натиснете кода на всички уеб сървърите, преинсталирайте всички приложения за настолни компютри (кликване може да помогне) във всички кутии на Windows
Защо вашите приложения за Windows се свързват директно към централна база данни? Това изглежда като ОГРОМНА дупка в сигурността точно там и пречка, тъй като изключва кеширане от страна на сървъра. Не трябва ли да се свързват чрез уеб услуга или подобно на вашите уеб сървъри?
И така, натиснете 1 нов sproc или 4 нови уеб сървъра?
В този случай е е по-лесно е да натиснете един нов sproc, но според моя опит 95% от „избутаните промени“ засягат кода, а не базата данни. Ако изпращате 20 неща към уеб сървърите през този месец и 1 към базата данни, едва ли губите много, ако вместо това изпратите 21 неща към уеб сървърите и нула в базата данни.
По-лесен преглед на кода.
Можете ли да обясните как? Не разбирам това. Особено като се има предвид, че sprocs вероятно не са в контрола на източника и следователно не могат да бъдат достъпни чрез уеб-базирани SCM браузъри и т.н.
Още минуси:
Storedprocs живеят в базата данни, която се появява на външния свят като черна кутия. Прости неща като желанието да ги поставите в контрола на източника се превръщат в кошмар.
Съществува и въпросът за чистото усилие. Може да има смисъл да разбиете всичко на милион нива, ако се опитвате да оправдаете пред вашия главен изпълнителен директор защо просто им струва 7 милиона долара за изграждането на някои форуми, но в противен случай създаването на storedproc за всяко малко нещо е просто допълнителна магарешка работа без полза.