为了学习ASP.NET MVC,我正在考虑创建一个类似这样的社区论坛,在那里人们可以对帖子、用户等进行评分,用户也可以因此获得积分。我只是不知道当一个动作完成时,是否应该将这些点添加到用户配置文件中(上传/降级,用户创建新的帖子等等)。或者应该根据用户所做的不同活动进行计算。
我有两种方法的正反两种:
添加评级:
Pro:更容易实现,速度更快,资源消耗更少。
如果不同活动的价值发生变化,你就什么也做不了。没有办法展示你如何得到你的观点的历史。
计算等级:
支持:对于用户和查看帐户的人来说,拥有一个点历史记录要容易得多。改变给定活动的点数的可能性。
更难实现。更广泛的资源(可以通过缓存数据或创建计算点数的作业来防止)。
发布于 2010-09-01 11:06:22
我想你已经考虑过一切了。我可以提供一些工程技巧。所有的事情都是平等的,总是从更容易实现的开始。
就像你说的,有一些缺点,所以它们是不平等的,它们不提供相同的功能。所以没有历史你还能活下去吗?如果没有,则首先实现计算。您的模型将是紧凑和明确的,这总是很好的。
如果稍后您确定这是cpu密集型的,那么只有这样,您才会使用缓存或作业来修复它。都是好主意,顺便说一句。90%的时间,除非你真的测量它,否则你会在不必要的优化上费劲。不必要的优化是错误的。
发布于 2010-09-01 11:12:55
看起来,您正在尝试构建类似于堆栈溢出的东西,而stackoverflow确实有您的观点来源的历史。当您使用linq时,计算方法可以完全在SQL中完成,而无需花费大量的编程技巧。(虽然它比普通的linq查询要高级一些)
我选择第二个选项,仅仅是因为它更有趣,您将从总体上了解更多关于linq、缓存和MVC的知识。
发布于 2010-09-01 11:15:01
您可以使用ActionFilter类捕获添加/删除用户点的每个操作。就像AuditActionFilter课。这可以通过将action filter属性放在相应方法的顶部来完成。在审核操作过滤器类中,您可以使用filterContext对象判断哪种方法易于执行,并跟踪平面文件或xml中每个用户的点的进度,当用户想要查看他的历史时,可以显示/解析。
https://stackoverflow.com/questions/3596417
复制相似问题