.NET 独立的后端和 WebAPI 与否

.NET separate backend and WebAPI or not

我是 .NET 的新手,我需要做一个为消息提供 Web 界面的项目。

问题是:

所以我应该为后端创建一个 .NET Core 控制台应用程序并为 API 创建一个 .NET Core WebAPI 这样后端将与 API 存储和读取数据库。

我是否应该创建一个包含(后端和API)的 .NET Core WebAPI 项目?

后端将执行后台任务(消息处理等)

如果我不分离(所以把所有东西都放在.NET Core WebAPI),我应该如何创建只要应用程序运行就运行的后台线程?

(我不想使用 HangFire 或 Quartz)

谢谢!

在我看来,您应该将项目分开,因为用例差异如此之多。

例如,API 端点通常设计用于从端点传送大量数据,而来自 Web 应用程序的相同数据访问很可能会受到更多限制和过滤。此外,您很可能有不同的授权概念用于 api(JWT 令牌 f.e。)或 Web 应用程序后端(基本用户身份验证)。

如果您将服务分开,进一步的开发和维护将会容易得多,因为您始终可以保证彼此之间不存在依赖关系。

由于您能够提供两种服务或仅提供其中一种服务,因此您的重用性也更高。

我想,大多数人会建议您将它们分开,因为它符合流行的基于微服务的方法,并在未来为您提供更好的灵活性。

但是,在某些情况下,您可以使用带有附加 IHostedService 的单个 WebAPI 项目来处理消息和执行其他后台工作。请看一下this article for more info on IHostedService / BackgroundService。如果 API 和消息服务的逻辑非常相似,或者其中一个只是另一个的一小部分,我会采用这种方式。

后者的一个简单示例是一个用例,当对端点的调用触发一些长 运行 操作,然后在它完成时将消息发送到队列。如果您计划单独扩展它们,您可能希望将它们分开。