2016-07-25 11 views
-2

私はいくつかの機能を実行するASP.NETサーバーベースのシングルページWebアプリケーションを持っています。そのうちの1つはサードパーティAPIからのデータアクセスを必要とします。アプリケーションは、このデータを使用してユーザーに提案を提供します。データベースのバックグラウンドでの

ユーザーがAPIからのデータとは独立した単純なアクションをページ上で実行しようとすると、ページが読み込まれるまでにかなりの時間がかかります。結局のところ、アプリケーションはページをロードするたびにAPIを呼び出します。これを修正する必要があります。

低負荷のフラストレーション要因を避けるために、私はクライアント側のスピードを上げるためにjQueryやAJAXのようなツールに頼ることができたことを知っています。しかし、他のページメソッドはすばやく実行されるため、1つのメソッド呼び出しだけに責任がある場合は、ページ上の他のすべてをクライアントサイドコードに変換する際の値は表示されません。

外部APIからのライブデータは必ずしも必要ではないので、x分後にポストバックまたはページロードのデータを送信するタイマーメソッドを一緒に送信するのが自然な本能です。しかし、このアプローチについては、何かがあまりにも粗すぎるようです。この目標を達成するためのよりエレガントな方法はありますか?

APIデータは、APIとWebページの仲介者として機能するデータベースに格納されます。アプリケーションは、x分(ページのロードとは別に)毎にAPIを呼び出してから、ユーザーのアクションやページの読み込み時にデータを提供できますか?時間のかかるAPIメソッドをバックグラウンドでアプリケーションを妨害することなく実行できますか?

+1

Way広すぎます。ここでは特定の質問のみが許可されています。 –

+3

はい、タスクを実行するバックグラウンドプロセスを持つことは可能です。 Googleの検索では、最新のASP.NET Webアプリケーションで使用できるアプローチが1つまたは2つ表示されますが、個人的には、個別のアプリケーションを完全に持ち、WebアプリケーションをそのままWebアプリケーションにするという、 Windowsサービスやスケジュールされたコンソールアプリケーションのようなものは、外部サービスからデータを取得し、定期的にデータベースを更新することができます。 – David

答えて

-1

データベースは間違いなく3番目のパーティを呼び出すことができません。データベースはそれを実行せず、データを格納してデータを格納し、データベースに問い合わせて戻します。

自分でコンソールアプリやxi分ごとにapiを呼び出すWindowsサービスを書くことができます。しかし、過去1か月にログインしたことがあるかどうかに関わらず、すべてのユーザーにAPI呼び出しを行うだけでは効率的かどうかはわかりません。

実際にページを読み込むには、3番目の部分のAPIから来たデータがなくてはなりません。または、行を1つだけ取得するか、大文字と小文字の区別がある場合は、自分のapiにajax呼び出しを行います。あなたのapiはデータベースを呼び出し、最後のデータ更新が最後のx分以内に行われた場合は、データベースからjstを読み込みます。そうでなければ、apiはサードパーティAPIを直接呼び出してデータベースに挿入します。

関連する問題