ASP.NET WebForm

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wuxinwudai/article/details/53820295

ASP.NET WebForm

一、ASP.NET WebForm应用程序生命周期

1、对请求进行验证、将检查浏览器发送的信息,并确定其是否包含潜在恶意标记
2、如果已在 Web.config 文件的 UrlMappingsSection 节配置了任何 URL 映射,则执行 URL 映射
3、引发 BeginRequest 事件
4、引发 AuthenticateRequest 事件
5、引发 PostAuthenticateRequest 事件
(4,5用于安全模块对请求进行身份验证)
6、引发 AuthorizeRequest 事件
7、引发 PostAuthorizeRequest 事件
(6,7用于安全模块对请求进程授权)
8、引发 ResolveRequestCache 事件
9、引发 PostResolveRequestCache 事件
(8,9使用缓存模块查询缓存内容对请求响应)
10、根据所请求资源的文件扩展名,选择实现 IHttpHandler 接口的类对请求进行处理,如果该请求针对从 System.Web.Page 类派生的对象,并且需要对页面进行编译,则 ASP.NET 会在创建该 Page 的实例之前对其进行编译
11、引发 PostMapRequestHandler 事件
12、引发 AcquireRequestState 事件
13、引发 PostAcquireRequestState 事件
(12,13 用于使状态模块获取基于当前请求的相应的状态信息,如 SessionState)
14、引发 PreRequestHandlerExecute 事件
15、对该请求调用合适 IHttpHandler 类的 ProcessRequest 方法,例如,如果该请求针对某页,则当前页实例将处理该请求
16、引发 PostRequestHandlerExecute 事件
17、引发 ReleaseRequestState 事件
18、引发 PostReleaseRequestState 事件
19、如果定义了 Filter 属性,则执行响应筛选
20、引发 UpdateRequestCache 事件
21、引发 PostUpdateRequestCahce 事件
22、引发 EndRequest 事件
23、引发 PreSendRequestHeaders 事件
24、引发 PreSendRequestContent 事件

二、ASP.NET WebForm 重要知识点

1、数据绑定表达式

<%# Eval("FieldName") %>
//aspx 文件添加数据绑定指令
//cs 文件调用 Page 或 Control 的 DataBind 方法进行数据绑定
//对 Select、ListBox、DropDownList、RadioButtonList、CheckBoxList 等具有DataTextField 和 DataValueField 的控件进行数据源绑定

2、$表达式,web.config 文件读取器

<%$ AppSetting:appName %>

3、从 ExpressionBuilder 获得自定义表达式构造器
4、Page类:
  a、IsPostBack属性用于自身的回发处理,一般放置于Page_Load事件处理中;
  b、IsCrossPagePostBack属性用于跨页投递,常与PreviousPage属性同用(Button控件有CrossPostUrl用于客户端跨页投递);
  c、Server.Transfer()方法用于服务器导航同时向用户隐藏真实URL;
  d、自定义控件的状态保留须重写其OnInit方法,在其中加入 Page.RegisterRequireControlState(this) 语句。

三、ASP.NET WebForm 事件模型

事件驱动回发原理:当 Page 上每一个 AutoPostBack 属性为true 的控件渲染时,默认的回发事件例如Button的Click事件或DropDownList的SelectedIndexChange事件将在客户端渲染出相应的onclick事件和onchange事件,并将用客户端的__doPostBack方法进行处理。

//__doPostBack 函数原型:
function __doPostBack(eventTarget,eventArgument){
    var theForm = document.form1;//注:ASP.NET WebForm 每一个页面只允许有一个 form 表单
    theForm.__EVENTTARGET.value = eventTarget;
    theForm.__EVENTARGUMENT.value = eventArgument;
    theForm.submit();
}
//__doPostBack 函数中 theForm.__EVENTTARGET,theForm.__EVENTARGUMENT 是每一个Page页面渲染均存在的 hidden 隐藏域,其作用在于告知服务器端客户端事件回发的事件源以及事件的参数。

//客户端渲染
<input type="button" id="button1" onclick="__doPostBack('button1','')" />
<select id="select1" onchange="__doPostBack('select1','')"></select>

四、ASP.NET WebForm 异步实现

  Ajax 技术:Ajax技术包括客户端脚步预约 JavaScript、异步数据获取技术 XMLHTTPRequest、数据交换和操作技术XML和XSLT、动态显示和交互技术DOM及基于标准的表示数XHTML和CSS。

  服务器异步编程的优点:有利于释放 IIS 工作线程,在处理单个客户端是未必能提高响应速度,但是稀缺的 IIS 工作线程回到线程池可在访问频繁时显著提高服务器吞吐量。

1、在 ASP.NET 1.X 中 实现异步页面:
  a、实现 IHttpAsyncHandler 接口;
  b、自定义线程池;
  c、实现异步委托。
2、在 ASP.NET 2.0 以上异步页面:
  a、设置页指令:<%@Page Async=”true” … />;
  b、在 Page 的 OnLoad 事件中调用注册开始和结束事件处理程序委托的方法AddOnPreRenderCompleteAsync。
3、ASP.NET 3.5以上使用AJAX
a、aspx页面添加 ScriptManager和ScriptManagerProxy组件;
b、添加 UpdatePanel的异步组件更新局部视图。

五、ASP.NET WebForm 页面优化、性能优化、SEO优化等

1、URL优化:在global.asax中定义规则进行路由映射和请求资源映射等;
2、对固定URL重定向使用 Response.RedirectPermanent(newUrl) 和 Response.RedirectToRoute(routeName) 替代原有 Redirect 方法。
3、客户端 Id 渲染 尽可能使用4.0以上版本

<pages controlRenderingCompatibilityVersion="3.5|4.0" clientIDMode="AutoID"/>

4、减少控件视图状态,减少异常处理代码,采用异步刷新,进行Cache和Session缓存,
5、使用 Response.Write() 方法优化部分输出;
6、控制和设置页面上数据控件的AutoEventWireup属性,减少不必要更新。

六、ASP.NET 验证、授权和配置

<configuration>
    <system.web>
        <!-- 认证 -->
        <authentication mode="form">
        </authentication>
    </system.web>
</configuration>

七、编译和部署

1、普通编译:第一次访问时编译
2、部署预编译:高可见、高安全,将图像、文本等预先编译到 dll 中
3、运行时编译:适用于站点大灵活度高部署,编译速度中等

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页