.NET Core詳解(1)——基礎瞭解
一:.NET Core 的有點和特性
1.跨平臺
ASP.NET 4.x 應用程式只能在 IIS 上託管,而 ASP.NET Core 應用程式可以託管在 IIS,Apache,Docker 甚至自己把自己託管在程序中(俗稱:自託管)。 從開發方式上來看,您可以使用 Visual Studio 或 Visual Studio Code 來構建.NET Core 應用程式。您也可以使用 Sublime 等第三方編輯器。
2.MVC與Web API統一的程式設計模型
3.依賴注入
4.可測試性
5.開源
6.模組化
二:建立專案
建立一個 “ASP.NET Core Web 應用程式”,並選擇空模板;
1.專案檔案
<Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup> <TargetFramework>netcoreapp2.2</TargetFramework> <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel> </PropertyGroup> <ItemGroup> <PackageReference Include="Microsoft.AspNetCore.App" /> <PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.2.0" PrivateAssets="All" /> </ItemGroup> </Project>
TargetFramework:此元素用於指定應用程式的目標框架,即開發者希望為應用程式提供的API程式集;
AspNetCoreHostingModel:此元素指定應如何託管 Asp.Net Core 應用程式。它表示程式應該託管 InProcess(程序內)還是 OutOfProcess(程序外)。 InProcess 的值指定我們想要使用程序內託管模型,即在 IIS 工作程序(w3wp.exe)中託管我們的 asp.net core 應用程式。 OutOfProcess 的值指定我們要使用程序外託管模型,將 Web 請求轉發到執行 Kestrel 伺服器的後端 ASP.NET Core 應用程式;
PackageReference:顧名思義,此元素用於包含對為您的應用程式安裝的所有 NuGet 包的引用;
實際上,用VS2019建立ASP.NET Core Web 應用程式的專案檔案:
<Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup> <TargetFramework>netcoreapp3.1</TargetFramework> </PropertyGroup> </Project>
2.專案中的Main方法
public class Program { public static void Main(string[] args) { CreateHostBuilder(args).Build().Run(); } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); }); }
ASP.NET Core 應用程式最初作為控制檯應用程式啟動,而Program.cs
檔案中的Main()
方法就是入口。
3.啟動類Startup
public class Startup { public void ConfigureServices(IServiceCollection services) { } public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.Run(async (context) => { await context.Response.WriteAsync("Hello World!"); }); } }
啟動類只有兩個重要方法:
ConfigureServices()
方法配置應用程式所需的服務;
Configure()
方法配置應用程式的請求處理管道;