gpt4 book ai didi

iis - Web 应用程序是如何启动的?入口点在哪里(如果有的话)?

转载 作者:行者123 更新时间:2023-12-03 00:21:48 25 4
gpt4 key购买 nike

我正在使用 IIS 开发一些 Web 应用程序。我曾经认为每个应用程序都应该有一个入口点。但网络应用程序似乎没有这样的功能。

我读过很多关于如何在 IIS 下构建 ASP.NET 应用程序的书籍和文章,但它们并没有解决我想知道的最明显和基本的事情。

那么谁能告诉我网络应用程序是如何启动的?传统桌面应用程序和 Web 应用程序在工作模式(例如启动和终止逻辑)方面有什么区别?

非常感谢。

更新 - 2011 年 1 月 4 日 1 - 23:14

我目前的理解是:

当某个请求到达时,IIS 会提取请求中包含的 URL。我猜想 IIS 一定维护了某种内部表,它将 URL 映射到磁盘上相应的物理目录。我们以以下 URL 为例:

http://myhost/webapp/page1.aspx

借助上述内部表,IIS 将在磁盘上找到 page1.aspx 文件。然后检查这个文件并找到代码隐藏的代码文件。然后将构造适当的页面类实例,并按预定义的顺序调用其在代码隐藏文件中定义的方法。这一系列方法调用的输出将是发送给客户端的响应。

更新 - 2011/1/4 2 - 23:32

URL 只是用作上述内部表索引的标识符。通过此索引,IIS(或任何类型的 Web 服务器技术)可以找到资源的物理位置。然后通过一些提示(例如像 *.aspx 这样的文件扩展名),Web 服务器知道应该使用哪个处理程序(例如 asp.net ISAPI 处理程序)来处理该资源。所选的处理程序将知道如何解析和执行资源文件。

这也解释了为什么 Web 服务器应该是可扩展的。

最佳答案

这取决于您使用的语言和框架,但总的来说,有许多入口点将绑定(bind)到 HTTP 请求(例如通过 URL)。当服务器收到与这些绑定(bind)之一匹配的请求时,就会执行绑定(bind)的代码。

还可能存在根据请求的其他条件执行的各种过滤器链和拦截器。服务器启动时可能还会执行一些设置代码。最终,仍然有一个入口点 - 服务器的 main() 函数 - 但从 Web 应用程序的角度来看,重要的是请求绑定(bind)。

针对问题编辑进行编辑

我从未使用过 IIS,但我假设没有“查找表”,而是一些查找规则。我将向您介绍如何在 Apache 服务器上调用 .jsp 页面,这应该是基本相同的过程。

  1. Web 应用程序被写入并放置在文件系统中 - 例如C:/www/mywebapp
  2. 网络服务器被赋予一个配置规则,告诉它 URL 路径/webapp/应映射到 C:/www/mywebapp
  3. Web 服务器还配置为将 .jsp 文件识别为 JSP servlet
  4. Web 服务器收到对/webapp/page1.jsp 的请求,该请求被分派(dispatch)到工作线程
  5. Web 服务器使用其映射规则来定位 C:/www/mywebapp/page1.jsp
  6. Web 服务器将 JSP 文件中的代码包装在一个类中,并使用 serveRequest(request, response) 方法对其进行编译(如果尚未这样做)
  7. 网络服务器调用 serveRequest 函数,该函数现在是用户代码的入口点
  8. 当用户代码完成时,Web 服务器将响应发送到客户端,并且工作线程终止

这是最基本的系统 - 基于资源的 servlet(即 .jsp 或 .aspx 文件)。使用 MVC 框架等技术时,绑定(bind)规则变得更加复杂,但基本概念是相同的。

关于iis - Web 应用程序是如何启动的?入口点在哪里(如果有的话)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4595027/

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