Ich bin kein Fan von gespeicherten Prozeduren
Gespeicherte Prozeduren können aus folgenden Gründen besser gewartet werden: * Sie müssen Ihre C # -App nicht neu kompilieren, wenn Sie SQL ändern möchten
Sie werden es ohnehin neu kompilieren, wenn sich die Datentypen ändern oder wenn Sie eine zusätzliche Spalte oder was auch immer zurückgeben möchten. Die Häufigkeit, mit der Sie das SQL unter Ihrer App "transparent" ändern können, ist insgesamt recht gering
- Am Ende wird SQL-Code wiederverwendet.
Programmiersprachen, einschließlich C #, haben diese erstaunliche Sache, die als Funktion bezeichnet wird. Dies bedeutet, dass Sie denselben Codeblock von mehreren Stellen aus aufrufen können! Tolle! Sie können dann den wiederverwendbaren SQL-Code in einen dieser Codes einfügen, oder wenn Sie wirklich High-Tech erhalten möchten, können Sie eine Bibliothek verwenden, die dies für Sie erledigt. Ich glaube, sie heißen Object Relational Mappers und sind heutzutage ziemlich verbreitet.
Code-Wiederholung ist das Schlimmste, was Sie tun können, wenn Sie versuchen, eine wartbare Anwendung zu erstellen!
Einverstanden, weshalb gespeicherte Prozesse eine schlechte Sache sind. Es ist viel einfacher, Code in Funktionen umzugestalten und zu zerlegen (in kleinere Teile zu zerlegen) als SQL in ... SQL-Blöcke?
Sie haben 4 Webserver und eine Reihe von Windows-Apps, die denselben SQL-Code verwenden. Jetzt haben Sie festgestellt, dass es ein kleines Problem mit dem SQl-Code gibt. Ändern Sie also lieber den Prozess an einer Stelle oder senden Sie den Code an alle Installieren Sie auf den Webservern alle Desktop-Apps (Clickonce kann hilfreich sein) auf allen Windows-Boxen neu
Warum stellen Ihre Windows-Apps eine direkte Verbindung zu einer zentralen Datenbank her? Das scheint genau dort eine RIESIGE Sicherheitslücke und ein Engpass zu sein, da es das serverseitige Caching ausschließt. Sollten sie nicht über einen Webservice oder ähnlich wie Ihre Webserver eine Verbindung herstellen?
Also 1 neuen Sproc oder 4 neue Webserver schieben?
In diesem Fall ist es ist einfacher , eine neue sproc zu schieben, aber nach meiner Erfahrung, 95% der ‚gedrückt Änderungen‘ beeinflusst den Code und nicht die Datenbank. Wenn Sie in diesem Monat 20 Dinge an die Webserver und 1 an die Datenbank senden, verlieren Sie kaum viel, wenn Sie stattdessen 21 Dinge an die Webserver und null an die Datenbank senden.
Einfacher Code überprüft.
Können Sie erklären, wie? Ich verstehe das nicht. Insbesondere, da die Sprocs wahrscheinlich nicht in der Quellcodeverwaltung sind und daher nicht über webbasierte SCM-Browser usw. aufgerufen werden können.
Weitere Nachteile:
Gespeicherte Prozesse befinden sich in der Datenbank, die der Außenwelt als Black Box angezeigt wird. Einfache Dinge wie der Wunsch, sie in die Quellcodeverwaltung zu bringen, werden zum Albtraum.
Es gibt auch das Problem der bloßen Anstrengung. Es mag sinnvoll sein, alles in eine Million Ebenen aufzuteilen, wenn Sie versuchen, Ihrem CEO zu rechtfertigen, warum es nur 7 Millionen Dollar gekostet hat, einige Foren zu erstellen, aber ansonsten ist das Erstellen eines gespeicherten Prozesses für jede Kleinigkeit nur zusätzliche Eselarbeit für Nein Vorteil.