C#Web API:按功能打包

时间:2014-11-30 20:49:11

标签: c# package asp.net-web-api

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

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

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

有没有人有一个很好的例子说明如何进行这种分离,以便一切都干,同时保持明确的功能分离?

祝你好运, 丹尼尔

1 个答案:

答案 0 :(得分:1)

您尝试实现的目标听起来非常类似于微服务架构。以下是一些描述这意味着什么的好链接..

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

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

我们的想法是以模块化的方式构建您的系统,每个组件可以通过HTTP进行相互通信。这似乎是你想要实现的每个暴露API的“功能”。这里有一大堆材料,所以我会读到它。

至于在它们之间共享代码,这可能很棘手。如果您在模块化系统方面考虑这一点,也许共享的东西应该是它自己的“功能”/“组件”/“服务”/“模块”(无论您想要什么称呼它)。或者也许有一些你只想进入自己项目的东西 - 如果是这样的话,考虑建立一个Nuget包来共享组件中的公共代码?

相关问题