我正在开发一个应用程序,该应用程序旨在站在YouTube API之上,并将用户上传的内容传递到YouTube.Videos.Insert端点(使用他们提供的.NET客户端库)。现在,我的应用程序是作为一个简单的ASP.NET MVC应用程序构建的,但我很快意识到这可能不是最好的方法,因为问题很快就会发现上传过程可能是一个相当长时间运行的过程。
为了有效地做到这一点,最佳实践架构会是什么?到目前为止,我的想法是:
我希望在解决此问题的最佳方式上获得额外的架构洞察力。
答案 0 :(得分:1)
我会使用单独的服务API来解决这个问题。上传许多可能较大的文件的任务是一个长期运行的过程,您不想触摸您的Web应用程序。这种方法的主要优点是,如果出现问题,它不会影响您的Web应用程序。如果上传失败,您就不想重新启动您的网络应用程序来解决这个问题。
由于您担心这种方法的可扩展性,我会考虑使用后台任务管理器,它非常适合这些即发即弃的任务。就个人而言,我使用并推荐Hangfire,因为它带有一个漂亮的integrated dashboard,可让您在运行时观察任务。它还允许您自动重试失败(可配置),我认为总体来说它很适合您的需求。
我将它用于类似的情况,其中我需要建立多个websocket连接,并且如果它失败则重新建立一个连接。我有一个小程序,通过参数将服务添加到我的Hangfire队列。
其他选项包括Quartz.Net和FluentScheduler,但遗憾的是我对它们并不熟悉。