2012-02-03 93 views
0

我正在寫一個SQLServer數據庫的ASP.NET應用程序,其中我必須爲我的應用程序的成員計算費率。這些計算會影響超過10個數據庫表。我應該在哪裏編寫業務邏輯?在前端(業務層)還是在存儲過程中?

我相信我有兩個選擇:

  1. 在數據訪問層,取數據從數據庫中的第一個表的成員,並返回到業務層。一旦完成,對獲取的數據執行一些計算以生成要保存在第二個表中的新數據。最後,回到數據訪問層以保存結果。之後,重複這一整個過程,從第二個表中提取信息以計算要保存在第三個表中的結果,並繼續爲所有必要的表執行此操作。

  2. 使用存儲過程來封裝計算併爲數據庫事務中的正確表中的成員保存新費率。

你認爲哪種選擇最好,爲什麼?如果我使用第一個選項,應該如何在業務邏輯層的一個ADO.NET事務中執行所有插入和更新?我目前禁止在數據訪問層之外使用ADO.NET事務。

回答

0

IMO它取決於需要多少優先考慮性能和模塊化設計。

如果這是一個商業應用程序,我將不得不從不同的表瞬間計算出的價格,我會使用存儲過程

  • 性能表現,一定量的負荷,但是當它得到太多的查詢,然後一個分佈式數據庫變得至關重要
  • 一個缺點是,如果你想要移動到不同的數據庫在未來(在大多數情況下,人們不),那麼你必須端口的存儲過程的新的

我想要的另一個選擇是將大部分值保存在分佈式緩存中(如memcache),並在業務層中執行計算。

  • 這些值將預先填充到緩存中,並且緩存將在更改時進行刷新。
  • 這爲刪除數據庫依賴關係提供了靈活性。

但是在我看來,您的操作在功能上非常依賴數據庫,並建議存儲過程路由。如果您認爲緩存的第二種選擇是可行的,那麼值得一試。

相關問題