.net core 在Clean Architecture.net核心API中处理生日的中间件

.net core 在Clean Architecture.net核心API中处理生日的中间件,.net-core,asp.net-core-webapi,middleware,clean-architecture,.net Core,Asp.net Core Webapi,Middleware,Clean Architecture,我有一个使用干净体系结构的.net核心API 该项目有一个主要分支,具有最少的功能,但是,根据我们的客户,他们中的一些人需要一些可选功能,比如:获取学生端点时显示学生生日 因此,我们希望此功能不会干扰主分支,并在组织代码的方式上保持一定的隔离,因此为不需要此功能的客户机编译就像删除一行代码一样简单 我在考虑使用定制的中间件来处理这个案子。但这是一个好的实践吗?它应该如何与其他层交互 谢谢我个人认为使用中间件不是一个好主意。它需要再次查询数据库以获得额外的列,然后将其添加到对象中。我宁愿使用布尔参

我有一个使用干净体系结构的.net核心API

该项目有一个主要分支,具有最少的功能,但是,根据我们的客户,他们中的一些人需要一些可选功能,比如:获取学生端点时显示学生生日

因此,我们希望此功能不会干扰主分支,并在组织代码的方式上保持一定的隔离,因此为不需要此功能的客户机编译就像删除一行代码一样简单

我在考虑使用定制的中间件来处理这个案子。但这是一个好的实践吗?它应该如何与其他层交互


谢谢

我个人认为使用中间件不是一个好主意。它需要再次查询数据库以获得额外的列,然后将其添加到对象中。我宁愿使用布尔参数(includebday),甚至还有第二条路径。感谢@meq生日示例只是一种情况,可能有多个“模块”可以添加或删除,具体取决于我们编译的客户端。我们有第二个表,其中包含学生元数据和键值列,用于可选模块所需的任何信息。您要查找的基本上是一个功能切换。有许多不同的库和解决方案;你只需要选择一个或建立自己的如果你愿意。它可以归结为基本上包装代码,这些代码在某些“功能”中可能会有所不同,然后通过配置,您可以在每个客户端的基础上启用或禁用此功能。我刚刚检查了功能切换,但我想要的是一种干净的方法来分离“插件”代码,但仍保留干净的体系结构层,以便插件可以访问db服务,但也可以执行其他层中应该执行的其他操作