2011-06-15 57 views
0

我目前正在一個實體框架尚未實現的Silverlight/MS SQL項目中工作,我想知道在這種特殊情況下處理計算字段的最佳做法是什麼。我們應該在哪裏計算字段?

考慮到某些外部系統也可能直接在數據庫或通過Web服務使用我的數據,以下是我現在可以看到的3個選項。

1)強制任何外部系統通過Web服務使用數據,並僅在對象中創建所有計算的字段。

2)每次需要計算一個值時,在數據庫視圖中創建計算字段並與服務器重新同步對象。

3)複製對象和數據庫視圖中的計算規則。

任何其他建議也將受到歡迎。

回答

3

我建議遵循兩個原則:數據解耦和最小功能重複。兩者都會建議將您的計算僅限於一個地方,並且已經計算出來。所以我會在數據庫中實現計算,並通過Web服務提供它們。

但是,您必須考慮您的具體情況。例如,如果計算非常繁重,則可以將它們委派給客戶端以騰出服務器資源。這甚至可能是您使用Silverlight的原因。我在一個項目中遇到了類似的情況,並且我發現最好的折衷辦法是將原始數據推送給客戶端,並使其執行大量計算。

1

對於這類問題,有一個最佳實踐或方法是困難的,因爲情況改變了以前一個好的方法可能開始看起來不太有用。這表示在可能的情況下,我會做任何數據庫級別的相關數據,包括計算字段。這樣你就知道無論你在哪裏看數據,你都會看到相同的結果。因此,您的Web服務,SQL報告以及需要查看或接收數據的其他任何內容都會看到相同的結果。