c# - 如何创建通用的输入-转换-输出系统
问题描述
我想使用依赖注入创建一个 .NET Core 代理后台服务。该代理创建接收输入的侦听器,将此输入映射到另一个对象,并将映射的对象发送到另一个服务。
我必须实现多个用例(最后一个是虚构的)
- 侦听 TCP 套接字消息,对其进行转换并将转换后的数据发送到 REST API
- 侦听 HTTP 请求,对其进行转换并将转换后的数据发送到 TCP 服务器并发送回 HTTP 响应状态代码
- 每 3 秒生成一个随机整数,将其转换为字符串并将该字符串写入文件
所以我只是想创建一个能够接收通用值、处理它们并发回通用响应的接口。
interface IValueProcessor<in TInput, TOutput>
{
public Task<TOutput> ProcessValue(TInput input);
}
但我正在努力解决多个问题:
- 在哪里定义该流程链?
- 如何
IValueProcessor
知道下一个IValueProcessor
呼叫?也许不会有下一个实例可以调用(过程的最后一步)。 - 如果某些事情失败了(异常、连接超时......),
TOutput
似乎必须更复杂,包含结果和“ResultStatus”(HTTP 状态代码、异常......)
也许会出现更多我没有想到的问题。对此有什么想法吗?也许有些东西已经解决了这些问题?
我不确定MediatR是否有帮助。
解决方案
推荐阅读
- regression - 10 个国家产出的回归表
- python - 代码不提供输出并继续运行
- jenkins - 如何从 Groovy Jenkins 发出并行发布请求并收集结果?
- python - 在 python 中使用 websocket api 调用时出现错误“timeStamp not ISO format”
- php - 从 Laravel 7 返回 500 到 Google Cloud Task 而不使用 abort()
- python - Python Quart 无法正确呈现 HTML
- c# - 从 SQL Server 数据库加载 CheckBox 值后,DataGridView CheckBox 列不可检查或不可编辑
- python - 在 python 中使用低通滤波器对音频信号处理进行上采样时出错
- clang - 无法使用 LLVM clang 为大型程序生成控制流程图
- graphql - 减少 graphql 模式中的嵌套深度