2

ASP.NETアプリケーションでは、データベースに対して実行するために、かなり複雑で頻繁に使用される操作がいくつかあります。これらの操作では、いくつかのテーブルの1つ以上が、特定のテーブルの入力パラメーターと値の両方の論理評価に基づいて更新または挿入する必要があります。ロジックとデータアクセスの分離を維持しているので、操作は現在次のようになります。

  1. クライアントから受け取ったリクエスト
  2. ビジネスレイヤーはデータレイヤーを呼び出してデータベースからデータを取得します
  3. ビジネスレイヤーは結果を処理し、実行する操作を決定します
  4. ビジネスレイヤーは適切なデータ操作を呼び出します
  5. クライアントに送信された応答

ご覧のとおり、データベースに対して2つの個別の要求が行われている間、クライアントは待機し続けます。これに対する解決策を探しているときに、CLRストアドプロシージャを見つけましたが、それらが何に役立つかについて正しい考えがあるかどうかはわかりません。

上記のコードの代わりに、特にステップ2〜4をCLRSPに配置するものを作成しました。私の理解では、SPはSQL Serverによってローカルで実行され、サーバーに対して1回の呼び出しのみが行われます。

私の質問は基本的に、これはCLR SPの使用目的ですか、それとも何かが足りないのですか?

これは構造的に少し妥協していることを理解しているので、もっと良い方法があれば聞いてみたいと思います。

4

1 に答える 1

3

CLR procは、ストアドプロシージャでは実行が非常に難しい高度なクエリ処理を実行することを目的としています。私は、彼らがはるかに有益であるという非常に少数の状況に遭遇しました。それらはビジネスレイヤーの作業を目的としたものではありませんが、それは可能です。CLRプロシージャ内にすべてを埋め込むわけではありません。レイヤーの分離は、アプリで非常に有益です。コードを高速化する必要がある場合は、コードの問題点を特定するのに役立つ、利用可能なメモリ/コードプロファイラーを確認してください。

可能であれば、サーバー側のコードをAJAXコールバック、Webサービスなどに置き換えてください。これにより、実際に速度が向上します(少なくとも、より多くの非同期作業を実行できるようになります)。

HTH。

于 2010-03-22T15:13:51.293 に答える