2015-11-20 81 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