2007年第5期福建电脑
基于ASP.NET技术的WEB论坛设计
李瑛,陈桂芳
(太原师范学院计算机系山西太原030012)
【摘要】:介绍了ASP.NET框架的体系结构及ASP.NET的优势,论述了基于ASP.NET的WEB论坛的设计方法和实现该论坛的关键技术。
【关键词】:ASP.NET,WEB
随着国际互联网技术的迅速发展和广泛的应用,WEB论坛已成为网站设计的重要内容。是一个网站系统不可缺少的模块。因为人们通过网上论坛,可以根据自己的需要来选择相应的论坛主题,发表自己的帖子,还可对某个作者的探讨问题,已成为人们交流信息实现信息共享、技术改进等的重要场所。网上论坛设计从最初的CGI到后来的ASP以及PHP逐步成熟和不断的发展。在最近几年间针对下一代互联网服务框架(NGWSF-NextGenerationWebServicesFramework)的出现而为网上论坛的实现又增添了新的技术。
ASP.NET给网站设计者提供了全新的设计理念,它将软件设计和WEB设计融为一体,它和VC.NET、VB.NET等使用同一个.NET框架对象开发库,具有极强的代码集成能力,已成为开发WEB应用程序的有力工具,是微软公司.NET框架的重要组成部分。
1.ASP.NET技术
.NET的框架按照第一层为程序语言,第二层为公共语言规范,第三层为ASP.NET或WinFormat,第四层位ADO.NET,第五层是ClassLibrary基类函数库,第六层为公共语言执行环境。按照层次分为六层次结构。
其程序语言可以使用VB.NET、C++、Jscript等;公共语言规范要求在设计时必须符合公共语言规范的要求,这样开发出的程序语言在编译出来的DLL及EXE文件都可以在公共语言执行环境中执行;ASP.NET格式指的是WEB页面格式或WEB服务,它基于互联网的分布式应用程序;其ADO.NET则强化对离散模式以及对XML的支持;在基类函数库中定义了函数的数据框架和I/O处理以及图形界面等处理的基类,供程序开发人员直接建立对象;由于.NET是一个全新的软件开发环境,公共语言执行环境是整个.NET开发平台的核心。
其框架结构如图1所示。
图1.NET框架结构
.NET程序执行时所编译出来的代码是以IL中间语言表示的管理代码,不是原生的二进制代码,无法再CPU中直接执行,而是直接载入.NET的公共环境中通过JIT编译器译为原生机器代码执行。公共语言执行环境会将JIT编译出的机器码在执行之后再载入内存,在第二次执行时便直接从内存中获得机器码,无需再进行额外的载入和重新编译,效率得到极大的提高。2.WEB论坛设计
整个网上论坛设计采用ASP.NET技术,其后台数据库采用SQLServer2000。根据系统的功能可分为用户管理、论坛管理、信息搜索、短消息管理和帖子管理等模块。用户管理主要对登录到论坛上的用户实施管理,包括用户注册、身份验证、取回密码修改资料等等功能。论坛管理包括对整个论坛的管理与维护,如论坛的添加与删除同时完成对论坛的公告的维护和对论坛中不良信息的处理。信息搜索包括搜索用户、搜索帖子等。短消息管理主要为用户提供相互之间发送短消息的功能,如发送短消息、查看短消息、回复短消息、删除短消息等。帖子管理模块包括发表帖子、查看帖子、回复帖子、编辑帖子、删除帖子等功能。整个系统简要结构如图2所示。
图2网上论坛总体设计简要结构
网上论坛数据库设计共设计了7个数据表,它们是用户表、论坛版块信息表、帖子信息表、系统公告表、短消息信息表、在线用户信息表、论坛分类信息表等。各个数据表的结构如下:(1)用户表(user)
(2)论坛版块信息表
(3)帖子信息表
(4)系统公告表
(5)短消息信息表
3.WEB论坛设计中的关键技术
(1)数据库链接技术
使用ASP.NET设计站点时,设计的应用程序通过ADO.NET连接到数据源,对数据实施添加、删除和修改操作。而ADO.NET通过Connection对象链接到数据库;通过Command对象执行SQL指令;通过DataReader对象给应用程序提供读取数据的接口;通过DataAdapter对象执行SQL指令,并通过DataSet对象给程序提供存取数据的接口。
(2)帖子的分页显示
在ASP.NET中,可以使用DataGrid或DataList来分页显示论坛中帖子的内容。
使用DataGrid比使用DataList要简单一些,只要再DataGrid控件中加入如下的事件处理属性:on-pageindexchanged="page_index",并在程序代码部分加入如下代码:
subpage_index(easdatagridpagechangedeventargs)
grid.currentpageindex=e.newpageindex
bindgrid9()(下转第106页
)109
2007年第5期
福建电脑endsub
即可实现数据的分页显示了。(3)在帖子中贴图的技术贴图的实现最重要的就是图片的上传,在控件form中将enctype改成multipart/form-data,同时增加如下语句:<inputid="lofile"type="file"runat="server">,然后在页面的逻辑代码中指定要上传到服务器的路径,将图片上传到指定的服务器端即可。对上传的图片文件通过其类型contenttype来判断是否为图片,如果其contenttype为"image/jpg"或"image/gif"或"image/bmp"就表明所上传的文件是图片。4.结论网上论坛设计可以使用静态网页设计技术实现,如Frong-page、Dreamweaver等,也可以使用动态网页技术实现,如ASP、ASP.NET等。在实现的机理上,ASP.NET是最具有优势的技术。ASP.NET是建立在公共语言运行库上的编程框架,可用于在服务器上生成功能强大的Web应用程序。与以前的Web开发模型相比,ASP.NET提供了数个重要的优点:(1)增强的性能。ASP.NET是在服务器上运行的编译好的公共语言运行库代码。与被解释的前辈不同,ASP.NET可利用早期绑定、实时编译、本机优化和盒外缓存服务。这相当于在编写代码行之前便显著提高了性能。(2)威力和灵活性。由于ASP.NET基于公共语言运行库,因此Web应用程序开发人员可以利用整个平台的威力和灵活性。.NET框架类库、消息处理和数据访问解决方案都可从Web
无缝访问。ASP.NET也与语言无关,所以可以选择最适合应用程
序的语言,或跨多种语言分割应用程序。另外,公共语言运行库
的交互性保证在迁移到ASP.NET时保留基于COM的开发中的现有投资。(3)简易性。ASP.NET使执行常见任务变得容易,从简单的窗体提交和客户端身份验证到部署和站点配置。例如,ASP.NET
页框架使您可以生成将应用程序逻辑与表示代码清楚分开的用户界面,和在类似VisualBasic的简单窗体处理模型中处理事件。另外,公共语言运行库利用托管代码服务(如自动引用计数和垃圾回收)简化了开发。(4)可管理性。ASP.NET采用基于文本的分层配置系统,简化了将设置应用于服务器环境和Web应用程序。由于配置信息是以纯文本形式存储的,因此可以在没有本地管理工具帮助的情况下应用新设置。此"零本地管理"哲学也扩展到了ASP.NET框架应用程序的部署。只需将必要的文件复制到服务器,即可将ASP.NET框架应用程序部署到服务器。不需要重新启动服务器,即使是在部署或替换运行的编译代码时。(5)安全性。借助内置的Windows身份验证和基于每个应
用程序的配置,可以保证应用程序是安全的。参考文献:1.杨世锡等编著ASP+SQLServer动态网站开发电子工业出版社
2005
2.刘瑞新等到编箸网面设计与制作教程机械工业出版社2006
3.高和清精通WSP.NET程序设计中国铁道出出版社2001Case"int","dec","num"//带小数位数数值型
ifisnull(dw_find.GetItemDecimal(1,ls_column))or&
len(trim(string(dw_find.GetItemDecimal(1,ls_column))))
=0thencontinue
//如果没有输入不考虑或只有空字符串
ls_value=string(dw_find.GetItemDecimal(1,ls_column))ls_clause=ls_dbname+ls_compare+ls_value//
单个表达式
Case"cha",'var'//字符型
ifisnull(dw_find.GetItemstring(1,ls_column))or&
len(trim(string(dw_find.GetItemstring(1,ls_column))))=0then
continue
ls_value=trim(dw_find.GetItemString(1,li_cnt))IFpos(lower(ls_dbname),'bzpym',1)>0THEN
ls_clause="lower("+ls_dbname+")likelower('"+
ls_value+"%')"
ELSE
IFtrim(ls_compare)='>='ortrim(ls_compare)='<='or&
trim(ls_compare)='>'ortrim(ls_compare)='<'then
ls_clause=ls_dbname+""+ls_compare+"'"+ls_value+"'"
ELSE
ls_clause=ls_dbname+"like'"+ls_value+"%'"ENDIF
ENDIF……//格式相同,不在逐一列举
ENDchoose
EndChoose
ifisnull(ls_where)orlen(trim(ls_where))=0then//如果是第一个
ls_where=ls_clause
else
ls_where+="and"+ls_clause/表达式累加
endif
Next
ifisnull(ls_where)orlen(trim(ls_where))=0thenreturn''//条件有效性判断
RETURNls_where
2.2.2查询功能实现
当用户输入或者选择完单个查询条件或者组合查询条件时,即可点击"查询"按钮,开始按照单个条件或者组合条件在关联的表中进行数据查询。"查询"按钮主要代码如下:
st_help.text=''
dw_normal.accepttext()
ls_whereclause=f_whereclause_return(dw_normal)
iflower(ls_whereclause)='none'or(ls_whereclause)=''then
messagebox(gs_message,"请输入查询条件!",information!)
return
endif
iflen(trim(is_otherwhereclause))>0then
ls_whereclause=ls_whereclause+"and("+is_otherwhereclause+")"
endif
dw_list.reset()//清除记录IFpos(lower(is_sourcefilter),'where',1)>0then
ls_sourcefilter=is_sourcefilter+"and("+ls_whereclause+")"
ELSE
ls_sourcefilter=is_sourcefilter+"WHERE("+ls_whereclause+")"
ENDIF
dwsyntax_str=SQLCA.SyntaxFromSQL(ls_sourcefilter,presentation_str,ERRORS)dw_temp.Create(dwsyntax_str,ERRORS)dw_temp.settransobject(sqlca)ll_rowcount=dw_temp.retrieve()
st_help.text='本次查询共有'+string(ll_rowcount)+'条结果'st_help.visible=true
asp网站页面3.结束语
数据查询是管理信息系统的主要功能,其通用性程度与使用是否方便,直接关系到数据库应用系统开发的成败。该通用查询窗口通过自动完成数据表中的列以及相应列值的读取,极大方便了用户对查询条件的输入,同时可以构造复杂的复合查询条件。该通用查询窗口极具通有助于程序员提高开发速度、缩短开发周期、减少开发成本,同时,也有利于用户快速掌握应用软件、提高工作效率,相信对实际工作具有很大的现实意义和应用价值。
参考文献:
1.张长富.PowerBuilder9.0实例教程[M].成都:电子科技大学出版社,2004.
2.何旭洪,余建英.PowerBuilder8.0数据库开发实例导航[M].北京:人民邮电出版社,2002.
3.冯大春,孔庆龙.PB中一个通用查询控件的实现[J].计算机时代,2003,24(2):31-32.
4.蔡雪蛟,蔡颖.动态模糊查询设计[J].计算机应用,2003,23(6):51-53.5
.严怀成,王敏.基于PowerBuilder的通用查询的设计与实现[J].微机发展,
2005,15(6):124-126.
(上接第109页)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
106

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。