2016-07-25 63 views
-2

我有一个基于ASP.NET服务器的单页Web应用程序,它执行多个功能,其中一个需要从第三方API访问数据。应用程序使用这些数据向用户提供建议。c#数据库在后台

当用户尝试在页面上执行与API中的数据无关的简单操作时,页面会花费大量时间加载。毕竟,应用程序每调用一次页面都会调用API - 我需要解决这个问题。

为了避免缓慢加载的挫折因素,我知道我可以依靠像jQuery和AJAX这样的工具来加速客户端。然而,其他页面方法执行速度很快,所以当只有一个方法调用被指责时,我看不到将页面上的所有内容转换为客户端代码的价值。

我并不总是需要来自外部API的实时数据,所以我的天生本能就是在x分钟之后,将一个定时器方法放在一起发送回传或页面加载数据。但是这种方法似乎太粗暴了。有没有更好的方法来完成这个目标?

API数据存储在数据库中,作为API和网页之间的中间人。应用程序是否可以每分钟(独立于页面加载)调用API,然后在用户的操作或页面加载时提供数据,从而允许耗时的API方法在后台运行而不会阻碍应用程序?

+1

太宽泛。这里只允许具体问题。 –

+3

是的,可以有一个执行任务的后台进程。 Google搜索将向您展示现代ASP.NET Web应用程序可以使用的一种或两种方法,但个人而言,我更喜欢经过时间考验的完全独立应用程序的方法,并将Web应用程序仅仅作为Web应用程序。像Windows服务或预定的控制台应用程序可以从外部服务中获取数据并定期更新数据库。 – David

回答

-1

该数据库绝对不能调用第三方。数据库不这样做,它们会将数据放入它们并存储数据,然后查询数据库以将其还原。

你可以自己写一个控制台应用程序,或每x分钟调用一次api的Windows服务。但我不确定这是否有效,无论是否为过去一个月内都登录过,而是为每个用户进行一次api调用。

如果没有来自第三方API的数据,你真的应该能够真正加载页面。或者只是一行或任何情况下,然后做一个Ajax调用你自己的api。你的api会调用数据库,如果最后一次数据更新是在最后x分钟内完成的,那么你只需从数据库中读取数据,如果没有,那么你的api可以直接调用第三方api,然后插入数据库