亲密接触Discuz!NT之架构篇:优良架构 方便网站整合与二次开发

本文介绍了Discuz!NT论坛软件的四层架构,包括显示层、页面数据处理层、业务对象封装层和数据库访问层。展示了如何通过这四层结构提高软件的伸缩性、可扩展性和重用性。

考虑到用户的实际应用需求和面向未来的软件开发理念,Discuz!NT在设计和开发之初就构建了优良的架构,大大提高了软件的伸缩性、可扩展性和重用性。本架构除了使Discuz!NT自身结构更为清晰和更易于维护以外,也为用户进行二次开发和完善论坛个性化提供了极大的方便。Discuz!NT采用了如下的四层结构,让我们简单介绍一下:

Www.Chinaz.com

 

(一)显示层 Www.Chinaz.com

显示层可由用户自行进行设计和修改,用以显示最终的web页面界面和论坛数据。特别值得一提的是,Discuz!NT在前台没有选择绝大多数ASP.net程序所使用的控件模式,而是另外实现了一套方便好用的模板机制。本模板机制使站长可以用html(或xhtml)来制作模板,然后由Discuz!NT的模板转换功能转换为Asp.net页面程序(即aspx)文件,这样做的好处有两点:

[中国站长站]

 

1)提高了易用性:ASP.net的ascx文件对于没有学习过ASP.net或对其开发模式没有了解的人来说,是存在难度的,而Discuz!NT的模板机制使得用户只需要简单了解html就可以制作ASP.net的论坛界面,站长可以轻松、自由地设计和修改界面了。

站.长站

 

2)提高了性能:一般情况下,前台程序不使用控件模式,而使用Discuz!NT的模板转换功能,性能将会得到显著提升。例如Discuz!NT的模板转换功能不用数据绑定,不必判断数据来源和转换数据类型,不用页面控件,避免了使用ViewState,从而大大提高了页面性能。此外控件模式往往追求功能齐全,而当你只需要其中一部分功能时,大量无用的代码则会拖累页面性能。

Www^Chinaz^com

 

更为突出的是,Discuz!NT显示层的灵活性很高,支持在模板中定义导入的命名空间和插入c#代码,从而使显示层可以方便的插入其它程序集的数据。

Chinaz.com

 

(二) 页面数据处理层

Chinaz^com

 

Discuz!NT的页面数据处理层主要负责web页面的数据输入与输出处理,包括检测用户数据提交的有效性校验,以及为页面程序所需要的数据源。本层实现了论坛的主要需求,完成了前台各个页面的功能流程,例如用户发贴时,页面数据处理层首先判断用户权限,然后校验用户提交的数据是否合法,最后调用对应业务对象封装类中的方法,将用户的数据实际存储。 中国.站长站

如果站长希望用户在前台输入、输出时,能同时与其它程序进行交互,那么就可以在该层进行处理,例如:一个钓鱼爱好者网站想在Discuz!NT用户个人资料中增加鱼竿类别的选项,并存储到主网站用户信息数据库,那么就可以在前面的显示层增加鱼竿类别,然后在页面数据处理层中,调用将该数据存储入主网站用户信息数据库的方法,完成存储。 中.国.站.长.站

Discuz!NT的页面数据处理层可以访问数据库,但并不推荐开发者增加在该层与数据库进行交互,数据库的访问在下面要介绍的业务对象封装层中。 Www.Chinaz.com

(三) 业务对象封装层

站长.站

 

以论坛来说,用户、主题、帖子、版块、用户组等都属于业务对象的范畴,Discuz!NT将业务对象描述为对象类,并提供了实现对这些对象进行各种操作的丰富方法。以主题对象来说,对主题的封装方法里就实现了创建、修改、删除、更新等操作,Discuz!NT内部是采用这些方法来处理主题的,同样,开发者也可以直接调用这些方法来实现对Discuz!NT的具体操作,而不必自己操作数据库。

中国站长.站

 

(四)数据库访问层

Chinaz@com

 

数据库访问层提供了对不同数据库访问方法的封装,目前Discuz!NT分别拥有对Access和SQLServer数据库的访问封装,对于SQLServer用户来讲,还可以通过修改Discuz!NT的数据库存储过程来高效地实现一些特定的需求。 中.国.站.长.站

上面简单介绍了Discuz!NT的四层结构,总体而言,论坛就像是一个饭店,论坛访问者是客人;显示层则是饭店餐桌和大厅,使客人的就餐场所;页面数据处理层为服务员,负责接收客人的点菜和向厨师下单;业务对象封装层是厨师,负责制作菜肴并返回给服务员,数据库访问层是采购员,用来购置厨师所需要的原材料;架构就作为饭店流程或规章制度,通过完善布置各个成员的分工、协作,从而给客人一个良好的就餐环境和服务。

站.长站

 

另外,无论开发者使用的是c#、vb.net还是其它任何支持.net的语言,都可以直接调用上述四个层中的公开方法,来实现对Discuz!NT的调用。随着Discuz!NT完善后的开源,必将有越来越多的开发者参与开发,相信在我们共同的努力之下,Discuz!NT将会愈加完善。

站长.站

 

系列文章: 中.国.站.长.站

亲密接触Discuz!NT之管理篇: 社区专用桌面客户端 站长管理新利器

Chinaz

 

亲密接触Discuz!NT之开源篇:免费开放源代码   与用户共同成长 中国站.长.站

亲密接触Discuz!NT之平台篇:顺应ASP.NET平台 取代ASP论坛软件

Chinaz

 

亲密接触Discuz!NT之传承篇:传承Discuz!优势 .NET论坛开山力作

中国.站长站

 

亲密接触Discuz!NT之功能篇:功能强大而新颖 细节设计更加贴心 Chinaz 

Discuz!NT具有安全、高效、易用等特点,产品开放源代码下载三年的时间,受到了国内众多ASP.net项目用户的欢迎,成为国内ASP.net社区论坛产品的标杆。Discuz!NT3.1版本全面支持Windowsserver2008R2系统,并且支持集成模式。免费为商业用户提供64位编译版本。Discuz!NT3.1版本为项目用户专门开发了负载均衡、数据库读写分离、分布式缓存和检测工具一系列套件,为超大型社区建设提供了完美的技术解决方案。 Discuz!NTv3.6.601修复的问题 游客查看附件的样式不正确 编辑器转义了不应转义html代码 图片格式不正确导致官网出现内存不足 invisible=-2的帖子,有主题通知,但是却无法在帖子中看到 主题下沉无法沉到列表最底下 头像上传在子目录下潜在问题 版块/分类设置中,显示模式改为”传统模式“导致版块图标换行 发一个带有flash的主题或回帖,再编辑此贴,上传图片会缺少提示 简洁版页面,没有输出页面编码信息导致乱码 用快捷键发帖出现空白页,刷新正常 搜索页面里鼠标移至楼主名称上点'删除用户7天帖子'失效 后台开启远程附件后没法关闭 login.aspx页面,tab顺序不正确 开启2个web园后,在线时间不增加,排查代码 帖子英文内容导致热点调用被撑开 IE下,如果图片附件过大,导致上传框被遮挡 提示余额不足的样式错误 开启图片点击加载后,简洁版无法看图(点击加载无效) 帖子关闭状态下,依然会出现回帖框 窄版下,公告过长会导致文字遮挡 发帖时在'视频'按钮里插入土豆,优酷等视频无效 首页轮显图的出现错误,很有可能是缩略图方法的问题 附件上传,多了一些不应该出现的文字,而且样式没对齐 在24小时新帖的版块名称长度中设置0前台页面报错 ......
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值