【问题标题】:Last Activity Date - Better Ideas for implementation上次活动日期 - 更好的实施思路
【发布时间】:2012-01-30 12:25:46
【问题描述】:

对于我在 ASP.NET 网站中遵循的典型用户注册和会员系统,我想更新上次活动的日期和时间。以下哪种方法最适合遵循。

1

每当向从用户帐户表访问数据的方法发出请求时,使用GETDATE() 自动(O_o) 更新last_account_activity 日期

2

从成员系统调用方法后,将UpdateLastActivity()作为外部方法调用。

信息:

就可靠性而言,#2 是理想的,因为当用户积极使用来自其他表而不是用户帐户表的数据时,我不能依赖 #1。

你怎么看?你有其他方法让我做吗?

规格

.NET 框架 2.0

Asp.net 2.0

自定义成员资格提供程序实现

Sql Server 2005 数据库

【问题讨论】:

    标签: c# asp.net sql-server-2005 android-activity


    【解决方案1】:

    方法 2 优于 1。

    建议

    您可以以 异步 方式执行此操作。您只需触发 UpdateLastActivity() 方法并忘记结果。这样您的应用程序的性能就不会受到阻碍。

    希望这对你有用。

    【讨论】:

    • 当对象被缓存时,我用这种方法回复的效果如何?
    • 您可以在异步线程更新数据库后更新缓存对象。换句话说,一旦数据库成功更新,您的函数UpdateLastActivity() 将更新缓存对象。
    【解决方案2】:

    不清楚你的系统是如何构建的(因为它实际上是一个根点),但考虑到你说#2 解决方案更好(从调用路径的角度来看),我自然会选择更可靠的解决方案,除非它不会损害性能并且不会让我的用户感到沮丧。

    如果您正在处理DataBase(问题也不是很清楚),这里的常用方法是使用绑定到表的触发器。

    【讨论】:

    • 嗨 tigran,是的,我正在使用 sql server 2005 数据库和存储过程。您能否详细说明我如何使用触发器来实现这一点而不会让人头疼(哦,是的,我听说过Triggers trigger headcache's
    • 触发器也不令人头疼,就像它们执行的内容一样。您可以为表插入、更新、删除(如果需要)添加触发器,并使用当前时间更新上次活动日期。 好处是你避免了从客户端到服务器的往返,你应该非常小心并注意你在使用原始 SQL 时所做的事情,不容易调试,以防万一失败。
    【解决方案3】:

    我个人的意见是这些方法应该分开。这纯粹是因为方法的名称应该反映其目的。因此,将“更新”功能放在未命名的方法中并不是很好的做法。

    【讨论】:

      【解决方案4】:

      在我看来,这是一个设计模式问题。我不太了解您的架构,因此代码可能会更改,但我的基本想法是将每个活动定义为实现相同接口的类,如下所示:

      public interface IMemberActivity {
         void Execute(IMemberActivityLogger logger);
      }
      

      【讨论】:

        猜你喜欢
        • 2021-11-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-01
        • 1970-01-01
        • 2012-04-03
        相关资源
        最近更新 更多