我对.NET相当陌生,我需要做一个为消息提供Web界面的项目。
问题是:
所以我应该为后端创建一个.NET Core控制台应用程序,为API创建一个.NET Core WebAPI,以便后端将与API进行通信以存储和读取数据库。 >
OR
我是否应该创建一个同时包含(后端和API)的.NET Core WebAPI项目?
后端将执行后台任务(消息处理等)
如果我不分开(因此将所有内容都放在.NET Core WebAPI中),我应该如何创建可在应用程序运行的同时运行的后台线程?
(我不想使用HangFire或Quartz)
谢谢!
答案 0 :(得分:1)
我认为,由于用例差异太多,因此您应该将项目分开。
例如,API端点通常被设计为从端点传递数据负载,而来自Web应用程序的相同数据访问很可能会受到更多限制和过滤。同样,您虽然很可能具有用于api(JWT令牌f.e.)或Web应用程序后端(基本用户身份验证)的不同授权概念。
如果您将服务分开,则进一步的开发和维护将更加容易,因为您始终可以保证彼此之间没有依赖关系。
由于您既可以提供这两种服务,也可以仅提供这两种服务,因此您还有更多的可重用性。
答案 1 :(得分:1)
我想,大多数人会建议您将它们分开,因为它与基于微服务的流行方法一致,并在将来为您提供了更好的灵活性。
但是,在某些情况下,您可以使用带有附加IHostedService的单个WebAPI项目来处理消息和执行其他后台工作。请查看this article for more info on IHostedService / BackgroundService。如果API和消息传递服务的逻辑非常相似,或者一个逻辑只是另一个逻辑的小部分,我会采用这种方式。
后者的一个简单示例是一个用例,当对端点的调用触发一些长时间运行的操作,然后在完成时有一条消息发送到队列。如果您打算分别缩放它们,则可能需要将它们分开。