对《ASP.NET 入门经典》11.2节聊天室改进的想法
2006-04-24 01:10
417 查看
关键字:《ASP.NET 1.1 入门经典》 Application Session 聊天室 Web游戏 DEBUG
章节:11.2书上聊天室是用Application保存聊天信息,存储信息的对象(或者叫变量)就是String,包括发言者的姓名、内容。
有以下缺陷:
聊天记录全部存储在服务器端,占服务器资源,最好不要保留太多的聊天记录。
数据结构非常混乱,发言人信息、内容都交织在一起。
没有自动更新功能,只有发言提交,或者手动刷新才能看到新的聊天记录。
比较严重的问题:每一个发言者都可以清空服务器上的聊天记录。
改进:
聊天记录采用Session和Application结合的方法存储,Application存储一部分聊天记录(最新的),当某个用户登录后,将Application里的聊天记录复制到Session里。
某用户发言,聊天记录进Application,更新这个用户的Session。
Application的清理机制:
按存储量清理。设定一个值LogNum,最多存储多少条记录,超过这个值,丢掉最老的,腾出空间存放新的,先进先出。
按用户清理。保证每个用户都能看到所有的聊天记录。对每一条聊天记录设一个用户Session更新标志,当有用户发言,将其他所有用户更新都设未更新,并将该用户所有未更新的聊天记录发送到Session里,将这些记录的该用户更新标志设已更新。清理所有用户都更新了的聊天记录。
方法1的优点:简单、灵活,保存的聊天记录的多少可以通过设置LogNumt的大小来确定;缺点:如果LogNum设小了,有用户会丢失一些聊天记录。
方法2的优点:所有用户都可以看到所有的聊天记录。缺点:过程复杂,服务器开销太大,最坏的情况服务器要保存最大聊天记录数-1条聊天记录,还有更新标志的开销。可以对用户数量进行控制,用户长时间不发言超时限制,以减小服务器开销。
聊天记录可以将发言人姓名、内容、时间等信息封装到一个类里,再将这个类装到一个队列。
将聊天页面用框架分开,发言部分为一个页面,聊天记录为一个页面,聊天记录页面设自动更新,可以缓解Application清理机制2的服务器开销问题。
还可以添加一些其他功能:
各个用户选择自己发言文字的颜色、字体、大小,甚至可以选择自己的头像
一对一、或者一对多(多对多)的私聊
应用:再加上一些规则,可以做类似杀人游戏的Web游戏。
DEBUG:
在照书上做例子的时候,代码输完了,但是点提交就是没有反应,聊天记录文本框里没有内容,聊天消息输入框里的内容也没有清空,将下载下来的原码试验,正常。对比C#程序,完全一致。后来对比HTML时,发现提交按钮的“onclick”被打成了“onclice”,造成了没有点击事件,所以程序完全没有反应。
章节:11.2书上聊天室是用Application保存聊天信息,存储信息的对象(或者叫变量)就是String,包括发言者的姓名、内容。
有以下缺陷:
聊天记录全部存储在服务器端,占服务器资源,最好不要保留太多的聊天记录。
数据结构非常混乱,发言人信息、内容都交织在一起。
没有自动更新功能,只有发言提交,或者手动刷新才能看到新的聊天记录。
比较严重的问题:每一个发言者都可以清空服务器上的聊天记录。
改进:
聊天记录采用Session和Application结合的方法存储,Application存储一部分聊天记录(最新的),当某个用户登录后,将Application里的聊天记录复制到Session里。
某用户发言,聊天记录进Application,更新这个用户的Session。
Application的清理机制:
按存储量清理。设定一个值LogNum,最多存储多少条记录,超过这个值,丢掉最老的,腾出空间存放新的,先进先出。
按用户清理。保证每个用户都能看到所有的聊天记录。对每一条聊天记录设一个用户Session更新标志,当有用户发言,将其他所有用户更新都设未更新,并将该用户所有未更新的聊天记录发送到Session里,将这些记录的该用户更新标志设已更新。清理所有用户都更新了的聊天记录。
方法1的优点:简单、灵活,保存的聊天记录的多少可以通过设置LogNumt的大小来确定;缺点:如果LogNum设小了,有用户会丢失一些聊天记录。
方法2的优点:所有用户都可以看到所有的聊天记录。缺点:过程复杂,服务器开销太大,最坏的情况服务器要保存最大聊天记录数-1条聊天记录,还有更新标志的开销。可以对用户数量进行控制,用户长时间不发言超时限制,以减小服务器开销。
聊天记录可以将发言人姓名、内容、时间等信息封装到一个类里,再将这个类装到一个队列。
将聊天页面用框架分开,发言部分为一个页面,聊天记录为一个页面,聊天记录页面设自动更新,可以缓解Application清理机制2的服务器开销问题。
还可以添加一些其他功能:
各个用户选择自己发言文字的颜色、字体、大小,甚至可以选择自己的头像
一对一、或者一对多(多对多)的私聊
应用:再加上一些规则,可以做类似杀人游戏的Web游戏。
DEBUG:
在照书上做例子的时候,代码输完了,但是点提交就是没有反应,聊天记录文本框里没有内容,聊天消息输入框里的内容也没有清空,将下载下来的原码试验,正常。对比C#程序,完全一致。后来对比HTML时,发现提交按钮的“onclick”被打成了“onclice”,造成了没有点击事件,所以程序完全没有反应。
相关文章推荐
- ASP.NET 2.0数据库入门经典(第4版)
- ASP.NET 2.0 新手SQL存储过程简单实例入门 绝对经典入门
- ASP.NET 2.0 新手SQL存储过程简单实例入门。绝对经典入门
- ASP.NET入门随想之抽象的力量(经典!!!)
- ASP.NET 2.0入门经典学习笔记.txt
- ASP.NET入门教程(经典)
- 终于把《ASP.NET 1.1入门经典—— VISUAL C# .NET 2003编程篇》买回来了
- 《ASP.NET 3.5 入门经典》学习
- 第64页的例子(ASP.NET入门经典1.1)的问题!
- ASP.NET 2.0数据库入门经典(第4版)
- 经典正则表达式 - 清清月儿 .NET万花筒 Asp.net技术 Asp.net教程 Asp.net源码 Asp.net基础 Asp.net控件 Asp.net入门 - CSDNBlog
- ASP.NET入门教程(经典)
- ASP.NET 2.0数据库入门经典(第4版)抢先试读
- asp.net mvc 入门经典文摘
- ASP.NET 2.0 新手SQL存储过程简单实例入门 绝对经典入门
- ASP.NET经典面试题
- 转 ASP.NET主题入门(Theme)
- asp.net页面生命周期(经典)
- 【ASP.NET Core快速入门】(三)准备CentOS和Nginx环境