C#Web API:按功能打包

C#Web API:按功能打包,c#,package,asp.net-web-api,C#,Package,Asp.net Web Api,我想拆分我的C#WebAPI项目,以便在单独的项目中维护给定的功能(或一组功能)。理想情况下,我仍然希望在每个功能包中保持分层分离 示例:我希望确保每个主要功能都有一个单独的API项目(即,业务套件将分为销售API、库存API、工资API等)。每个特性将分为API(顶层)、模型(从API发送和接收的DTO/ViewModels)、服务(业务逻辑)和测试。可以有更多层,即实体类等的独立层 这些项目中必须重用一定数量的共享代码,包括顶层(如错误处理、日志记录等)和其他层(数据库连接、存储库等) 有没

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

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

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

有没有人有一个很好的例子来说明如何进行这种分离,使所有的东西都是干的,同时保持功能的清晰分离

致以最良好的祝愿,
Daniel

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

我们的想法是在模块化的庄园中构建系统,其中每个组件都可以通过HTTP相互通信。这似乎是您希望通过每个“特性”公开一个API来实现的。这上面有一大堆材料,所以我会仔细阅读


至于在他们之间共享代码,这可能很棘手。如果您从模块化系统的角度考虑这一点,那么共享的东西可能应该是它自己的“功能”/“组件”/“服务”/“模块”(不管您想叫它什么)。或者也许有一些东西你只是想把它拉进它自己的项目中——如果是这样,考虑建立一个NuGET包来共享组件中的公共代码?

理想的是,这种分离将一直沿用到数据库,使得给定的特征可以有它自己的数据库。显然,这可能会导致数据库模式的更改,其中以前可用于功能A的数据不再可用,因为它在技术上属于功能B。谢谢,任何新信息都是有用的。我知道微服务的概念,尽管我自己还没有写过。这就是为什么我真的想得到一些示例代码:-)我偶然发现了这个问题,并记住了这个问题代码示例: