gpt4 book ai didi

asp.net - ASP.NET 如何解析页面?

转载 作者:行者123 更新时间:2023-12-02 16:27:16 25 4
gpt4 key购买 nike

我正在寻找一篇文章,深入探讨 ASP.NET 的工作原理以及它如何从 XML 标记呈现控件。例如,在幕后,ASP.NET 如何采用以下标记并让它产生我们看到的结果?

<asp:Label ID="MyLabel"><%= myObject.Text%></asp:Label>

有人知道有哪一篇文章可以深入探讨 ASP.NET 的内部工作原理吗?

最佳答案

“幕后”发生的事情是,每个 ASP.NET 页面都被编译为 .NET 类,就像其他页面一样。控件 (ASCX) 的编译方式相同。就像有一个用于 C# 和 VB.NET 的编译器一样,有一个用于 ASP.NET 标记的编译器 - 您可以将 ASP.NET 标记视为编译为 native MSIL 的“另一种”语言。

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

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

最大的区别在于,编译通常发生在与 C# 或 VB.NET 代码截然不同的时间。这实际上并不是一个技术要求,而是一个允许将表示 .NET 语言与功能 .NET 语言解耦的功能。当在 Web 服务器上下文中请求 ASPX 和 ASCX 页面时,ASP.NET 运行时会编译它们。然后,编译后的程序集将保存在内存中,直到 a) Web 应用程序关闭或 b) 在其中一个 ASPX 文件中检测到文件系统更改,从而触发重新编译。

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

关于asp.net - ASP.NET 如何解析页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/984435/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com