DotNETWeekly-io / DotNetWeekly

DotNet weekly newsletter
MIT License
198 stars 3 forks source link

【文章推荐】基于.NET的垂直切分架构 #691

Closed tonyqus closed 1 day ago

tonyqus commented 2 days ago

https://medium.com/codenx/vertical-slicing-architecture-in-net-6efa39b139e7

gaufung commented 1 day ago

image

通常 .NET 应用程序的架构是按照水平层次的划分,划分的标准是技术层面,比如 UI 层,业务逻辑层和数据访问层。有一种其他的划分方式是垂直的方式,通常将每个功能封装一个切片,每个切片包含三个层:

  1. 表示层
  2. 业务逻辑层
  3. 数据访问层

ASP.NET Core Web API 为例,整个项目架构如下:

VerticalSlicingExample
│
├── Features
│   ├── Orders
│   │   ├── CreateOrder
│   │   │   ├── CreateOrderCommand.cs
│   │   │   ├── CreateOrderHandler.cs
│   │   │   └── CreateOrderController.cs
│   │   └── GetOrder
│   │       ├── GetOrderQuery.cs
│   │       ├── GetOrderHandler.cs
│   │       └── GetOrderController.cs
│   └── Customers
│       ├── CreateCustomer
│       │   ├── CreateCustomerCommand.cs
│       │   ├── CreateCustomerHandler.cs
│       │   └── CreateCustomerController.cs
│       └── GetCustomer
│           ├── GetCustomerQuery.cs
│           ├── GetCustomerHandler.cs
│           └── GetCustomerController.cs
├── Program.cs
└── Startup.cs

和传统分层的架构相比较,有如下的优缺点: 传统分层架构

垂直切片架构