在辅助服务中托管 ASP.NET Core 8+ Web API 项目

问题描述 投票:0回答:1

我有一个 ASP.NET Core 8 Web API 项目和另一个项目作为辅助服务,在 Windows 中执行一些后台任务。此外,我想在其中托管 Web API 项目。

我想了解如何在我的工作服务中引用和设置 Web API 项目。

需要注意的是,我的 Web API 项目使用了新模板,这意味着它没有

Startup
Program
类;相反,所有配置都合并到一个
Program.cs
文件中。

c# asp.net-core-webapi .net-8.0 worker-service
1个回答
0
投票

我建议将 WebAPIWorkerService 分开。以下是我的推理:

  1. 可扩展性:您可以独立扩展每个服务,根据需求调整资源,而不会过度分配或未充分利用资源。

  2. 故障隔离:如果一项服务发生故障(例如,WebAPI 在重负载下),另一项服务可以继续运行而不受影响,从而提高整体可靠性和正常运行时间。

  3. 操作清晰:服务独立运行时,日志、指标和调试更加简单,更易于管理和故障排除。

  4. 灵活性:您可以分别优化每个服务的部署和基础设施,从而实现更好的成本管理和高效扩展。

为了有效地集成它们,请使用异步消息传递(例如队列或服务总线)来处理 WebAPI 和后台任务之间的通信。这种解耦的架构确保了稳健性,使其适合长期增长和复杂的系统。

更新

当 OP 确认了他的要求后,我正在提供我的意见。

  1. 添加项目引用:在您的WorkerService项目中引用WebAPI项目。

  2. 将 WebAPI 集成为托管服务:修改 WorkerService 的

    Program.cs
    以与工作线程一起启动 WebAPI。使用自定义
    IHostedService
    在同一进程中初始化和运行 WebAPI。

  3. 配置单个

    Program.cs
    :调整WebAPI的
    Program.cs
    以允许集成,确保不存在端口冲突并且它在WorkerService的生命周期内工作。

© www.soinside.com 2019 - 2024. All rights reserved.