Clean架构中高频使用的接口实现应放置于何处?
在Clean架构中放置加密解密实现的合理位置
你的判断是对的:INestedRequestObjectEncryptor接口定义在Application层符合Clean架构的设计,因为它是业务流程依赖的能力抽象。关于实现的放置,你可以参考以下方案:
- 排除Core层:Core层作为纯业务逻辑核心,不应该依赖任何外部NuGet包或框架,所以需要第三方加密库的实现绝对不能放在这里。
- Infrastructure层是合适的选择:很多人误解Infrastructure层只负责数据访问,实际上它的核心职责是封装所有与外部系统、第三方依赖的交互——包括数据库操作、API调用、加密服务、文件IO等。你的加密解密实现依赖外部NuGet包,属于“外部依赖封装”范畴,完全适合放在Infrastructure层。可以给实现类起一个明确的名字,比如
AesNestedRequestObjectEncryptor(根据实际使用的加密算法命名)。 - 特殊情况:与Web层强绑定的处理:如果你的加密解密逻辑是针对HTTP请求/响应的特定定制(比如直接操作Request/Response对象),也可以考虑在Web层(如你的API项目)中创建实现类,但要确保这个实现依然依赖Application层的
INestedRequestObjectEncryptor接口,保持依赖方向符合Clean架构的“内层定义抽象,外层实现抽象”原则。
最终推荐优先选择Infrastructure层存放实现,然后在依赖注入容器中完成接口与实现的绑定,让Application层或Web层通过接口调用加密解密能力。
内容的提问来源于stack exchange,提问作者Szyszka947
相关产品推荐
相关产品推荐

