C# Web API:按功能打包

本文关键字:功能 Web API | 更新日期: 2023-09-27 18:32:36

我想拆分我的 C# Web API 项目,以便在单独的项目中维护给定的功能(或一组功能(。理想情况下,我仍然希望在每个功能包中保持分层分离。

示例:我想确保每个主要功能都有一个单独的 API 项目(即业务套件将分为销售 API、库存 API、工资单 API 等(。每个功能将分为API(顶层(,模型(从API发送和接收的DTO/ViewModels(,服务(业务逻辑(和测试。可以有更多的层,即实体类的单独层等。

在这些项目中,必须重用一定数量的共享代码,无论是在顶层(如错误处理、日志记录等(还是在其他层(数据库连接、存储库等(。

有没有人有一个很好的例子来说明如何进行这种分离,这样一切都是 DRY,同时保持清晰的特征分离?

此致敬意丹尼尔

C# Web API:按功能打包

你试图实现的目标听起来非常类似于微服务架构。这里有一些很好的链接来描述这意味着什么。

http://blog.cleancoder.com/uncle-bob/2014/09/19/MicroServicesAndJars.html

http://martinfowler.com/articles/microservices.html#CharacteristicsOfAMicroserviceArchitecture

这个想法是在一个模块化的庄园中构建你的系统,每个组件都可以相互通信,通常是通过HTTP。这似乎是您想要通过每个公开 API 的"功能"来实现的目标。关于这个有一大堆材料,所以我会阅读它。

至于在它们之间共享代码,这可能很棘手。如果你从模块化系统的角度来考虑这个问题,也许共享的东西应该是它自己的"功能"/"组件"/"服务"/"模块"(无论你想怎么称呼它(。或者,也许您只想将某些内容提取到自己的项目中 - 如果是这样,请考虑构建Nuget包以在组件之间共享通用代码?