diff --git "a/\345\224\220\345\255\235\345\235\232/20240516-\350\256\244\350\257\206webapi.md" "b/\345\224\220\345\255\235\345\235\232/20240514-\350\256\244\350\257\206webapi.md" similarity index 100% rename from "\345\224\220\345\255\235\345\235\232/20240516-\350\256\244\350\257\206webapi.md" rename to "\345\224\220\345\255\235\345\235\232/20240514-\350\256\244\350\257\206webapi.md" diff --git "a/\345\224\220\345\255\235\345\235\232/20240520-.NET Core\345\222\214ASP.NET Core.md" "b/\345\224\220\345\255\235\345\235\232/20240520-.NET Core\345\222\214ASP.NET Core.md" new file mode 100644 index 0000000000000000000000000000000000000000..9fdb8a7301177d313767dcf1aa2c47f6f0133c8c --- /dev/null +++ "b/\345\224\220\345\255\235\345\235\232/20240520-.NET Core\345\222\214ASP.NET Core.md" @@ -0,0 +1,45 @@ +## .NET Core和ASP.NET Core + +### 1.什么是.NET Core? +.NET Core框架是免费、开源、跨平台的,可以运行在Linux、Macos、Windows平台下。 + +### 2. .NET Core包含以下几部分内容: +- CoreCLR +- CoreFX +- Roslyn变异器 +- .NET Core CLI工具 + + +### 3. .NET Core的优点 +- 支持独立部署,不相互影响; +- 彻底模块化; +- 没有历史包袱,运行效率高; +- 不依赖于IIS; +- 跨平台; +- 符合现代开发理念:依赖注入、单元测试等。 + +### 4.什么是ASP.NET Core? +ASP.NET Core是免费、开源、高性能且跨平台的Web框架,用来构建Web应用程序。ASP.NET Core能够运行在多个操作系统平台上,包括Windows、macOS和Linux系统等。 + +### 5.ASP.NET Core具有以下优点: +- 跨平台,能够在Windows、macOS和Linux系统上开发、编译和运行。 +- 统一Web UI与Web API开发 +- 集成新式客户端框架和开发工作流 +- 基于环境配置以及云就绪配置 +- 内置依赖项注入 +- 轻型的高性能模块化HTTP请求管道 +- 能够在IIS、Nginx。Apache和Docker上进行托管或者在当前进程内自托管 +- 当目标框架为.NET Core时,支持并行应用版本控制 +- 简化新式Web开发工具 +- 开源和以社区为中心 + +### 6.ASP.NET Core主要特性 +(1)跨平台与“自我宿主” +(2)统一Web UI与Web API开发 +(3)内置依赖项注入 +(4)轻型的高性能模块化HTTP请求管道 +(5)基于环境配置以及云就绪配置 +(6)支持容器 + +### 7.创建一个API项目 +要创建一个ASP.NET Core Web API应用程序,可以使用Visual Studio,也可以使用ual Studio Core和JetBrains Rider等跨平台开发工具 diff --git "a/\345\224\220\345\255\235\345\235\232/20240521-\345\210\233\345\273\272\350\247\243\345\206\263\346\226\271\346\241\210\345\222\214\351\241\271\347\233\256.md" "b/\345\224\220\345\255\235\345\235\232/20240521-\345\210\233\345\273\272\350\247\243\345\206\263\346\226\271\346\241\210\345\222\214\351\241\271\347\233\256.md" new file mode 100644 index 0000000000000000000000000000000000000000..509f6c8efbc1618e92a08b97b802a4b7c7909c2a --- /dev/null +++ "b/\345\224\220\345\255\235\345\235\232/20240521-\345\210\233\345\273\272\350\247\243\345\206\263\346\226\271\346\241\210\345\222\214\351\241\271\347\233\256.md" @@ -0,0 +1,15 @@ +## 解决方案和项目之间的联系 +1.编译或者打包解决方案的时候,会同时编译或打包其下所有的项目 +2.如果运行解决方案的话,则会按照编排的(指定的启动项目),分别调整指定项目 + +## 创建一个解决方案包含两个项目 +dotnet new webapi -n Admin2024.Api + +dotnet new classlib -n Admin2024.Domain + +dotnet new sln -n Admin2024 + +dotnet sln add .\Admin2024.Api\ + +dotnet sln add .\Admin2024.Domain\ + diff --git "a/\345\224\220\345\255\235\345\235\232/20240523-Startup\347\261\273.md" "b/\345\224\220\345\255\235\345\235\232/20240523-Startup\347\261\273.md" new file mode 100644 index 0000000000000000000000000000000000000000..d1a6ec1fae40d1bc82e0fb31023d915e5f325521 --- /dev/null +++ "b/\345\224\220\345\255\235\345\235\232/20240523-Startup\347\261\273.md" @@ -0,0 +1,108 @@ +## Startup类 + +IWebHostBuilder接口有很多扩展方法,其中有一个很重要的是UseStartup方法,它主要向应用程序提供用于配置启动的类,而指定的这个类应具有以下两个方法。 + +- ConfigureServices:用于向ASP.NET Core的依赖注入容器添加服务 +- Configure:用于添加中间件,配置请求管道 + +这两个方法都会在运行时被调用,且在应用程序的整个生命周期内,只执行一次。其中ConfigureServices方法是可选的,而Configure方法则是必选的。在程序启动时,它会执行ConfigureServices方法(如果有),将指定的服务放入应用程序的依赖注入容器中,然后再执行Configure方法,向请求管道中添加中间件。 + +## 今日作业 + +```C# +var builder = WebApplication.CreateBuilder(args); + +var app = builder.Build(); + +app.MapGet("/",async ctx => { + + await ctx.Response.WriteAsync("8888"); +}); + + +app.MapGet("/leaf",async ctx => { + + await ctx.Response.WriteAsync("9999"); +}); + +app.Run(); + + +``` + +1. 在最简单的形式下,转换为在单独的文件中写路径-抽离 + + + +2. 在最简形式下,转换为原来传统的控制器的模式-转换 + +Controllers里: + +``` +using Microsoft.AspNetCore.Mvc; + +namespace HHH.Controllers{ + +[ApiController] +[Route("[Controller]")] + +public class HomeController:Controller{ + public IActionResult Index(){ + return Ok("0123456"); + } +} + +} + +``` + + + +Program.cs里: + +``` + +var builder = WebApplication.CreateBuilder(args); + +// Add services to the container. + +builder.Services.AddControllers(); +// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle +builder.Services.AddEndpointsApiExplorer(); +builder.Services.AddSwaggerGen(); +builder.Services.AddControllers(); + +var app = builder.Build(); +app.MapControllers(); + +// Configure the HTTP request pipeline. +if (app.Environment.IsDevelopment()) +{ + app.UseSwagger(); + app.UseSwaggerUI(); +} + +app.UseHttpsRedirection(); + +app.UseAuthorization(); + +app.MapControllers(); + +app.Run(); + +``` + +## ASP.NET Core中的依赖注入 + +ASP.NET Core框架内部集成了自身的依赖注入容器。 + +优点:功能强大、简单,容易使用且效率更高 + +在ASP.NET Core中,所有被放入依赖注入容器的类型或组件称为服务。容器中的服务有两种类型: + +- 框架服务 +- 应用服务 + + + + diff --git "a/\345\224\220\345\255\235\345\235\232/20240524-\345\210\233\345\273\272\345\222\214\351\205\215\347\275\256 ASP.NET Core \345\272\224\347\224\250\347\250\213\345\272\217\347\232\204 Web \344\270\273\346\234\272\357\274\210Web Host\357\274\211.md" "b/\345\224\220\345\255\235\345\235\232/20240524-\345\210\233\345\273\272\345\222\214\351\205\215\347\275\256 ASP.NET Core \345\272\224\347\224\250\347\250\213\345\272\217\347\232\204 Web \344\270\273\346\234\272\357\274\210Web Host\357\274\211.md" new file mode 100644 index 0000000000000000000000000000000000000000..d065b4dbe62116e3c125ec623323cfff38b2e40c --- /dev/null +++ "b/\345\224\220\345\255\235\345\235\232/20240524-\345\210\233\345\273\272\345\222\214\351\205\215\347\275\256 ASP.NET Core \345\272\224\347\224\250\347\250\213\345\272\217\347\232\204 Web \344\270\273\346\234\272\357\274\210Web Host\357\274\211.md" @@ -0,0 +1,94 @@ +## 创建和配置 ASP.NET Core 应用程序的 Web 主机(Web Host) + +### Program.cs + +``` +// using Microsoft.Extensions.Hosting; 和 using Microsoft.AspNetCore.Hosting; 引入了应用程序所需的命名空间。 +using Microsoft.Extensions.Hosting; +using Microsoft.AspNetCore.Hosting; + +// namespace Admin2024.Api 定义了应用程序的命名空间。 +namespace Admin2024.Api +{ + //定义了一个公共静态类 Program,它是应用程序的入口点。 +public static class Program +{ + + /* + public static void Main(string[] args) 定义了应用程序的入口点方法 Main,它接受一个字符串数组 args 作为参数。 + 在这个方法中,它调用了 CreateWebHostBuilder(args).Build().Run(),这将创建一个 Web 主机,并启动应用程序。 + + */ +public static void Main (string[] args) +{ + CreateWebHostBuilder(args).Build().Run(); +} + + +/* + +public static IHostBuilder CreateWebHostBuilder(string[] args) 定义了一个公共静态方法 CreateWebHostBuilder, +它接受一个字符串数组 args 作为参数,并返回一个 IHostBuilder 对象。 +在这个方法中,它调用了 Host.CreateDefaultBuilder(args).ConfigureWebHostDefaults(builder=>{builder.UseStartup();}), +这将创建一个默认的 Web 主机,并配置它使用 Startup 类。 + + +*/ +public static IHostBuilder CreateWebHostBuilder(string[] args) +{ + return Host.CreateDefaultBuilder(args).ConfigureWebHostDefaults(builder=>{ + builder.UseStartup(); + }); +} + +} + + +} + +``` + + +### Startup.cs + +``` +namespace Admin2024.Api +{ +public class Startup +{ + /*ConfigureServices 方法用于配置应用程序所需的服务 + 在这个例子中,它调用了 services.AddControllers() + 这将添加一个控制器服务,用于处理 HTTP 请求*/ + public void ConfigureServices(IServiceCollection services) +{ + services.AddControllers(); +} + + + +/* +Configure 方法用于配置应用程序的管道,即请求和响应的处理流程。 +在这个例子中,它调用了 app.UseRouting(), +这将启用路由中间件,用于将请求路由到相应的控制器。 + +*/ + +public void Configure(IApplicationBuilder app) +{ + app.UseRouting(); + app.UseEndpoints(endPoints=>{ + endPoints.MapControllers(); + }); +} + + +} +} + +/* +调用了 app.UseEndpoints(endPoints=>{endPoints.MapControllers();}), +这将配置应用程序的终结点,即应用程序的入口和出口。 +在这个例子中,它调用了 endPoints.MapControllers(),这将将请求路由到相应的控制器。 +*/ + +```