2012-03-06 12 views
8

実行に時間がかかるプロセスを処理するために推奨されるアプローチは何ですか?私はページがタイムアウトするので、単にサーバー上で実行したくありません。長期実行タスク - ベストプラクティス - ASP.NET 4.0、C#

私は、ウェブを閲覧し、複数のアプローチを発見した - AJAX、スレッディング、Webサービス...(私は経験を持っているのなし)

は、これに対処するベストプラクティスの方法は何ですか?

ありがとうございます。

答えて

4

WebServiceとして処理キューと一緒に目的のタスクを実装することは、透明性と信頼性の高い方法の1つです。したがって、クライアントサイドでは、Webサーバーにリクエストを送信し、後で結果を確認するために、返されたIDを受け取ることができます。

他のすべては、実装しようとしている豊富なユーザーエクスペリエンスに依存します。ボタンを押すだけで、ユーザーに制御またはページ全体を時々更新させることができます。または、リクエストを送信し、結果を自分で随時チェックするajaxベースのコントロールを実装します。

+0

返信いただきありがとうございます。前述のように、私はオプションとしてWebサービスに出くわしました。私はこれがベストプラクティスかどうかを具体的に見ています。私はそれがわかっている、私はそれをさらに見てみる(私は新しいWeb APIを使用するだろうか?)私の状況は、ユーザーがサーバーに大きなエクセルファイルをアップロードし、DBにレコードを追加することです。 – Rivka

+0

これもご覧ください:http://weblogs.asp.net/jgalloway/archive/2008/01/08/large-file-uploads-in-asp-net.aspx –

1

要件に応じて、pukipukiのように、WebService(または正確には、WCF serviceは標準のXML WebServicesが推奨されないため)を設定することができます。

長時間実行されるプロセスが複雑(多くの手順、非常に集中的な作業、他のサーバーに移行する可能性があるもの)または堅牢なもの(ジョブが失敗し、再試行する必要があるなど)長時間実行されているプロセスを実行しているサービスに出入りするフローを制御するために、何らかの形式のメッセージキューを使用する方法を検討します。メッセージキューは確かに残念な状況ですが、メッセージストレージ、永続性、およびフロー制御を提供する素晴らしいフレームワークであり、すべてを自分で構築する必要はありません。 Hereは、ASP.NETでMSMQを使用する方法の概観です(申し訳ありませんが、サンプルコードはVBでC#ではないようです)。

8

長時間実行するタスクを実行しようとしているだけの場合は、Windowsサービスが最適です。いいえ、ウェブサービスではなく古い学校のWindowsサービスです。誰かがExcelをアップロードすると、WindowsサービスはFileWatcherを使用してディレクトリを監視し、インポートプロセスを自動的に実行できます。そうすれば、プロセスをASP.NETとIISワーカープロセスに限定することはなく、さまざまな理由でリサイクルできます。あなたのアプリは本当にIISの外にいる必要があるように思えます。アップロードプロセスは、Windowsサービスによって監視されているディレクトリにそのファイルを格納するための単純なWebフロントエンドにすることができます。

関連する問題