论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
软件与程序人生
›
后端开发
›
.Net
›
.NET7后端框架:一句话启动
.NET7后端框架:一句话启动
雁过留声
金牌会员
|
2023-2-3 11:36:29
|
显示全部楼层
|
阅读模式
楼主
主题
840
|
帖子
840
|
积分
2520
前言
.NET6 开始,.NET Croe API 项目取消了 Startup.cs 文件,在 Program.cs 文件的 Main 函数中完成服务的注册和中间件管道的管理。但当我们项目引入更多包的时候,Program.cs 文件也会看起来很臃肿。
而且,我们不只会有一个后端项目,为了方便快速创建后端框架,我们可以将基础服务移植到单独项目中进行管理。
那么,就从 Program.cs 开始。
创建项目
先创建三个项目,一个 ASP.NET Core Web API 项目,两个 C#类库 项目。结构如下:
AMO.API 项目作为启动项目
AMO.Core 作为基础服务项目
AMO.Entities 作为实体项目
迁移
编辑 AMO.Core 项目文件,添加 Microsoft.AspNetCore.App 框架引用,否则无法引用WebApplicationBuilder类;将 AMO.API 项目中默认添加的 Swagger 包引用复制过来。同时修改输出路径为 ..\AMO.API\bin
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<BaseOutputPath>..\AMO.API\bin</BaseOutputPath>
</PropertyGroup>
<ItemGroup>
<FrameworkReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="7.0.0" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.4.0" />
</ItemGroup>
</Project>
复制代码
AMO.Core 项目新增文件夹 StartupExtensions 以后依赖项的管理都在该文件夹下。
创建一个静态类 AppStart.cs ,定义 Run 静态方法,将 Program.cs 中服务注册和管道配置的代码迁移该方法中。
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
namespace AMO.Core.StartupExtensions
{
/// <summary>
/// 启动程序
/// </summary>
public static class AppStart
{
/// <summary>
/// 运行程序
/// </summary>
/// <param name="builder">WebApplicationBuilder</param>
public static void Run(this WebApplicationBuilder builder)
{
// 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();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();
app.Run();
}
}
}
复制代码
修改 AMO.API 项目文件,引入 AMO.Core 的项目引用,删除 Swagger 包。
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\AMO.Core\AMO.Core.csproj" />
</ItemGroup>
</Project>
复制代码
在 Program.cs 使用扩展方法。
using AMO.Core.StartupExtensions;
namespace AMO.API
{
public class Program
{
public static void Main(string[] args)
{
WebApplication.CreateBuilder(args).Run();
}
}
}
复制代码
最后
生成解决方案,启动项目。熟悉的 Swagger 页面出来了。
之所以这么改造,主要目的是将后端框架的基础服务抽离到 AMO.Core 项目中,以便以后有新项目,能够快速复用。
当然,你可以发现 Program.cs 清爽了,但 AppStart.cs 后续引入新的包后,还不是一样会臃肿?
那么,后续我们将继续对 AppStart.cs 进一步优化。
题外
近期我司开源了一套简洁又功能完整的WMS系统: ModernWMS,采用 Vue3 + TS + Vuetify + .Net7 + EF Core 框架。欢迎来踩。
在线体验地址:
https://wmsonline.ikeyly.com/
Github:
https://github.com/fjykTec/ModernWMS
Gitee:
https://gitee.com/modernwms/ModernWMS
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
雁过留声
金牌会员
这个人很懒什么都没写!
楼主热帖
阿里云体验有奖:如何将 PolarDB-X 与 ...
XShell免费版的安装配置教程以及使用教 ...
【如何优化她】教你如何定位不合理的SQ ...
day02-代码实现01
微服务大行其道的今天,Service Mesh是 ...
十年技术进阶路,让我明白了三件要事( ...
无需支付688苹果开发者账号,xcode13打 ...
常用类-LocalDate、LocalTime、LocalDa ...
鸿蒙3.0来了,这次,我真的想批评鸿蒙 ...
Elasticsearch 入门实战(5)--Java API ...
标签云
存储
挺好的
服务器
快速回复
返回顶部
返回列表