ASP.NET MVC 入口点

ASP.NET MVC Entry Point

关于 ASP.NET MVC 应用程序执行的快速问题。

据我了解,MVC 应用程序的项目被编译成 DLL 文件。在MVC应用环境中,是否有一个可执行程序链接到这些DLL中?是否生成了一个程序,它本质上是使用 DLL 的 MVC 引擎,它位于服务器上并在域 URL 收到请求时调用?

我可能错了,但这就是我脑海中的想象:)

在幕后进行了大量的工作。在 非常 广泛的级别上,向 url 发出请求并且服务器 return 是一个字符串。

到达那里是有趣的部分。

首先,要设置服务器。让我们假设它正在使用 IIS。 IIS 公开了 "default application"。这个应用程序可以通过服务器的IP地址访问(通常是通过防火墙端口转发的方式)。

应用程序的信息保存在 IIS 中引用的文件夹中。该文件夹结构包含 .dll、图像、脚本、.cshtml、配置文件等。共享应用程序名称的 .dll 是启动应用程序的那个。 .dll 里面是 asp.net MVC 应用程序。

当应用程序池处于活动状态时,应用程序仅 运行。应用程序池仅在请求后的某个可变时间段内处于活动状态,如果它处于非活动状态,则请求必须等待池启动和应用程序启动。

启动应用程序意味着执行.dll。这也将根据配置文件和参考设置级联执行相关的 dll。最后,我们到了 asp.net MVC 开始的地方。

asp.net mvc 应用程序将从实例化路由 class 开始,它是整个条目的基础。这个路由class接受一个请求字符串,根据路由字典中的规则将其分解,然后使用反射实例化相关控制器并调用相关方法。

一旦执行操作方法,它就会获取调用中注入的参数并执行任何操作 - 订购披萨。服务器在订购比萨饼时思考。一旦订购,方法 return 就是一个视图。视图只是一种从订购比萨饼中组合信息的方法。它仍在执行服务器端。视图完成后,连同从订购披萨方面传递的信息,整个 return 值将写入响应流。

此时在浏览器中呈现响应,执行任何发送的脚本,希望在不久的将来将披萨放入烤箱。


(来源:dotnet-tricks.com