您现在的位置是:首页 > cms教程 > Discuz教程Discuz教程
Discuz开源代码结构小分析
恨天2025-07-06Discuz教程已有人查阅
导读右图是DiscuzNt(以下简称DZ)开源代码的方案结构20个项目,看上去好像很庞大,现在我们来分析一下它的层次,从本人的个人分析角度上看discus是比较典型的应用三层架构
Discuz开源代码结构分析 2025-4-11 Carl Xu
Discuz开源代码结构分析
Carl Xu
左图是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的缓存机制。
Discuz开源代码结构分析
Carl Xu
/*
分析DZNT的开源代码大体层次结构
*/
右图是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的缓存机制。
本文标签:
很赞哦! ()
相关教程
图文教程
Discuz X3.2源码解析discuz_application实例化
class_core.php,主要实现了以下功能:注册 autoload 方法和异常处理方法C::t 方法的实现:通过 C::t 方法来调用数据层对应表的对象来实现对数据的操作
Python实现Discuz论坛的自动POST登录发贴回帖实例
下面简单说下过程:首先是得到了login的post地址:几个关键的parameter是loginurl为登录面页,用于获得formhash的值loginsubmiturl为post登录参数的地址
discuz各个目录与文件作用说明介绍
discuz下面有很多文件夹以及文件,你们都知道他们是做什么的么?肯定不知道了吧。但是我们有经常遇到这些文件
discuz模板安装步骤
Discuz模板是一组预先设计的主题、风格和布局,用于定制Discuz论坛的外观和功能。安装步骤包括:从官方或第三方平台下载模板。解压模板文件。通过FTP上传模板文件到根目录的
相关源码
-
(PC+WAP)蓝色新能源环保太阳能光伏模板pbootcms下载新能源环保行业网站解决方案为太阳能光伏系统企业打造的专业网站模板,助力新能源企业高效展示产品与服务PbootCMS内核开发,源码开放可修改PC与手机端自适应设计查看源码 -
帝国cms自适应古诗词古籍名句网站整站带数据基于帝国CMS打造的专业古诗词文化网站模板,专注于古典文学内容的展示与传播。模板设计蕴含传统文化韵味,支持诗词鉴赏、名句赏析、古籍整理等特色功能,为诗词爱好者提供优质的在线阅读体验。查看源码 -
(PC+WAP)绿色硅胶橡胶玩具制品营销型网站源码下载为硅胶橡胶制品及玩具行业打造的营销型网站模板,采用PbootCMS内核开发,通过模块化设计实现产品参数、安全认证、应用场景等专业内容的可视化呈现,助力企业建立可信赖的线上展示平台。查看源码 -
pbootcms模板PC+WAP娱乐新闻资讯类博客网站源码该模板基于PbootCMS内核开发,专为娱乐新闻、健康生活类资讯网站设计,同时支持快速适配其他行业(如企业官网、博客门户等),仅需替换图文内容即可完成转型。查看源码 -
(自适应响应式)黑色LED显示屏户外广告屏网站源码下载这是一款基于PbootCMS内核开发的响应式网站模板,专门为LED显示屏及户外广告行业打造。模板适配各类显示设备,帮助企业快速搭建专业官网,展示产品与服务优势,有效提升品牌形象。查看源码 -
(PC+WAP)蓝色玻璃纤维制品环保设备营销型pbootcms模板源码下载这是一款针对玻璃纤维行业特点设计的网站模板,采用蓝色系配色方案,体现工业感和环保理念。模板包含产品中心、应用案例、技术支持和新闻动态等核心模块,能够全面展示玻璃纤维制品的技术参数和应用场景。查看源码
| 分享笔记 (共有 篇笔记) |
