Discuz!NT 系统架构分析
前一段时间负责负责论坛的迁移工作,对其架构进行了简单的整理。前几天看到有人说 discuz的介绍很少,因此整理了一下,发布出来。 也是第一次发表文章,大侠们手下留情。 Discuz 整体架构如下图所示: 横向表示 同一层次中涉及的各个模块 ( 项目 ) 纵向表示 不同层次之间模块的关系,某些关系是如何在各层次中传递 ( 穿越 ) Discuz 架构上采用了比较流行的三层架构,即表现层,业务逻辑层,数据访问层来进行设计,并结合自己的情况进行了特殊处理。 表现层: 表现层即为上图中蓝色虚线表示 , 主要包括 :Web , Services , UI , Control 。各项目主要功能为: UI 定义各种页面基类,提供 Ajax 访问访问接口。 Control 存放 Discuz 用到的自定义服务器端控件。 Services 提供外部访问接口。 Discuz 引入了一种模板引擎的机制,来实现表现层的多样化。 主要设计思想为:针对设计人员,提供纯静态页面,并提供了一套约定的语法和标签( 具体位置在: templates )。模板制作完成后,要进行模板导入,此时 discuz 会将静态模板进行解析将其转换成 aspx 页面,然后放到 aspx/1..n 下。如果你打开这下面的文件,会发现前端只是一个字符串拼接的过程。要进行的逻辑判断,都放到了后台代码中。后台代码只有一份,所有的 aspx