Onion Architecture ASP.NET Core 项目教程
1. 项目的目录结构及介绍
Onion-architecture-ASP.NET-Core/
├── src/
│ ├── Application/
│ │ ├── Behaviours/
│ │ ├── Common/
│ │ ├── Contracts/
│ │ ├── Features/
│ │ ├── Mapping/
│ │ └── Validators/
│ ├── Domain/
│ │ ├── Entities/
│ │ └── Common/
│ ├── Infrastructure/
│ │ ├── Identity/
│ │ ├── Persistence/
│ │ └── Services/
│ ├── Presentation/
│ │ ├── Api/
│ │ └── WebUI/
│ └── OnionArchitecture.sln
├── tests/
│ ├── Application.UnitTests/
│ ├── Infrastructure.IntegrationTests/
│ └── WebUI.AcceptanceTests/
└── README.md
目录结构介绍
-
src/Application: 包含应用程序的业务逻辑和规则。
- Behaviours: 行为处理。
- Common: 通用功能。
- Contracts: 接口定义。
- Features: 功能模块。
- Mapping: 对象映射。
- Validators: 数据验证。
-
src/Domain: 包含领域模型和实体。
- Entities: 实体类。
- Common: 领域通用功能。
-
src/Infrastructure: 包含基础设施代码,如数据访问、身份验证和服务。
- Identity: 身份验证相关。
- Persistence: 数据持久化。
- Services: 服务实现。
-
src/Presentation: 包含应用程序的展示层,如API和Web界面。
- Api: API接口。
- WebUI: Web用户界面。
-
tests: 包含项目的测试代码。
- Application.UnitTests: 应用程序单元测试。
- Infrastructure.IntegrationTests: 基础设施集成测试。
- WebUI.AcceptanceTests: Web界面验收测试。
2. 项目的启动文件介绍
项目的启动文件位于 src/Presentation/Api/Program.cs
和 src/Presentation/Api/Startup.cs
。
Program.cs
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;
namespace Api
{
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>();
});
}
}
Startup.cs
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
namespace Api
{
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
// 添加其他服务配置
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
}
}
3. 项目的配置文件介绍
项目的配置文件主要位于 src/Presentation/Api/appsettings.json
。
appsettings.json
{
"ConnectionStrings": {
"DefaultConnection": "Server=localhost;Database=OnionArchitecture;User Id=sa;Password=your_password;"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft