20110610 DiscuzNT代码研究(1)

20110610 DiscuzNT代码研究(1)

PDF下载:http://download.csdn.net/source/3357910

1. 源代码下载

http://nt.discuz.net/showtopic-140676.html

clip_image002

2. 用VS2010打开项目

clip_image004

3. 项目结构

clip_image006

4. Discuz.Web

4.1. 文件夹结构

本项目是网站最终的项目,对比网站发布的文件夹

clip_image008

Discuz.web项目文件夹

clip_image010

4.2. 关于Bin文件夹

网站所有需要的dll文件都放在Bin文件夹中,总共27个dll文件,其中Discuz自身有22个,刚好对应解决方案的22个项目(其中Discuz.web是网站项目,不生成dll文件),其他dll文件是另外引用的,在“RefDLL”目录下。

clip_image012

clip_image014

clip_image016

5. 如何研究DiscuzNt

1) 研究Discuz.web网站结构

2) 研究dll文件

6. 关于DiscuzNt的运行过程

6.1. 系统安装

一步一步来

我们先按照http://faq.comsenz.com/viewnews-989配置好网站,第一步就是要安装

clip_image018

这时系统会自动跳转的“Install.aspx”页面

clip_image020

6.2. 我们从安装开始分析

既然我们知道入口了,我们就先从安装开始分析

7. Discuz.Web

7.1. install
7.1.1. index.aspx
7.1.1.1. 代码分析方法

1) 截图

2) 分析类成员(UML)

3) 分析类成员的实现和作用(深入源代码)

7.1.1.2. 截图

clip_image022

7.1.1.3. 分析类

从代码的前段,可以看出index.aspx页面没有相应的cs文件,本页面将在被浏览器请求的时候,自动编译一个继承与Page类的页面出来。

为了好分析,我们假设生成的类为index.aspx类

index.aspx的第一行,置顶了本页面的编译语言为C#

<%@ Page Language="C#"%>

index.aspx的C#代码是在<script runat="server">…</script>体现出来。

7.1.1.4. 分析类成员

我们为_Index_Page类画一个UML图,借助“EnterpriseArchitect”工具,非常不错的一个UML建模工具。

clip_image024

从UML类图中可以看出,index.aspx基本上就是一个Page_Load方法,两个字段,这个方法和字段主要做什么作用呢?

7.1.1.5. 分析类成员实现与作用
7.1.1.5.1. Page_Load

如何来分析Page_Load方法,实际上应该是事件方法,这个主要解决什么问题呢?

为了调试某个方法具体作用,有些时候我们需要在方法中添加一些测试方法

clip_image026

这里,我们添加了一个测试方法“Response.Write(binfolderpath);”,并注释后续的代码,我们的目的是要只要HttpRuntime.BinDirectory返回的是什么样的值,返回结果值如下:

G:/WebServer/DiscuzNt360/source_files/Discuz.Web/bin/

即HttpRuntime.BinDirectory返回的是当前应用程序的 /bin 目录的路径。

7.1.1.6. 知识点
  • HttpRuntime.BinDirectory
  • ArrayList inexistenceAssemblyList = new ArrayList();
  • foreach (string assembly in assemblylist)
  • System.IO.File.Exists(binfolderpath + assembly)
  • inexistenceAssemblyList.Add(assembly);
  • msg += "<li>" + assembly + " 中.</li>";
  • binfolderpath.Replace("bin//", "")
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值