秋色园QBlog技术原理解析:Module之页面基类设计(五)

简介:
文章回顾:
1:  秋色园QBlog技术原理解析:开篇:整体认识(一) --介绍整体文件夹和文件的作用
2:  秋色园QBlog技术原理解析:认识整站处理流程(二) --介绍秋色园业务处理流程
 
本节,将为大伙介绍如何设计一个页面的基类,同时为你解析秋色园QBlog的基类设计方案。
 
一:传统WebForm页面Page基类
 
传统的页面基类,基本继承自System.Web.UI.Page,如:
///
/// 共用页面基类
///

public class PageBase : System.Web.UI.Page
{}
如此继承的原因?
1:为了处理某些共同逻辑、减化代码、统一处理某些事情所需。
2:基于开发中,要用到很多用户控件、ViewState等,享受丰富的服务端控件带来的开发优势,提高开发效率。
3:早已习惯WebForm开发,虽然最近MVC流行。
我在一些内部系统或站点管理后台上,也经常使用,如我用它来处理以下内容:
1:用户权限
2:常见方法封装,包括服务端方法、脚本方法。
3:列表控件Repeater/DataList/GridView的进一步控制:如:光棒效果[就是移动时行的高亮显示]、列头翻译,列的隐藏控制等。
4:其它......
再简单看一下System.Web.UI.Page,发现如下的继承:
public class Page : TemplateControl, IHttpHandler
{
// 摘要:
// 一个定义呈现的页中的 EVENTARGUMENT 隐藏字段的字符串。
[EditorBrowsable(1)]
public const string postEventArgumentID = "__EVENTARGUMENT";
//
// 摘要:
// 一个定义呈现的页中的 EVENTTARGET 隐藏字段的字符串。
[EditorBrowsable(1)]
public const string postEventSourceID = "__EVENTTARGET";
// 摘要:
// 初始化 System.Web.UI.Page 类的新实例。
public Page();
//省略N行...
}
简说:
为了实现和丰富的服务端控件打交道,继承了TemplateControl这个丰富的控件基类,同时引入的ViewState。方便的同时,也被世人所鄙视,甚至把网站运行慢的原因,都推到ViewState身上。
 
保守估计也许可能应该或许有部分人群,使用mvc的原因,仅为mvc没viewstate而已,和干净点的html生成
举个小例子:
很多人看到 秋色园QBlog的站点,点击看html源代码,在干炼的html中寻不到ViewState的影子时,
就发电来问:
秋色园是不是mvc开发的?
呀的~没有ViewState的就是mvc?
没有ViewState的,不一定是mvc,可能正如你这样处理:
1:输出前截断输出,对html进行替换处理后,再输出干净的html
2:利用1的方法,把输出的html保存成文件
3:请求中可以缓存html或直接请求html
 
秋色园不是mvc,何以生成的html没有ViewState,输出前替换了ViewState?答案:No。
 
二:秋色园之基类设计
 
秋色园的基类设计,仅是退一步而已,和System.Web.UI.Page一样,继承自:IHttpHandler。
如:
public abstract class HttpCustom : IHttpHandler
{}
 
以下内容:
将接第三节URL重定向到Default.aspx的示例继续补充,给大伙解析秋色园基类的设计:
 
1:新建类库,为了自己好找,名字还以UrlRewrite开头了,叫:UrlRewriteModule
 
2:把Class1.cs更名为HttpCustom,并继承自IHttpHandler,如下图:
正如上图你看到的,截图时类少写了一个关键字:abstract,哈哈~
 
3:创建自己的页面生存周期方法,大体如下:
说明:
从上面的示例中,我们创建了属于自己的页面生存周期,把那个经常属于面试题的Page的页面生存周期都仍一边去。
 
4:接下来,再做点事,把重点引到ashx处理程序中,并抛弃aspx
 
