一个在线用户统计程序源码

来源:互联网 发布:3d打印切片算法 编辑:程序博客网 时间:2024/05/05 07:55

下载地址:

http://www.bincess.cn/onlineuserservice.txt

使用方法,请参考下面的代码:

using System;
using System.Collections.Generic;
using System.Text;
using System.Web;

namespace Bincess.WebForum
{
 public class MyHttpModule : System.Web.IHttpModule
 {
  #region 类 MyHttpModule 构造器
  /// <summary>
  /// 类 MyHttpModule 默认构造器
  /// </summary>
  public MyHttpModule()
  {
  }
  #endregion

  #region IHttpModule 成员
  public void Init(HttpApplication application)
  {
   application.PreRequestHandlerExecute += new EventHandler(Application_PostRequestHandlerExecute);
  }

  public void Dispose()
  {
  }
  #endregion

  /// <summary>
  /// 当用户请求页面,并且其 Session 已经被建立时
  /// </summary>
  private void Application_PostRequestHandlerExecute(object sender, EventArgs e)
  {
   OnlineUserService.OnlineUser onlineUser = new OnlineUserService.OnlineUser();

   // 设置在线用户名称
   onlineUser.NickName = HttpContext.Current.Session["NickName"] as string;
   // 当前用户所请求的 URL 地址
   onlineUser.RequestURL = HttpContext.Current.Request.RawUrl;
   // 活动时间
   onlineUser.ActiveTime = DateTime.Now;

   // 保存在线用户信息
   OnlineUserService.Instance.Persist(HttpContext.Current.Session.SessionID, onlineUser);
  }
 }
}

在服务器每次处理请求时,将 Session 信息、请求地址、当前时间包装成一个 OnlineUser 类对象,之后传入到 Persist 方法。

OnlineUserService 仅有一个 Persist 方法被公开,这保证了代码外露接口的单一性,易于维护。

对于多线程环境是安全的,在代码中使用了加锁,在不同的场合分别对 数据表 和 数据行 进行加锁,保证数据同步……

其他说明,代码中已经写的比较详细
 

原创粉丝点击