c# - 需要模式实现的建议以将“处理器”从 WebApp 注入 NuGet
问题描述
我们目前正在开发一个内部 NuGet 包,它将向另一个微服务发送 HTTP 请求。
这是我正在寻找的实现示例。
【NuGet包】有一个中间件,在【WebApp】启动中注册
【NuGet包】负责创建HTTP请求并发送给微服务
[WebApp] 应该能够创建它自己的 IProcessor 必须实现 Process() 并添加它适合所需的任何相关数据
[WebApp] 应该 {做某事} 来“注册”它的 IProcessor
[NuGet 包] 会在向微服务发送请求之前调用已注册的 IProcessor 列表
尊重 Nuget 封装,在 .NET 核心中实现这一点(特别是最后两项)的最佳方法是什么。
谢谢 :)
解决方案
首先,我认为这将提供一些清晰的认识,这一切都只是“WebApp”。无论您使用的是一个、多个还是不使用 NuGet 包、项目引用等,最终都只是在您的 WebApp 进程中运行的代码。
因此,您可以IProcessor
像注册任何服务一样注册实现:
services.AddScoped<IProcessor, WebAppProcessor>();
目前尚不清楚您最终在这里做什么,因此根据这一点,您可以采取两条路径之一。如果只有一个IProcessor
实现,那么您只需通过类的构造函数将其直接注入任何需要它的类。该类也需要在 Web 应用程序的服务集合中注册,以便它参与一般的依赖注入过程。
如果您实际上将有多个可用的实现,那么过程大致相同,但您需要注入IEnumerable<IProcessor>
。然后服务集合将注入所有已注册的IProcessor
.
推荐阅读
- java - Kafka Broker 偏移量/日志保留和消费者偏移量在最早模式下重置
- scala - sparkSQL数据框如何拆分到某列
- java - 如何在不使用任何用户定义的类的情况下创建 java 应用程序
- python - 解析一个非常大的 CSV 文件。需要将一个字段分成许多较小的行并在每一行中保留 ID。
- ios - Composition of iPhone Accelerometer Values
- html - 为什么在新选项卡中打开 PDF 会有不同的行为
- javascript - 每 10 个项目后包装 ng-repeat 列表项目
- node.js - 如何在节点js递归函数中的for / in函数完成时返回
- python - 如何在 OrderedDict 中访问 __map?
- javascript - 如何平滑移相器/画布线?