2010-08-29 17 views
3

要學習ASP.NET MVC,我正在考慮創建一個像SO這樣的社區論壇,人們可以對帖子,用戶等進行評分,從而用戶可以獲得積分。我只是無法弄清楚,每當一個動作完成後,這些積分是否應該添加到用戶配置文件中(帖子評分上/下,用戶創建新帖子等),還是應該根據用戶完成的不同活動來計算。計算社區驅動站點的評分/點數

我有幾個親的和反對的做這件事的兩種方式:

添加評價:

臨: 更容易實現,而且速度更快,資源較少。

騙局: 如果不同活動的價值發生變化,您無法對此做任何事情。 沒有辦法顯示你如何得到你的觀點的歷史。

計算等級:

臨: 更容易有一個點的歷史記錄用戶和人們觀看兼顧。 可以更改給定活動的積分數量。

Con: 稍微難以實施。 更廣泛的資源(可以通過緩存數據或創建計算點的作業來防止)。

回答

2

我想你幾乎想到了一切。我可以提供一些工程技巧。所有事情都是平等的,總是從容易實施的開始。

現在有一些與你說的不一致,所以他們不平等,他們不提供相同的功能。那麼你可以沒有歷史的生活?如果不是,則先執行計算。你的模型將會很緊密,定義良好,總是很好。

如果您稍後確定這太密集CPU了,那麼您是否需要使用緩存或作業修復它。好想法,兩者,順便說一句。 90%的時間,除非你真正衡量它,否則你會在沒有必要的優化上努力。不必要的優化是錯誤的。

+0

謝謝,我喜歡關於不必要的優化。 – Dofs 2010-09-01 15:07:43

2

它看起來像你正在試圖建立像stackoverflow的東西,並且Stackoverflow確實有你的點來自的歷史。當你使用linq時,計算方法可以完全用SQL來完成,而不需要編程技巧。 (儘管它比普通的linq querys更高級一些)

我想去第二個選擇,僅僅因爲它更有趣,你會更多地瞭解linq,緩存和MVC整體。

0

您可以使用ActionFilter類捕獲每個添加/刪除用戶點的操作。像AuditActionFilter類一樣。這可以通過將操作過濾器屬性放在相應方法的頂部來完成。在審計操作過濾器類中,您可以使用filterContext對象計算出哪種方法可以執行簡易性,並在平面文件或xml中跟蹤每個用戶的點的進度,當他想查看其歷史記錄時,可以顯示/解析該點。

+0

這聽起來像一個更難的方法比通過檢索所有後創建的x 5點(或類似)來計算點。 – Dofs 2010-09-01 15:08:35