2015-11-20 82 views
1

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

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

我可能是错的,但是这是我想象它在我的脑海:)

回答

3

还有就是那张幕后非常大量的工作。在广泛的广泛层面上,向URL发出请求,服务器返回一个字符串。

到达那里是一个有趣的部分。

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

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

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

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

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

一旦执行操作方法,它将从调用中注入参数并执行任何操作 - 命令比萨饼。服务器在比萨订购时会考虑。一旦订购,该方法返回一个视图。该视图仅仅是订购比萨饼的信息的一种方式。它仍在执行服务器端。一旦视图完成,以及从排序比萨方面传递的信息,整个返回值就会写入响应流。

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

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

+0

很好的答案,非常感谢!因为我没有足够的声誉,所以我无法进行任何投票:) – Brummy

+0

关于默认应用程序的另一个问题:如果我们有一个使用IIS的服务器并且在那里有多个MVC应用程序,那么会有多个默认应用程序,一个为每个应用程序?对于托管的所有应用程序是通用的“默认应用程序”还是它们对于每种类型的应用程序都是特定的?非常感谢。 – Brummy

+0

“默认应用程序”本质上是ASP.NET MVC引擎吗? – Brummy