




























本文就DNN页面生成引擎随笔与思考,同时会牵涉到CommunityServer的Skin机制、Url Rewriter、SharePoint知识。
在DNN中,只有为数不多的几个页面(.aspx),除去核心机制外,大多数业务逻辑都写在用户控件里(.ascx),那DNN是如何展现出千变万化的页面的呢?分析之后,你会发现,所谓千变万化的页面只是url rewriter结合一种页面加载(生成)引擎综合的结果。在这个加载过程中主要按如下步骤进行:
1:编写一个IHttpModule的扩展,并且捕获其中的BeginRequest事件
public class UrlRewriteModule : IHttpModule
{
public string ModuleName
{
get { return "UrlRewriteModule"; }
}
public void Init (HttpApplication application)
{
application.BeginRequest += new System.EventHandler(this.OnBeginRequest);
}
public void OnBeginRequest (object sender, EventArgs e)
{
//处理逻辑
}
}
至此,页面就被呈现给用户了。
有待进一步思考:
以上过程看似简单,但是要处理好这些URL还真不是件容易的事情,DNN中花费大量的代码来做URL处理与QueryStrings判断,但URL还是不够友好,而SharePoint显得在URL上美观很多。
效率问题,Portal大多访问量较大,类似DNN这样多嵌套与多用户控件的加载效率上不容乐观,SharePoint也有类似问题。
页面呈现的层次结构,DNN的Portal->Tab(Page)->Module或者SharePoint的Portal->Site->Page->WebPart,哪一种更能体现用户需求。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。