我们目前正在开发内部的NuGet程序包,该程序包会将HTTP请求发送到另一个微服务。
这是我正在寻找的实现示例。
[NuGet程序包]具有一个中间件,该中间件已在[WebApp]启动中注册
[NuGet包]负责创建HTTP请求并将其发送到微服务
[WebApp]应该能够创建自己的IProcessor,该IProcessor必须实现Process()并添加适合的所有相关数据
[WebApp]应该{做某事}以“注册”它的IProcessor
[NuGet包]将在将请求发送到微服务之前调用已注册的IProcessor列表
在尊重Nuget封装的情况下,在.NET核心中实现此目标(最好是最后两项)的最佳方法是什么。
谢谢:)
答案 0 :(得分:2)
首先,我认为这将使您清楚地知道它们全都是“ WebApp”。无论您使用的是一个,多个还是不使用NuGet软件包,项目引用等,最终,所有这些都只是WebApp流程中正在运行的代码。
这样,您可以像注册任何服务那样注册IProcessor
实现:
services.AddScoped<IProcessor, WebAppProcessor>();
目前还不清楚您最终在这里做什么,因此,可以根据以下两种方法之一进行选择。如果只有一个IProcessor
实现,则只需通过该类的构造函数将其直接注入到需要它的任何类中即可。该类也需要在Web应用程序的服务集合中注册,以便它通常参与依赖项注入过程。
如果实际上要使用多种实现,则过程大致相同,但是您需要注入IEnumerable<IProcessor>
。然后,服务集合将注入IProcessor
的所有注册实现。