第一章 开发体验
目录
第一章 开发体验
一、Asp.Net Core应用程序
二、Asp.Net Core Mvc应用程序
一、Asp.Net Core应用程序
使用CLI创建控制台应用程序
dot new console -n helloworld
编辑项目文件
<ItemGroup><FrameworkReference include = "Microsoft.AspNetCore.App"></FrameworkReference></ItemGroup>
创建Host主机并配置
在Main方法中,调用静态类Host的CreateDefaultBuilder方法,创建一个IHostBuilder对象,并调用Builder方法构建服务宿主的IHost对象,再调用IHost对象的扩展方法Run,AspNetCore应用程序就被启动了。
var builder = Host.CreateDefaultBuilder();IHost host = builder.Build();host.Run();
配置请求管道
在调用Builder方法之前,调用ConfigureWebHost扩展方法,参数是Action委托,构建请求管道。
var builder = Host.CreateDefaultBuilder();builder.ConfigureWebHost(options =>{ options.UseKestrel().Configure(app => { app.Run(context => context.Response.WriteAsync("HelloWord")); });});IHost host = builder.Build();host.Run();launchSetting.json配置文件
修改项目配置文件,并重新加载,这时你会发现 控制台应用程序 变成了 web应用程序。
<Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup> <TargetFramework>netcoreapp3.1</TargetFramework> </PropertyGroup></Project>
CLI启动,并指定Kestrel服务器
dotnet run --launch-profile helloworld
二、Asp.Net Core Mvc应用程序
注册服务与中间件
AspNetCore Mvc就是建立在用来实现路由的EndpointRoutingMiddleware中间件和EndpointMiddleware中间件上的。所以我们开始改造。
内置的依赖注入框架以后会深入了解,现在拿来直接用。
var builder = Host.CreateDefaultBuilder(); builder.ConfigureWebHostDefaults(options => { options.ConfigureServices(configureServices => { //注册服务 configureServices.AddRouting(); configureServices.AddControllersWithViews(); }).Configure(app => { //使用服务 app.UseRouting(); app.UseEndpoints(endpoint => { endpoint.MapControllers(); }); }); }); IHost host = builder.Build(); host.Run();添加控制和视图
添加一个类HelloController,然后继承controller。
public class HelloController : Controller{ [HttpGet("/hello/{name}")] public IActionResult SayHello(string name) { ViewData["Name"] = name; return View(); }}@{ ViewData["Title"] = "SayHello";}<h1>@ViewData["Name"]</h1>注册Startup类型
以上可以直接跑起来,现在开始注册Startup类,约定大于配置嘛,所以我们把注册服务配置中间件的过程提取出来,单独放在一个类中,这样就方便以后维护了。
修改Main方法
private static void Main(string[] args){ Host.CreateDefaultBuilder() .ConfigureWebHostDefaults(configure => configure.UseStartup<Startup>() ).Build().Run();}Startup类
public class Startup{ public void ConfigureServices(IServiceCollection services) => services.AddRouting().AddControllersWithViews(); public void Configure(IApplicationBuilder app) => app.UseRouting().UseEndpoints(point => point.MapControllers());}
赞 (0)
