ASP.NET Core項目目錄結構介紹


我們下面通過在Visual Studio 2017中創建一個空的Web應用程序來詳細說明下asp.net core項目目錄結構:

 

1、項目結構說明

 

(1)、依賴項

這里主要分兩部分SDK, 目前這兩部分下面都只有一項。

 

Nuget

包含Microsoft.AspNetCore.App, 展開它看一下MVC、EF等等都有,它包含了:

· ASP.NET Core 團隊支持的所有包。

· Entity Framework Core 支持的所有包。

· Entity Framework Core 使用的內部和第三方依賴關系。

猛地一看,這是一非常大而全的包了asp.net core模塊化有點不一致, 非常不爽。

其實這些程序集不會隨着項目發布一起出現在部署包中, 所以發布包不會變大反而會變小, 不必擔心。

SDK:

SDK中包含了一項: Microsoft.NETCore.App, 它是.NET Core 的部分庫。 也就是 .NETCoreApp 框架。 它依賴於更小的 NETStandard.Library。

SDK同樣是一個大而全的集和, 在部署的時候, SDK中的引用依然不會出現在部署包中, 如下圖, 是不是很精簡。

 

(2)、launchSettings.json

顧名思義, 這是一個啟動配置文件, json格式的。

通過上面的項目結構圖可以發現, 常見的web.config或app.config等xml格式的config文件找不到了,取而代之和的都是json。

打開這個json看一下。 一項項的不好解釋, 不過我們可以通過windows 中的 vs2017中的圖形化的配置界面(右鍵當前項目->屬性->調試),如下圖所示:

 

(3)、wwwroot文件夾

看這名字好像是IIS的默認網站根目錄, 它包含了所有的"前端"的靜態文件, css、images、js、一個名為lib的文件夾和favicon.ico圖標文件。

lib中默認內容是bootstrap和jquery相關內容。

在Startup中, 會調用一個無參數的UseStaticFiles()方法, 將此目錄標記到網站根目錄。

 

 

Startup.cs 的區別在於Startup.cs ,這個可以通過 Program.cs 中的代碼看出來:

WebHost.CreateDefaultBuilder(args).UseStartup<Startup>();

 

曾經使用過 ASP.NET,我們大家都知道以下兩點:

1、Global.asax 文件,可以在啟動 Web 應用程序期間編寫代碼來執行的一個地方。

2、 Web.config 文件,用來包含應用程序需要執行的所有配置參數。

但是在 ASP.NET Core 中,這些文件全部消失,取而代之的是使用 Startup.cs 加載配置和啟動代碼。

Startup.cs文件中有一個 Startup 類,在這個類中可以配置應用程序,甚至配置配置源。

 

2、項目啟動介紹

應用程序入口類

 

這是一個大家非常熟悉的Main方法, 也就是應用的起點, 啟動后通過UseStartup<Startup>()指定下文的Startup啟動文件進行啟動。

在應用啟動的時候,會執行CreateWebHostBuilder方法,在這個方法中通過類Startup創建了默認的HostBuilder。

3、應用啟動類

 

 

 

這是.NET Core非常重要的地方, 包括加載配置, 通過依賴注入加載組件, 注冊路由等都在此處進行。

Startup 類必須是公開的,且必須包含以下兩個方法

1、ConfigureServices()方法

public void ConfigureServices(IServiceCollection services){ }

 

ConfigureServices() 方法用於定義應用程序所需要的服務,例如 ASP.NET Core MVC 、 Entity Framework Core 和 Identity 等等。

2、Configure() 方法

public void Configure(IApplicationBuilder app, IHostingEnvironment env){ }

 

Configure() 用於定義請求管道中的中間件。

 

Web項目模板默認在項目啟動的時候調用IApplicationBuilder.run方法,在當前HTTP上下文(HttpContext)中輸出了Hello World!

Startup 類中的 Configure() 方法用於配置和構建 HTTP 請求管道的地方。該怎么理解這句話呢?

其實也就是說,Configure() 方法可以用來定義我們的應用程序如何響應請求。對於任意網址,默認情況下它只會輸出 Hello World!

例如,如果我們想要為諸如 index.html 之類的靜態文件提供服務,則需要向 Configure() 方法添加一些代碼。

例如,如果想要給 ASP.NET MVC 控制器發送錯誤頁面或路由請求,都需要在這個 Configure() 方法中做一些工作。

比如我們還可以用app.UseAuthentication()來做身份驗證。

我們使用 Use、Run 和 Map 來配置 HTTP 管道。

Use 方法可使管道短路(即不調用 next 請求委托)。

Run 是一種約定,並且某些中間件組件可公開在管道末尾運行的 Run[Middleware] 方法。

Map* 擴展用作約定來創建管道分支。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM