web-dev-qa-db-ja.com

ビジネスロジックをデータベースからビジネスレイヤーに移行する(.NETテクノロジ)

ASP.NETテクノロジで実行されている既存のプロジェクトがあります。現在、ビジネスロジック計算全体がデータベースsProcs(MS SQL Server)で行われています。また、1日の忙しい時間帯に多くのユーザーが使用すると、アプリケーションが遅くなることがあります。

次に、ビジネスロジック処理の一部をDBから移動し、ビジネスレイヤー(C#)側で実行します。データベースからデータを取得して計算を行い、提供されたデータを再度DBに保存する方法を理解しようとしています。

DBから生データを取得し、XMLにシリアル化して、このXMLをBLレイヤーに渡すことができます。 BLレイヤーでは、XMLが強く型付けされたビジネスオブジェクトに逆シリアル化されます。次に、Linq-to-Objectを使用して、いくつかの操作(Sum、Avgなど)を実行できます。

あなたの提案でアドバイスしてください。

4
Karan

注意してください!私があなたを正しく理解していれば、あなたが説明することはlotより遅くなるでしょう.

Sum、Avgなどの集計操作は、SQLで実行するとかなり高速です。非常に大きなデータセットを操作する場合にのみ、速度が低下します。大きなデータセットがある場合、データセット全体をクライアントに転送し、そこで集計操作を実行するのは非常に遅くなります。 XMLへのシリアライズと再度デシリアライズを行うと、さらに遅くなります。

そもそもなぜパフォーマンスの問題が発生しているのか、慎重に調査する必要があります。ロックの問題や、非効率的なクエリが発生する可能性があります。

ビジネスロジックという用語は、しばしば広範に及ぶと思います。ビジネスロジックの一部のフォームはデータベースに属し、一部のフォームはクライアントに属します。データの結合、フィルタリング、または集計を実行するすべてのビジネスロジックは、データベースに属しています。これをクライアントに移動すると、恐ろしいパフォーマンスの問題が発生します。

8
JacquesB