4.1:在原来的站点UrlRewriteDemo中添加对项目UrlRewriteModule的引用
4.2:添加Default.ashx处理程序,继承自HttpCustom,并重写Page_Load方法:
4.3:把UrlRewrite库的重定位,从之前的定位到Defaut.aspx改成Default.ashx
 
5:一切就绪,F5运行看效果
再来一张:
经过上面的一折腾:
我们实现了属于自己的页面生存周期,并以比较让人熟悉的Page_Load方法,分给各个ashx处理程序,当然,基类要做的事情,还有好多,比较好多方法都是private,说明要自己处理,后节待续。
 
总结:
本节就到这里结束了,从本节中看出,秋色园QBlog(http://www.cyqdata.com/)在设计中,抛弃了传统的Page及它所有的用户控件,开创了自己的生命周期。
然而,当Asp.net没有aspx、ascx之后,秋色园如何开创新的开发流程?页面如何加载与呈现?如何触发事件请求?
下节将为你解析,敬请关注。
 
最后是本节示例下载:  UrlRewriteModule.rar



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



相关文章
|
数据采集 安全 数据挖掘
淘宝天猫宝贝详情页面商品评论采集接口全解析
淘宝天猫商品评论采集接口为电商数据挖掘提供了重要工具。通过分析海量评论,消费者可获取购买决策参考,商家能优化产品与服务,市场研究者则能洞察行业趋势与竞品表现。该接口支持Python请求,助力开发者构建智能分析应用,推动电商生态中各方价值提升。使用时需遵守平台规则,确保数据安全与合法利用。
517 15
|
数据采集 Web App开发 JavaScript
DOMParser解析TikTok页面中的图片元素
DOMParser解析TikTok页面中的图片元素
|
数据采集 XML API
深入解析BeautifulSoup:从sohu.com视频页面提取关键信息的实战技巧
深入解析BeautifulSoup:从sohu.com视频页面提取关键信息的实战技巧
|
数据采集 XML 数据格式
解析Amazon搜索结果页面:使用BeautifulSoup
解析Amazon搜索结果页面:使用BeautifulSoup
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
650 2
|
设计模式 存储 安全
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象结构型模式比类结构型模式具有更大的灵活性。 结构型模式分为以下 7 种: • 代理模式 • 适配器模式 • 装饰者模式 • 桥接模式 • 外观模式 • 组合模式 • 享元模式
1076 140
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
|
算法 测试技术 C语言
深入理解HTTP/2:nghttp2库源码解析及客户端实现示例
通过解析nghttp2库的源码和实现一个简单的HTTP/2客户端示例,本文详细介绍了HTTP/2的关键特性和nghttp2的核心实现。了解这些内容可以帮助开发者更好地理解HTTP/2协议,提高Web应用的性能和用户体验。对于实际开发中的应用,可以根据需要进一步优化和扩展代码,以满足具体需求。
1726 29
|
前端开发 数据安全/隐私保护 CDN
二次元聚合短视频解析去水印系统源码
二次元聚合短视频解析去水印系统源码
751 4
|
JavaScript 算法 前端开发
JS数组操作方法全景图,全网最全构建完整知识网络!js数组操作方法全集(实现筛选转换、随机排序洗牌算法、复杂数据处理统计等情景详解,附大量源码和易错点解析)
这些方法提供了对数组的全面操作,包括搜索、遍历、转换和聚合等。通过分为原地操作方法、非原地操作方法和其他方法便于您理解和记忆,并熟悉他们各自的使用方法与使用范围。详细的案例与进阶使用,方便您理解数组操作的底层原理。链式调用的几个案例,让您玩转数组操作。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
移动开发 前端开发 JavaScript
从入门到精通:H5游戏源码开发技术全解析与未来趋势洞察
H5游戏凭借其跨平台、易传播和开发成本低的优势,近年来发展迅猛。接下来,让我们深入了解 H5 游戏源码开发的技术教程以及未来的发展趋势。

热门文章

最新文章

推荐镜像

更多
  • DNS