gpt4 book ai didi

c# - ASP.Net体系结构,用于将上传内容传递给第三方

转载 作者:行者123 更新时间:2023-12-03 05:54:58 26 4
gpt4 key购买 nike

我正在开发一个应用程序,该应用程序旨在站在YouTube API之上,并将用户上传的内容传递给YouTube.Videos.Insert端点(使用它们提供的.NET客户端库)。现在,我的应用程序是作为一个简单的ASP.NET MVC应用程序构建的,但是我很快意识到这可能不是最佳方法,因为这个问题很快就浮现出来,因为上载过程可能是一个运行时间较长的过程。

为了有效地做到这一点,最佳实践架构是什么?到目前为止,我的想法是:

  • 某种队列策略,其中MVC应用将上传文件放入队列,然后后台进程将其弹出并执行进一步的上传到YouTube。但是,这似乎效率很低,因为它添加了临时存储文件并再次取回文件以进行处理,从而降低了应用程序的总开销。
  • 一个单独的微服务API,带有一个用于接收实际上载的终结点,我可以通过我的应用前端的Javascript与之联系;它将接收文件,返回202接受,并将上传流传递给异步线程并立即对其进行处理。这似乎更有效,但如果除我之外的人最终使用此功能,我担心可伸缩性。

  • 我希望对实现此目标的最佳方法有更多的体系结构见解。

    最佳答案

    我将使用单独的服务API来解决这个问题。上传许多可能很大的文件的任务是一个长期运行的过程,您不想触摸您的Web应用程序。这种方法的主要优点是,如果出现问题,则不会影响您的Web应用程序。如果上传失败,则您不想重启Web应用程序来解决此问题。

    由于您担心这种方法的可伸缩性,因此我将考虑使用后台任务管理器,它非常适合此类即发即弃的任务。就个人而言,我使用并推荐Hangfire,因为它带有一个漂亮的integrated dashboard,可以让您观察任务的运行情况。它还允许您自动重试失败(可配置),并且我认为总体上它很适合您的需求。

    我将其用于类似的情况,其中我需要建立多个websocket连接,如果连接失败,则重新建立一个。我有一个小程序,可通过参数将服务添加到我的Hangfire队列中。

    其他选项包括Quartz.Net和FluentScheduler,但是不幸的是,我对它们并不熟悉。

    关于c# - ASP.Net体系结构,用于将上传内容传递给第三方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46286257/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com