一:.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()
方法配置应用程序的请求处理管道;