为了学习ASP.NET MVC,我正在考虑创建一个像SO这样的社区论坛,人们可以对帖子,用户等进行评分,从而获得积分。我无法弄清楚每当动作完成时(应该在上/下评级后,用户创建新帖子等)是否应该将点添加到用户配置文件中,或者是否应该根据用户所做的不同活动来计算
对于这两种方式,我有一些专业人士和骗子:
添加评分:
临: 更容易实现,更快,更少资源。
缺点: 如果不同活动的价值发生变化,您就无法做任何事情。 没办法显示你如何获得积分的历史。
计算评分:
临: 为用户和查看帐户的人员提供点历史要容易得多。 可以改变特定活动的积分数。
缺点: 实施起来有点困难。 更广泛的资源(可以通过缓存数据或创建计算点数的工作来防止)。
答案 0 :(得分:2)
我认为你几乎想到了一切。我可以提供一些工程技巧。所有事情都是平等的,总是以更容易实现的方式开始。
现在有一些缺点正如你所说,所以他们不相同,他们不提供相同的功能。所以你能没有历史吗?如果没有,先实施计算。你的模型很紧凑,定义很好,总是很好。
如果您稍后确定这太麻烦了,那么您是否只需要使用缓存或作业来修复它。顺便说一下好主意。 90%的时间,除非你真的测量它,否则你将在不必要的优化上努力。不必要的优化是错误的。
答案 1 :(得分:2)
看起来你正在尝试构建类似stackoverflow的东西,而Stackoverflow确实有你的积分来自的历史。当你使用linq时,计算方法可以完全在SQL中完成,而不需要花费很多精力来编程技巧。 (虽然它比普通的linq查询更先进)
我会选择第二种选择,仅仅因为它更有趣,你将会更多地了解linq,缓存和MVC。
答案 2 :(得分:0)
您可以使用ActionFilter类来捕获添加/删除用户点的每个操作。像AuditActionFilter类一样。这可以通过将动作过滤器属性放在相应方法之上来完成。在审计操作过滤器类中,您可以使用filterContext对象确定执行哪种方法的简易性,并跟踪平面文件或xml中每个用户的点的进度,您可以在他想要查看其历史记录时显示/解析。< / p>