有朋友说应该写个大致结构出来。想想也有道理,那么我就来介绍一下Dotnetnuke的执行流程。基本上我这个就是照搬他的
基本思路
一个站点,无论其内容多么丰富,频道,栏目等无论有多少,其最终的表现形式终归是一个一个页面。系统直接对页面进行处理,至于页面上放什么内容,这个没有关系,放什么模块,就呈现什么内容。和传统CMS系统的 "首页",“列表页”,“终端页”的三大类分类完全不同,我们认为,无论是首页也好,列表页也好,它最终无非还是一个"页面"。而只要是页面,那它就一定有如下特点:上面可以有若干区域,每个区域显示若干内容。在此系统中,如果加载了 “文章列表模块”那么就是列表页,如果加载了“文章模块”那么就是终端页。
特点
一、整个站点只有一个页面。非常便于集中管理。
二、所有功能模块之间可以互不相关。便于扩充。
站点主要信息都在数据库中集中存储,各页面信息也是统一管理,甚至所有url的生成也集中在一处管理,非常便于后期urlrewrite等的处理。
系统运行基本流程
系统首先请求唯一的页面/Default.aspx.
根据参数tabid=? 来判断请求的是哪个页面。
权限判断。如果不满足权限则重定向到登录页。
读取页面信息。判断应加载那个页面皮肤并加载之。
页面皮肤根据页面模块信息加载功能模块。
各功能模块执行各自自己的逻辑,最终在/Default.aspx页中显示页面呈现的最终结果。
/Default.aspx执行结束,一次请求结束.
基本上DotNetNuke的思路就是这些,你要说有啥深不可测的技术么也没有,关键是皮肤部分,以及执行步骤部分有不少改进的空间。
DotNetNuke的不爽之处
1,皮肤创建问题。它使用 td,div标记作为容器。这样会导致最终页面上会出现许多 id="ctl000_XX"之类的标记。这些标记说不定在啥时候会和美工写的CSS其反应.
对此我的解决方案是:全部使用placeholder做容器,这样页面上就不会有多余的id了
2,权限问题。这个东西部署时真是麻烦,因此我特别注意了这个问题.
我做的山寨dotnetnuke已经可以跑了,欢迎大家参观!
地址: http://www.dnnlite.com