21.3 搭建数据库
本项目使用SQL Server 2005数据库,创建一个名为“Liao”的数据库。该数据库包含了两个表:Message和User分别用于存储聊天内容和用户信息。
21.3.1 数据库设计
系统聊天内容信息表(Message)的具体设计结构如表21-1所示。
表21-1 系统聊天内容信息表
字 段 名 称 |
数 据 类 型 |
是 否 主 键 |
默 认 值 |
功 能 描 述 |
---|---|---|---|---|
ID |
int |
是 |
递增1 |
编号 |
Message |
varchar(1000) |
否 |
Null |
内容 |
UserID |
int |
否 |
Null |
用户编号 |
ChatID |
int |
否 |
Null |
聊天室编号 |
CreateDate |
datetime |
否 |
Null |
时间 |
系统用户信息表(User)的具体设计结构如表21-2所示。
表21-2 系统用户信息表
字 段 名 称 |
数 据 类 型 |
是 否 主 键 |
默 认 值 |
功 能 描 述 |
---|---|---|---|---|
ID |
int |
是 |
递增1 |
编号 |
Username |
varchar(1000) |
否 |
Null |
用户名 |
Password |
int |
否 |
Null |
密码 |
Status |
int |
否 |
Null |
状态 |
21.3.2 系统参数设置
系统参数设置功能由文件Global.asax和文件chat.cs实现。
1.文件chat.cs
文件chat.cs的功能是声明类UserInfo,用以封装保存当前登录用户的信息,并定义数据库访问层的操作方法。文件chat.cs中系统参数设置的实现代码如下。
namespace ASPNETAJAXWeb.AjaxChat
{
public class UserInfo
{
private int userID;
private int chatID = −1;
private string username;
public int ChatID
{
get
{
return chatID;
}
set
{
chatID = value;
}
}
public int UserID
{
get
{
return userID;
}
set
{
userID = value;
}
}
public string Username
{
get
{
return username;
}
set
{
username = value;
}
}
}
2.文件Global.asax
文件Global.asax的功能是:当系统项目启动时,初始化保存处理当前用户列表;当项目结束运行时,将用户列表信息清空。其主要实现代码如下。
// 保存登录用户的列表
public static List<UserInfo> Users = new List<UserInfo>();
void Application_Start(object sender, EventArgs e)
{ //登录用户列表初始化
Users.Clear();
}
void Application_End(object sender, EventArgs e)
{
}
void Application_Error(object sender, EventArgs e)
}
void Session_Start(object sender, EventArgs e)
{
//
}
void Session_End(object sender, EventArgs e)
{
if(Session["UserID"] != null)
{ //用户离开时,清空用户登录的信息
string userID = Session["UserID"].ToString();
foreach(UserInfo ui in Users)
{ //根据用户ID找到离开的用户
if(ui.UserID.ToString() == userID)
{
Users.Remove(ui);
break;
}
}
}
}
</script>
通过前面的开发流程可知,Global.asax文件也是一个重要的配置文件,有时也称其为ASP.NET应用程序文件,也提供了一种在一个中心位置响应应用程序级或模块级事件的方法。可以使用这个文件实现应用程序安全性以及其他一些任务。Global.asax位于应用程序根目录下。虽然Visual Studio.NET会自动插入这个文件到所有的ASP.NET项目中,但是它实际上是一个可选文件。删除它不会出问题——当然是在没有使用它的情况下。文件扩展名.asax指出它是一个应用程序文件,而不是一个使用 aspx 的 ASP.NET文件。Global.asax文件被配置为任何(通过URL的)直接HTTP请求都被自动拒绝,所以用户不能下载或查看其内容。ASP.NET页面框架能够自动识别出对Global.asax文件所做的任何更改。在 Global.asax被更改后,ASP.NET页面框架会重新启动应用程序,包括关闭所有的浏览器会话,去除所有状态信息,并重新启动应用程序域。