私はストアドプロシージャのファンではありません
ストアドプロシージャは、次の理由により、より保守しやすくなっています。* SQLを変更するたびにC#アプリを再コンパイルする必要がない
とにかく、データ型が変更されたり、追加の列などを返したりする場合は、再コンパイルすることになります。アプリの下からSQLを「透過的に」変更できる回数は、全体としてかなり少ない
C#を含むプログラミング言語には、関数と呼ばれる驚くべき機能があります。つまり、同じコードブロックを複数の場所から呼び出すことができます。すごい!次に、再利用可能なSQLコードをこれらの1つに配置できます。または、本当にハイテクにしたい場合は、それを行うライブラリを使用できます。それらはオブジェクトリレーショナルマッパーと呼ばれ、最近ではかなり一般的です。
コードの繰り返しは、メンテナンス可能なアプリケーションを構築しようとしているときにできる最悪のことです。
同意します。これが、storedprocが悪いことである理由です。コードを関数にリファクタリングおよび分解(小さな部分に分解)する方が、SQLにブロックするよりもはるかに簡単です... SQLのブロックですか?
同じSQLコードを使用する4つのWebサーバーと多数のWindowsアプリがあります。SQlコードに小さな問題があることに気付いたので、むしろprocを1か所で変更するか、コードをすべてにプッシュします。ウェブサーバー、すべてのウィンドウボックスにすべてのデスクトップアプリを再インストールします(クリックすると解決する場合があります)
Windowsアプリが中央データベースに直接接続しているのはなぜですか?それはまさに巨大なセキュリティホールのようであり、サーバー側のキャッシュを除外する際のボトルネックになっています。彼らはウェブサービスまたはあなたのウェブサーバーと同様のものを介して接続すべきではありませんか?
では、1つの新しいsproc、または4つの新しいWebサーバーをプッシュしますか?
この場合、1つの新しいsprocをプッシュする方が簡単ですが、私の経験では、「プッシュされた変更」の95%はデータベースではなくコードに影響します。その月に20個をWebサーバーにプッシュし、1個をデータベースにプッシュする場合、代わりに21個をWebサーバーにプッシュし、ゼロをデータベースにプッシュしてもほとんど損失はありません。
コードのレビューがより簡単になります。
どのように説明できますか?わかりません。特に、sprocはおそらくソース管理に含まれていないため、WebベースのSCMブラウザーなどからはアクセスできません。
その他の短所:
Storedprocはデータベース内に存在し、外部からはブラックボックスとして表示されます。ソース管理にそれらを入れたいというような単純なことは悪夢になります。
まったくの努力の問題もあります。フォーラムを構築するために700万ドルの費用がかかる理由をCEOに正当化しようとする場合、すべてを100万の階層に分解することは理にかなっているかもしれません。利益。