ASP.NET MVC入口点

时间:2015-11-20 00:16:28

标签: asp.net asp.net-mvc dll environment

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

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

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

1 个答案:

答案 0 :(得分:6)

幕后有很多工作要做。在非常广泛的级别,对URL进行请求,服务器返回一个字符串。

到达那里是有趣的部分。

首先,有一个服务器设置。我们假设它正在使用IIS。 IIS公开了一个"默认应用程序"。可以通过服务器的IP地址访问此应用程序(通常通过防火墙进行端口转发)。

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

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

启动应用程序意味着执行.dll。这也将级联到执行相关的dll,具体取决于配置文件和参考设置。最后,我们来到asp.net MVC的起点。

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

一旦执行了action方法,它就会从调用中获取注入其中的参数并执行它所做的任何事情 - 命令pizza。服务器在订购披萨时会想到。订购后,该方法返回一个视图。该视图只是通过订购披萨来组成信息的一种方式。它仍在执行服务器端。视图完成后,以及从订购披萨方面传递的信息,整个返回值将写入响应流。

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

http://www.dotnet-tricks.com/Content/images/mvc/ASP.NETMVC5Pipeline.png