新建項目
新建項目, 選擇.NET Core 有以下幾種類型可選, 分別是Console, ASP.NET Core 的空項目,Web API
咱們選擇ASP.NET Core Web App(MVC), 沒有標註MVC的是採用Razor pages 的項目。
項目結構圖
新建的項目結構以下圖所示, 大致上和ASP.NET 的Framework版本差很少, Controller、Model, View就不介紹了。
大概介紹一下各個文件是幹什麼用的,後面的文章會作詳細的研究。
launchSettings.json
顧名思義, 這是 json格式的啓動配置文件,以下圖所示:
複製代碼
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:9452",
"sslPort": 44379
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"MyFirstCore": {
"commandName": "Project",
"launchBrowser": true,
"applicationUrl": "https://localhost:5001;http://localhost:5000",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}
複製代碼
圖的上部分對應json中的profiles中定義的兩種配置,分別以IIS Express。基本上都是Web服務器好比URL、身份認證以及SSL等配置。
wwwroot
wwwroot它包含了全部的"前端"的靜態文件, css、image、JS以及一個名爲lib的文件夾。
lib中默認內容是bootstrap和jquery。
在Startup中,會調用UseStaticFiles()方法, 將此目錄標記到網站根目錄。
複製代碼
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
//.....
app.UseStaticFiles();
//.....
}
複製代碼
具體靜態文件的路徑及相關自定義配置, 受權等後文詳細研究。
依賴項
整個項目依賴引用的類庫,這裏主要分兩部分, NuGet和SDK, 目前這兩部分下面都只有一項.
Nuget:
包含Microsoft.AspNetCore.App, 展開它看一下, 裏面MVC、Razor、EF以及SQLLite都要,
它包含了
ASP.NET Core 團隊支持的全部包。
Entity Framework Core 支持的全部包。
ASP.NET Core 和 Entity Framework Core 使用的內部和第三方依賴關係。
這裏面是完整的AspNetCore的類庫,其實這些程序集不會隨着項目發佈一塊兒出如今部署包中, 不止沒引用的, 包括引用的也不會. 這些已經存在於部署環境中了, 因此發佈包不會變大反而會變小, 沒必要擔憂.
SDK:
SDk中包含了一項: Microsoft.NETCore.App, 它是.NET Core 的部分庫。 也就是 .NETCoreApp 框架。 它依賴於更小的 NETStandard.Library。
相對於上面的Microsoft.AspNetCore.App, 它一樣是包含了一些程序集.但它彷佛更"基礎"一些.
兩者異同
Microsoft.AspNetCore.App中大部分都是Microsoft.開頭的一些程序集, 而Microsoft.NETCore.App中出現的大多數是咱們熟悉的system.XXX的.
兩者的關係就像ASP.NET相對於.NET, 此處是Asp.NetCore相對於.Net Core.
SDK一樣是一個大而全的集和, 在部署的時候, SDK中的引用依然不會出如今部署包中。
appsettings.json
這就是原來的framework版本的MVC的Web.config文件,裏面會配置系統相關的全部的配置項,好比數據庫鏈接等。
默認狀況appsettings.json只有對於log日誌的相關配置。這裏就不一一說明了。
複製代碼
{
"Logging": {
"LogLevel": {
"Default":www.baikayule.cn "Warning"
}
},
"AllowedHosts": "*"
}
複製代碼
Program.cs
複製代碼
public class Program
{
public static void Main(string[www.chengsyl.cn] args)
{
BuildWebHost(args).Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>(www.tdcqpt.cn)
}
複製代碼
這裏是簡單的Main方法, 也就是應用的啓動的入口, 啓動後經過UseStartup<Startup>()指定下文的Startup啓動文件進行啓動。
Startup.cs
Startup類配置服務和應用程序的請求管道。這是.Net Core很是重要的地方, 包括加載配置, 經過依賴注入加載組件, 註冊路由等都在此處進行。
默認的代碼中:
複製代碼
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets www.dongfangyuld.com called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.Configure<CookiePolicyOptions>(options =>
{
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(www.dongfangyuld.com IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseHttpsRedirection(www.feishenbo.cn);
app.UseStaticFiles();
app.UseCookiePolicy();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
}
複製代碼
如上圖所示, 默認狀況下設置了兩種不一樣狀態下的錯誤頁, 指定靜態文件而且設置了路由。
在這裏, 咱們能夠向管道中經過中間件的方式插入咱們須要的工做內容。
好比咱們還能夠用app.UseAuthentication()來作身份驗證。
Startup類很是重要,涉及的內容也很是多, 好比管道機制、路由註冊、身份認證等都須要專題研究。
小結
項目的結構大致就是這樣,主要功能介紹完了,後面會一個一個詳細介紹各自的功能和做用。css