第四十三讲 ASP.NET实例编程(二)
* 摘要
。论坛
。在线聊天室
。网络硬盘
1、论坛概述
。论坛和留言板类似,但功能远远超过留言板。留言板只用于网站管理员收集用户意见;而论坛是开放给所有用户的,用户可以在论坛中讨论各种各样的问题。从一定意义上说,论坛是用户获取信息的最有效的手段。
。论坛也是各种网站设计中几乎都必不可少的一个模块。
。论坛的基本功能是张贴和浏览信息,另外还有添加回复和查询的功能。
2、基本数据表设计
ID:编号 Long 关键字
Subject:标题 字符(50)
Sender:发表人 字符(20)
Email:发布人邮件 字符(30)
Body:内容 字符(255)
SendDate:张贴时间 时间
Parent:回复文章编号
* 技术细节
。论坛内容的分层显示
-即初始化时只显示所有主题,如果该主题下有回复文章,则前面显示为“+”;没有回复文章,则显示“-”。对于下面的回复文章也按照此规则处理
-客户端的分层显示技术:使用Table嵌套,即每个Table就是一篇文章的下一级的所有回复文章的标题;使用JavaScript脚本。响应客户端单击事件
-服务端分层填充:使用递归实现,从数据库中读取相应数据。
。实现查询
-按照时间查询:首先要验证用户输入是否合法
-按照主题查询:用户模糊查询
。Subject like '%XML%'
-按照作者查询:
。包括该作者发表和回复的所有主题。
4、页面设计
。发布页面实现(Post.aspx)
。分层显示实现
。查询实现
* 聊天室
1、聊天室概述
。聊天室是网站上提供的最常见的服务,最早来自BBS站点
。建立聊天室相对来说比较复杂会设计到很多技术细节,比如处理用户掉线,无刷新技术,私聊等。
2、页面设计
。聊天室登录页面(Reg.aspx):
-用Application记录聊天室登录人数
-进入聊天室的用户昵称不能相同
。聊天室主界面:用Frame实现
-用户列表区:每2.5秒刷新一次
-聊天记录显示区(View.aspx)
-信息发布区(Send.aspx):发送时间,发送者,接受者,聊天内容
3、技术细节
。实现私聊
-即用户向他人发送信息,在其页面上显示“您悄悄地对......”,而在其好友屏幕上显示“......”悄悄地支你说......
-可以通过Application和Session实现
。无刷新聊天室实现,有两种技术:
-XMLHTTP:要求浏览器支持XML
-隐藏帧
* 隐藏帧使用
。使用隐藏帧刷新数据最重要的技术就是在两个Frame之间传送数据。同一数据在两个Frame的表单中显示,其中一个用于从服务器获取数据,为了避免刷新感,可以将这个Frame隐藏起来,另外一个Frame用于显示数据。当隐藏帧刷新完成页面后,将刷新的数据写到显示帧中,就实现了无刷新的效果。
3、技术细节
。用户上线,离线等公共信息发布
-在Reg.aspx中处理上线信息
-在Session_End中处理离线信息
。管理员权限:踢人功能
。用户掉线:通过检测该用户最后一次发言时间来确认
* 网络硬盘
* ASP.NET中文件操作
System.IO
.Diectory:用于创建,移动和枚举通过目录和子目录
.File:用于创建,复制,删除,移动和打开文件
.Path:对包含文件或目录路径信息的String实例执行操作
.StreamReader,StreamWriter:以一种特定的编码读写字符
* File类
。提供用于创建,复制,删除,移动和打开文件的静态方法,并协助创建FileStream对象
。File类的所有方法都是静态的,因而无需具有文件的实例就可被调用。
* FileStream
。FileStream对于在文件系统上读取和写入文件非常有用,FileStream缓存输入和输出,以获得更好的性能。
。FileStream类能够以同步或异步这两种模式之一打开文件,而且对同步方法(Read和Write)和异步方法(BeginRead和BeginWrite)有显著的性能影响
。在Windows系统中,如果输入输出数据小于64KB,则采用同步模式较好,而当大于64KB时,则最好采用异步模式。
* DirectoryInfo和FileInfo类
。Directory(File)类的所有方法都是静态的,因而无需具有目录的实例就可以被调用。DirectoryInfo(FileInfo)类只包含实例方法。
。Directory(File)类的静态方法对所有方法执行安全检查。如果打算多次重用一个对象,请考虑改用DirectoryInfo(FileInfo)的相应实例方法,因为安全检查并不总是必要的。