我有一个 ASP.NET Core 8 Web API 项目和另一个项目作为辅助服务,在 Windows 中执行一些后台任务。此外,我想在其中托管 Web API 项目。
我想了解如何在我的工作服务中引用和设置 Web API 项目。
需要注意的是,我的 Web API 项目使用了新模板,这意味着它没有
Startup
和 Program
类;相反,所有配置都合并到一个 Program.cs
文件中。
我建议将 WebAPI 和 WorkerService 分开。以下是我的推理:
可扩展性:您可以独立扩展每个服务,根据需求调整资源,而不会过度分配或未充分利用资源。
故障隔离:如果一项服务发生故障(例如,WebAPI 在重负载下),另一项服务可以继续运行而不受影响,从而提高整体可靠性和正常运行时间。
操作清晰:服务独立运行时,日志、指标和调试更加简单,更易于管理和故障排除。
灵活性:您可以分别优化每个服务的部署和基础设施,从而实现更好的成本管理和高效扩展。
为了有效地集成它们,请使用异步消息传递(例如队列或服务总线)来处理 WebAPI 和后台任务之间的通信。这种解耦的架构确保了稳健性,使其适合长期增长和复杂的系统。
更新
当 OP 确认了他的要求后,我正在提供我的意见。
添加项目引用:在您的WorkerService项目中引用WebAPI项目。
将 WebAPI 集成为托管服务:修改 WorkerService 的
Program.cs
以与工作线程一起启动 WebAPI。使用自定义 IHostedService
在同一进程中初始化和运行 WebAPI。
配置单个
Program.cs
:调整WebAPI的Program.cs
以允许集成,确保不存在端口冲突并且它在WorkerService的生命周期内工作。