gpt4 book ai didi

jquery - 通过异步 Controller 从浏览器进行 Ajax 调用

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

我正在调用外部 REST 服务 (Vimeo REST API)。服务的响应是 JSON 对象。我的应用程序中的单个 View 可能最终会多次调用该服务(用于加载多个视频)。

我想衡量在这种情况下使用以下架构的优缺点

  1. 使用 jquery ajax 调用加载单个视频(从浏览器调用 REST 服务,因为每个视频都有其 Id,这是获取详细信息所需的唯一信息)
  2. 使用异步 Controller 操作在 Controller 中进行 REST 调用,然后显示视频

注意:我使用的是不需要身份验证的简单 API 服务。

最佳答案

AsyncController 并不是为了异步服务 HTTP 请求而设计的,而是为了执行长时间运行的服务器端进程。向 REST 服务发出单个请求可能是也可能不是长时间运行的服务器端进程。

因此,无论您决定在服务器端还是直接从客户端(浏览器)发出 REST 请求,都不一定需要使用 AsyncController。普通的 Controller 就可以完成这项工作。

您应如何处理视频请求取决于您的业务层的结构。如果了解要在业务层处理的 Vimeo 视频,那么最佳实践是让您的 Web 服务调用服务端。否则,您的客户端上会有业务逻辑,这可能会使维护变得困难。

另一方面,如果您的 Vimeo 视频只是独立 UI 小部件的一部分,那么可以安全地在客户端上完全处理请求,而不会产生意外后果。

我假设对 Vimeo 的 Web 服务调用收到 Flash 文件或类似文件。从服务器进行 Vimeo 服务调用需要更多带宽并消耗更多内存,因为数据必须传输到您的服务器。

如果您在服务器端执行此操作,则会发生这种情况:

 1 - Browser sends HTTP-Request to YourApplication
2 - YourApplication sends HTTP-Request to Vimeo's WebService
3 - Vimeo's WebService sends big HTTP Response with the Video data to YourApplication
4 - YourApplication sends big HTTP Response with the Video data to Browser

* If you choose to do it this way, this might be the point at which it makes sense to use an AsyncController

如果您在客户端执行此操作,则会发生这种情况:

 1 - Browser sends HTTP-Request to Vimeo's WebService
2 - Vimeo's WebService sends big HTTP Response with the Video data to the Browser

这使得看起来所有的事情都在客户端完成更好。但随之而来的是整个业务逻辑问题。可以通过向同步 Controller 操作发送 ajax 请求以进行业务逻辑处理,并使其向浏览器返回对 REST 服务的调用的 URL 来解决此问题。所以:

 1 - Browser sends AJAX request to YourApplication
2 - YourApplication handles business logic and sends the URL of the REST request to Browser
3 - Browser sends AJAX request to Vimeo's WebService
4 - Vimeo's WebService sends big HTTP response with the video data to the browser.

我认为这可能是您最好的选择。

关于jquery - 通过异步 Controller 从浏览器进行 Ajax 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4729306/

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