首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ASP.NET如何解析页面?

ASP.NET如何解析页面?
EN

Stack Overflow用户
提问于 2009-06-12 00:11:15
回答 4查看 3.3K关注 0票数 2

我正在寻找一篇文章,它将深入探讨ASP.NET是如何工作的,以及它是如何从XML标记呈现控件的。例如,在幕后,ASP.NET如何获取以下标记并使其产生我们所看到的结果?

代码语言:javascript
运行
复制
<asp:Label ID="MyLabel"><%= myObject.Text%></asp:Label>

有没有人知道有什么文章会深入探讨ASP.NET的内部工作原理?

EN

回答 4

Stack Overflow用户

发布于 2009-06-12 00:21:12

在“幕后”发生的事情是,每个ASP.NET页面都被编译成一个.NET类,就像其他任何页面一样。控件(ASCX)的编译方式相同。有一个用于ASP.NET标记的编译器,就像有一个用于c#和VB.NET的编译器--你可以把ASP.NET标记看作是另一种编译成原生ASP.NET的语言。

原生ASP.NET标记由PageParser处理。您可能注意到这个类有一个有趣且非常有用的方法- GetCompiledPageInstance。正如它所暗示的那样,它将页面编译为本机.NET类。这可以被覆盖(例如,你可以想出你自己的标记并编写你自己的解析器/编译器)。Spark是ASP.NET标记的流行替代方案。

每个类最终都继承自PageControl。这两个类都有Render()方法,在该类执行完已实现的自定义功能后,将HTML写入输出流。

最大的区别在于,编译通常发生在与c#或VB.NET代码大不相同的时间。与其说这是一个技术需求,不如说它是一个允许将表示.NET语言与函数式.NET语言解耦的特性。当在web服务器的上下文中请求ASPX和ASPX页面时,ASP.NET运行时会对其进行编译。然后将编译后的程序集保存在存储器中,直到a) web应用程序关闭或b)在ASPX文件之一中检测到文件系统改变,从而触发重新编译。

It is possible to compile你的ASPX页面和你的c#/vb.net/任何东西,这样你就可以将整个应用程序部署为一个单独的程序集。这有两个优点--第一,明显易于部署单个DLL。其次,它消除了在ASP.NET web应用程序中经常伴随着“第一次点击”的漫长等待时间。由于所有页面都是预编译的,因此只需在第一次请求时将程序集加载到内存中,而不是编译每个文件。

票数 6
EN

Stack Overflow用户

发布于 2009-06-12 00:20:02

Reflector -> Expand System.Web.UI -> PageParser类->反编译->享受

(抱歉,不是刻薄;这是我能够自己掌握它的唯一方法)

票数 2
EN

Stack Overflow用户

发布于 2009-06-12 00:42:53

我一直很喜欢这个网站。

http://www.4guysfromrolla.com/articles/050504-1.aspx (概述)

http://www.4guysfromrolla.com/articles/011404-1.aspx (更深入)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/984435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档