.NET 独立的后端和 WebAPI 与否
.NET separate backend and WebAPI or not
我是 .NET 的新手,我需要做一个为消息提供 Web 界面的项目。
问题是:
- 我应该将后端和 Web 分开吗API?
所以我应该为后端创建一个 .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 和消息服务的逻辑非常相似,或者其中一个只是另一个的一小部分,我会采用这种方式。
后者的一个简单示例是一个用例,当对端点的调用触发一些长 运行 操作,然后在它完成时将消息发送到队列。如果您计划单独扩展它们,您可能希望将它们分开。
我是 .NET 的新手,我需要做一个为消息提供 Web 界面的项目。
问题是:
- 我应该将后端和 Web 分开吗API?
所以我应该为后端创建一个 .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 和消息服务的逻辑非常相似,或者其中一个只是另一个的一小部分,我会采用这种方式。
后者的一个简单示例是一个用例,当对端点的调用触发一些长 运行 操作,然后在它完成时将消息发送到队列。如果您计划单独扩展它们,您可能希望将它们分开。