.NET是否将后端与WebAPI分开

时间:2019-11-19 07:33:53

标签: .net api structure asp.net-core-webapi

我对.NET相当陌生,我需要做一个为消息提供Web界面的项目。

问题是:

  • 我应该将后端和WebAPI分开吗?

所以我应该为后端创建一个.NET Core控制台应用程序,为API创建一个.NET Core WebAPI,以便后端将与API进行通信以存储和读取数据库。

OR

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

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

如果我不分开(因此将所有内容都放在.NET Core WebAPI中),我应该如何创建可在应用程序运行的同时运行的后台线程?

(我不想使用HangFire或Quartz)

谢谢!

2 个答案:

答案 0 :(得分:1)

我认为,由于用例差异太多,因此您应该将项目分开。

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

如果您将服务分开,则进一步的开发和维护将更加容易,因为您始终可以保证彼此之间没有依赖关系。

由于您既可以提供这两种服务,也可以仅提供这两种服务,因此您还有更多的可重用性。

答案 1 :(得分:1)

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

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

后者的一个简单示例是一个用例,当对端点的调用触发一些长时间运行的操作,然后在完成时有一条消息发送到队列。如果您打算分别缩放它们,则可能需要将它们分开。