zoukankan      html  css  js  c++  java
  • 秋色园QBlog技术原理解析:Module之页面基类生命周期流程(六)

    文章回顾:

    1: 秋色园QBlog技术原理解析:开篇:整体认识(一) --介绍整体文件夹和文件的作用

    2: 秋色园QBlog技术原理解析:认识整站处理流程(二) --介绍秋色园业务处理流程

    3: 秋色园QBlog技术原理解析:UrlRewrite之无后缀URL原理(三) --介绍如何实现无后缀URL

    4:  秋色园QBlog技术原理解析:UrlRewrite之URL重定向体系(四) --介绍URL如何定位到处理程序

    5:  秋色园QBlog技术原理解析:Module之页面基类设计(五) --介绍创建基类和自定义生命周期

     

    ps:秋色园QBlog下载地址:http://www.cyqdata.com/download/article-detail-427

    从上节中,我们为页面基类自定义了如下的几个生命周期:

    本节,将为你详细解析秋色园QBlog在每个生命周期所处理的事情。

     

    一:参数初始化:private void Page_Init(HttpContext context)

     

    秋色园QBlog在第一个生命周期里,主要完成以下参数的初始化:

    1:URL参数接收:即从UrlRewirte分好类后传过来的参数

    2:公共类:UserLogin:从此类可获取到当前访问用户信息、被访问用户信息

    3:XmlHelper:操作html文档类,能轻松加载html,并以xml方式轻松操作填充内容

    4:MutilLanguage:多语言处理类,能统一翻译html文档

     

    为此,基类需要定义一些常用属性,方便各个页面ashx处理程序调用。

    因此,定义了如下属性,并从参数里接收:

     

    这里有2点注意说明:

    1:引入了CYQ.Data:用上了CYQ.Data.Xml下的两个类XmlHelper、MutilLanguage

    2:属性中没有定义UserLogin及几个URL参数:本系列主介绍原理,太细节的代码就略过了

     

    类库说明:

    XmlHelper:主要用于加载html,默认构造函数的true,表示从html加载

    MutileLanguage:基于XmlHelper的扩展,允许从xml/html中加载语言文件

    到此,第一步参数初始化就完成了。

    二:页面加载:private void Page_PreLoad()

     

    经参数初始化之后,将预加载html,并进行初步处理,秋色园QBlog完整流程如下:

    1:如果开启缓存:尝试读取三级缓存,页面缓存

    2:不存在缓存:进入加载页面流程

    3:对加载后的页面,处理CSS/IMG的路径

    4:对加载后的页面,进行多语言翻译

    5:根据Request.Form提交的参数判断,是不是Post提交数据,如果是,将引入新的Post处理流程。

     

    以下为秋色园QBlog流程代码,仅供参考:

    说明:

    本阶段涉及到以下多个重点问题:

    1:如何加载页面?

    2:如何加载语言文件?

    3:如何处理CSS/IMG路径?

    4:如何统一翻译?

    5:引发新的OnPost流程?

    这些细节问题,将在下节进行更详细的解析,本节顺着把下面的流程给解析完。

     

    三:页面填充区:ashx处理程序负责的3个流程

     

    在经过参数初始化,页面加载两个流程之后,各ashx处理程序的任务将变的简单

    1:protected abstract void Page_Load()

    正常访问:重写此方法,对页面进行内容填充。

    2:protected virtual void Page_OnCache()

    缓存访问:重写此方法,完成个别的处理,如:用户名

    3:protected virtual void OnPost()

    提交访问:重写此方法,对提交内容处理,并入库

    四:输出前的处理:private void Page_PreEnd()

     

    当参数初始化->加载页面->填充页面等步骤完成之后,

    在将页面的html输出给客户端之前,

    还需要处理点事情,而这个过程,将是处理这些事情的好地方。

     

    秋色园QBlog 在这里,主要都处理了哪些流程呢?如下:

    1:计算用户和文章的访问统计

    2:处理页面的标题

    3:缓存页面


    五:页面html输出到客户端:private void Page_End()

     

    这里的处理将变的相当的简单:

    输出:XmlDocument.OuterXml到客户端

    销毁:调用各个全局变量的Dispose方法,注销各个对象。

     

    总结

    本节相对详细的解析了秋色园QBlog整个生命周期处理流程,

    并介绍了每个周期要处理的事情。

    但具体还留下很多细节,等待详细的解析及示例。

    而这些,下一节为你的解析:如何加载页面?及如何实现页面多语言翻译?

  • 相关阅读:
    利用expect实现自动化操作
    svn项目权限控制
    linux jdk环境变量
    Google Authenticator加强ssh安全
    k8s之configmap配置中心
    .NET面试题目二
    .NET面试题目一
    经典.net面试题目(3)
    经典.net面试题目(2)
    经典.net面试题目(1)
  • 原文地址:https://www.cnblogs.com/cyq1162/p/1964745.html
Copyright © 2011-2022 走看看