ASP.NET初学笔记:ASP.NET Framework概览

来源:互联网 发布:初学瑜伽哪个软件好 编辑:程序博客网 时间:2024/06/08 04:56

1. ASP.NET.NET Framework

  • ASP.NET.NET Framework的一部分.NET Framework由两部分组成:框架类库(Framework Class Library)和公共语言运行库(Common Language Runtime,也称共公语言运行时).NET Frame work包含成千上万能用于构建应该程序的类。框架类库被设计用来使取普通的编程任务易于完成。框架中的每个类都有属性、方法和事件。属性、方法和事件作为类的成员公开给外界。如果知道一个类的成员,那么你就知道这个类所能做的所有事情。 

2.  命名空间

  • 命名空间仅仅是一个类别。比如,所有和操作文件系统有关的类都位于System.IO命名空间中。在页面中使用一个类之前,必须指出这个类所关联的命名空间。有很多途径来做这件事:
    第一种方法,使用类的命名空间来完全限定类名。
    第二种方法,导入一个命名空间。<% Import Namespace=”要导入的命名空间” %>
    第三种方法,为应用程序添加一个Web配置文件。

    不是所有的命名空间都必须导入,ASP.NET Framework提供了可以自由使用的最常用的命名空间,这些默认的命名空间在根Web配置文件的pages元素中列出。

3. 程序集

  • 程序集(assembly)就是保存.NET Framework中的类所在硬盘上的.dll文件。比如,ASP.NET Framework中的所有类都位于一个叫做System.Web.dll的程序集中。程序集分为两类:私有的和共享的。私有的程序集只能用于一个应用程序,而共享的程序集能用于同一个服务器端上的所有应用程序。使用.NET Framework中的任何类,必须做两件事。第一,应用程序必须包含这个类的程序集;第二,应用程序必须导入这个类所关联的命名空间。大部分情况下,不必关心所需的程序集,因为最常用的程序集已经自动地引用了。但如果要使用一个专门的程序集,就必须显示地为程序集添加引用。在.NET Framework SDK文档中,每一个类条目都列出了类关联的程序集和命名空间。

 

4. 公共语言运行库

  • .NET Framework的第二部分公共语言运行库(CLR),用于执行应用程序代码。
  • 当使用像C#VB.NET这样的语言编写.NET Framework应用程序时,源代码从不会直接编译成机器码。C#VB.NET编译器把代码转换成一种叫MSIL(微软中间语言)的特殊语言。MSIL不与特定的CPU相关,是一种底层的、与平台无关的语言。当应用程序应行时,JITTER(Just-In-Time编译器)MSIL代码实时(just-in-time)”编译成机器码。事实上,.NET Framework只能理解一种语言——MSIL,但可以在.NET Framework上使用C#VB.NET语言编写的程序,因为.NET Framework包含能把由这些语言编写的代码编译成MSIL的编译器。

 

5. ASP.NET控件

  •  一个ASP.NET控件就是一个运行在服务器端并将内容呈现到浏览器的一个.net类。
  • 控件的声明部分——asp:前缀,指定控件的命名空间。所有的ASP.NET控件都包含在System.Web.UI.WebControls命名空间中。

6. 视图状态

  • 万维网(World Wide Web)的基本协议是HTTP协议,是一种无状态协议。每一次对网站的网页发出请求,在网站来看都是陌生的。asp.net framework成功突破了HTTP协议的这个限制。比如,给一个LabelText属性赋一个值,Label控件会在多次页面请求之间保存这个值。所有的控件的属性值都保存在视图状态(查看页面源代码,一个叫_VIEWSTATE的表单隐藏字段)中。当页面回传到服务器时,ASP.NET Framework对这个隐藏字段的字符串进行分解,重建所有保存在视图状态中的所有属性值。 

7. 动态编译

  • 当创建一个asp.net页面时,其实是在创建一个.net类的源代码,创建System.Web.UI.Page类的一个实例。asp.net页面的所有内容,包括所有的脚本和HTML内容,都会编译进一个.net类中。
  • 请求一个asp.net页面时,asp.net framework检测这个页面对应的.net类,如果对应的类不存在,Framework会自动把这个页面类编译成一个新的类,并把编译后的类(程序集)保存在一个叫Temporary asp.net files临时文件夹中。下次对这个页面请求时,页面就不会再编译一次了。先前的编译类会执行并把结果返回给浏览器。以任何方式对asp.net页面的修改,对应的.net类都会被自动删除。下次对这个页面请求时,框架自动地把修改后的页面代码编译成一个新的.net类。 这样的过程,称为动态编译。

8. 处理页面事件

  • 下面是请求页面时引发的事件序列:(1)PreInit(2)Init(3)InitComplete(4)PreLoad(5)Load(6)LoadComplete(7)PreRender(8)PreRenderComplete(9)SaveStateComplete(10)Unload
  • 一般情况下都不需要处理LoadPreRender事件之外的任何事件。Load事件用于初始化页面中控件的属性,发生在所有控件事件之前,而PreRender事件发生在所有控件事件之后。下面代码显示LoadPreRender事件之间的不同: asp.net页面支持已默认启用的AutoEventWireUp特性。如果把一个子程序命名为Page_Load(),这个子程序会自动处理Page Load事件。

9. 调试和跟踪asp.net页面

  • 执行页面时,如果要查看详细的错误信息,那么需要为这个页面或整个应用程序启用调试。可以通过在<% @ Page %>指认中添加Debug=”true”属性来为页面启用调试。要注意的是,把应用程序作为产品发布时,请确认禁用了调试,因为在调试模式下编译应用程序,编译器不会进行某些性能的优化。在Web配置文件中添加以下代码为整个应用程序启用调试:
  • 由于安全和性能的原因,在将网站发布为产品时,在你的产品服务器上将以下元素添加到machine.config文件的system.web部分中:<deployment retail=”true”/>
    该元素禁止调试模式,允许远程自定义错误并且禁止跟踪。
  • ASP.NET同时支持页面级的跟踪和程序级的跟踪。如果想要输出页面执行的跟踪信息,可在页面中的<%@ Page %>指令中添加一个Trace=”true”属性。这个属性启用跟踪并使跟踪信息附加在页面底部。以下代码展示如何利用页面的跟踪。
  • 页面跟踪的缺点之一在于全世界任何人都可以看到跟踪信息。使用程序级的跟踪可以解决这个问题。启用程序级的跟踪后,只在请求名为Trace.axd的特殊页面时才会显示跟踪信息。在Web配置文件中添加如下代码可以启用程序级跟踪,这样就可以在Web浏览器中请求Trace.axd页面了,可以显示启用程序级跟踪后的最后10次页面请求。

 

原创粉丝点击