秋色园QBlog技术原理解析:Module之页面基类-生命周期流程(六)

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介:
文章回顾:
1:  秋色园QBlog技术原理解析:开篇:整体认识(一) --介绍整体文件夹和文件的作用
2:  秋色园QBlog技术原理解析:认识整站处理流程(二) --介绍秋色园业务处理流程
5:  秋色园QBlog技术原理解析:Module之页面基类设计(五) --介绍创建基类和自定义生命周期
 
 
从上节中,我们为页面基类自定义了如下的几个生命周期:
本节,将为你详细解析秋色园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 整个生命周期处理流程,
并介绍了每个周期要处理的事情。
但具体还留下很多细节,等待详细的解析及示例。
而这些,下一节为你的解析:如何加载页面?及如何实现页面多语言翻译?


     本文转自cyq1162 51CTO博客,原文链接: http://blog.51cto.com/cyq1162/500314 ,如需转载请自行联系原作者


相关文章
|
6天前
|
机器学习/深度学习 人工智能 算法
模型无关的局部解释(LIME)技术原理解析及多领域应用实践
在当前数据驱动的商业环境中,人工智能(AI)和机器学习(ML)已成为各行业决策的关键工具,但随之而来的是“黑盒”问题:模型内部机制难以理解,引发信任缺失、监管合规难题及伦理考量。LIME(局部可解释模型无关解释)应运而生,通过解析复杂模型的个别预测,提供清晰、可解释的结果。LIME由华盛顿大学的研究者于2016年提出,旨在解决AI模型的透明度问题。它具有模型无关性、直观解释和局部保真度等优点,在金融、医疗等领域广泛应用。LIME不仅帮助企业提升决策透明度,还促进了模型优化和监管合规,是实现可解释AI的重要工具。
41 9
|
9天前
|
程序员 C++
C++编程:While与For循环的流程控制全解析
总结而言,`while`循环和 `for`循环各有千秋,它们在C++编程中扮演着重要的角色。选择哪一种循环结构应根据具体的应用场景、循环逻辑的复杂性以及个人的编程风格偏好来决定。理解这些循环结构的内在机制和它们之间的差异,对于编写高效、易于维护的代码至关重要。
22 1
|
16天前
|
监控 数据挖掘 BI
项目管理流程全解析及关键步骤介绍
项目管理流程是项目成功的基石,涵盖启动、规划、执行、监控和收尾等阶段。Zoho Projects 等软件可提高效率,支持结构化启动与规划、高效执行与协作及实时监控。这些流程和工具对项目的全局视角、团队协作和风险控制至关重要。项目管理软件适用于不同规模企业,实施时间因软件复杂度和企业准备而异。
33 2
|
1天前
|
JSON JavaScript API
商品详情数据接口解析返回的JSON数据(API接口整套流程)
商品详情数据接口解析返回的JSON数据是API接口使用中的一个重要环节,它涉及从发送请求到接收并处理响应的整个流程。以下是一个完整的API接口使用流程,包括如何解析返回的JSON数据:
|
1月前
|
缓存 网络协议 Linux
DNS的执行流程是什么?
DNS的执行流程是什么?
35 0
|
2月前
|
监控 网络协议 Java
Tomcat源码解析】整体架构组成及核心组件
Tomcat,原名Catalina,是一款优雅轻盈的Web服务器,自4.x版本起扩展了JSP、EL等功能,超越了单纯的Servlet容器范畴。Servlet是Sun公司为Java编程Web应用制定的规范,Tomcat作为Servlet容器,负责构建Request与Response对象,并执行业务逻辑。
Tomcat源码解析】整体架构组成及核心组件
|
2月前
|
存储 NoSQL Redis
redis 6源码解析之 object
redis 6源码解析之 object
60 6
|
28天前
|
存储 缓存 Java
什么是线程池?从底层源码入手,深度解析线程池的工作原理
本文从底层源码入手,深度解析ThreadPoolExecutor底层源码,包括其核心字段、内部类和重要方法,另外对Executors工具类下的四种自带线程池源码进行解释。 阅读本文后,可以对线程池的工作原理、七大参数、生命周期、拒绝策略等内容拥有更深入的认识。
什么是线程池?从底层源码入手,深度解析线程池的工作原理
|
1月前
|
开发工具
Flutter-AnimatedWidget组件源码解析
Flutter-AnimatedWidget组件源码解析
149 60

热门文章

最新文章

推荐镜像

更多