Discuz!NT论坛代码小分析
Discuz开源代码结构分析
2008-4-11
右图是DiscuzNt(以下简称DZ)开源代码的方案结构
20个项目,看上去好像很庞大,现在我们来分析一下它的层次,从本人的个人分析角度上看discus是比较典型的应用三层架构,可以说在架构上是比较普通的,
左图是DZ的几个数据层项目,Data项目提供公用访问接口, Data.Access 和Data.MySql以及Data.SqlServer是公用接口的三种数据访问层的实现,IDataProvidor接口所提供的接口数量惊人…..代码行将近5000,DZ的业务逻辑的确非常庞大,其实这样的接口编写方式,个人是比较抵制的,这样看起来,这种实现纯粹是为了接口而写接口,在实现了普通访问层代码后,在反过来把所有实现的方法做为基类的接口成员,这个方式在实际中是没有问题的,很多时候我们是倾向于这么做,只是这样的5000行的接口代码就实在不敢恭维…依此可见,DZ的多数据库支持是建立在这样一个为每种数据库重建访问层实现的方式上的,可幸的是这没有影响它的运行性能,^^继续分析,Discuz.Data.DatabaseProvider 提供数据层工厂方法以实现多数据库支持,那么以上就是数据访问层的分析,很普通的做法,DZ在重构的时候看来只是简单的实现接口编程,没有对业务结构做出新的重构;
再来看业务层和web层,因为如前面分析所说,已经实现了普通而良好的数据工厂和数据访问层接口,所以上层就是完全面向接口的了,在这几个层次里也看不到任何的数据库访问,sql语句等,
这个就是web层,它把后台页面代码分离成为独立的dll,这样做是处于版权的考虑,让你不能获得源代码,获得了也不能轻易的修改,^^这个做法也使得以下的web目录非常的轻便,只有几个文件和目录,通常编写庞大的web应用页面必然会很多,没有全盘考虑,一下就会建好多的页面出来,而很多情况,页面中的部分甚至整个页面是功能类似的,因此应该考虑以组件,
控件等方式进行复用,DZ就是个例子.
下面这几个是作为DZ的插件功能,用来在后续开发中扩充应用,以类似方式定义程序集名称,按照一定的规范来编写DZ平台的插件,这是现在普遍采用的方式,
一些网站或者开源控件会提供这样的规范,让开发人员添加一些基于该平台等的应用,DZ的具体插件应用我就不清楚了 不想接着看^^主要是分析大体结构
这些则是一些通用的方法程序集,没有什么好讨论的,里面封装的一些类可以拿出来单独使用,还是挺方便的,Discuz.Cache实现DZ的缓存机制,
以上就是DZ主论坛的源码分析
转载于:https://www.cnblogs.com/qiantuwuliang/archive/2009/06/04/1496426.html
Discuz!NT论坛代码小分析相关推荐
- Discuz!NT论坛代码小分析【转】
Discuz开源代码结构分析 2008-4-11 Carl Xu Discuz开源代码结构分析 2008-4-11 Carl Xu /* 分析DZNT的开源代码大体层次结构 */ 右图是DiscuzN ...
- 在Sharepoint 2007 整合Discuz Nt论坛
在Sharepoint里整合Discuz Nt论坛后,论坛用户和Sharepoint将共享登录名 不管在整合后,有两点需要注意: 1)这里的整合是若整合 2)discuz提供的接口真的很烂,有时候会出 ...
- 安装好Discuz!NT论坛后首页是一片空白!解决办法
为什么当我安装好论坛后首页是一片空白! 当出现此问题时,是因为您在dnt.config中设置的<forumpath>值不正确,导致程序无法正常的使用HttpModule来接管HT ...
- 关于和discuz!nt论坛的整合
做网站的时候需要和discuz!.nt论坛整合,遇到问题如下: 1.web.config的整合 在这里需要注意编码的整合,一般情况我们会按装论坛的编码,如下: <globalization ...
- ASP.NET网站与Discuz!NT论坛整合
1.引入5个DLL到项目中 分别是 using Discuz.Common; using Discuz.Forum; using Discuz.Config; using Discuz.Entity; ...
- discuz!nt论坛搬迁后出错,提示:对象名 'dnt_templates' 无效
2007年10月30日 星期二 16:23 对象名 'dnt_templates' 无效解决方法: --解决重装系统并还原论坛数据库后,数据库帐号不关联的问题. --注意请用sa帐号 进行如下操作 - ...
- Discuz!NT论坛与RTX集成
discuz论坛与腾讯通RTX的集成,包含代码并附有详细的说明哦 集成功能: 单点登录,数据同步,消息提醒,状态感知 详细的下载地址:http://download.csdn.net/download ...
- Discuz!NT论坛添加背景音乐
背景音乐就是在打开网页时听到的音乐. <bgsound src="音乐文件地址" loop=#> #=循环次数 ,-1表示无限循环. 例: <bgsound sr ...
- Discuz!NT 中的数据库链接类(重构到抽象类工厂模式)
在7月份中我曾经写过一篇随笔叫,叫" .NET2.0 框架中的 AbstractFactory 模式 " . 里面主要说了在2.0框架下的数据库链接工厂中新增的几个类,而这几 ...
最新文章
- 澳大利亚铁路网络漏洞多多 极易遭攻击
- 一种混合加密方案在软件授权中的应用
- oracle reverse 反转函数
- 潍坊市计算机专业招聘,潍坊市工业学校计算机专业介绍
- boost::geometry::coordinate_type用法的测试程序
- 推特上马斯克BTC赠送骗局已获利10枚BTC,价值超55万美元
- 基金一般拿多长时间合适?
- TypeScript 让你不会想用回 JavaScript
- 土豆视频ipad 5.0 客户端
- 多加速器驱动AGX的目标检测与车道分割
- 怎么判断日出时间早晚_怎样判断一个地方的日出或日落时间
- 变更日志 批准的变更请求 收尾流程 原型法 名义小组 习题
- 生活随记 - 拥抱变化
- 新仙女木事件和农耕文明_后农业文明的排列
- 对智能电视的几个看法和观点
- 20.古体诗的平仄与三字脚
- Word2019单个页面显示多个文件
- 系统集成项目管理工程师-法律法规与标准规范
- android拓展内存卡,都取消存储卡拓展,而它却解决了安卓手机的大问题
- iOS代码质量要求_苹果发布 iOS amp; iPadOS 13.1 beta 4 版本;Dart 2.5正式公布;SwiftUI View的生命周期...
热门文章
- PostgreSQL 客户端乱码问题
- [leetcode笔记] Remove Duplicates from Sorted List II
- 【转】修改版WinXP集体歇业避免遭遇调查
- BoW图像检索Python实战
- GPU 加速下的图像视觉
- iOS/OS X内存管理(一):基本概念与原理
- 量产车发布前夕,乐视在美汽车工厂被传欠薪停工
- 使用 diskpart 实现无损数据回收空间再分区
- WiseCloud成为全球首批Kubernetes官方认证平台产品-CNCF官方发布
- 条款10 令operator=返回一个reference to *this