0

私のサイトでは、次のものが必要です。

  • アクションとレンダリング時間のログ
  • 特定の製品の訪問をログに記録する
  • 時々投票を集める
  • 時々ニュースレターを送る
  • 時々ソーシャルネットワークに投稿する

これに対する私のアプローチは、グローバルフィルターを作成し、OnResultExecutedで必要なチェックとアクションを実行することでした。

いくつか質問があります:

  1. OnResultExecutedが実行されているとき、ユーザーはレンダリングされたページを受け取り、基本的に他に何も待っていませんか?私はそれをブロックしていますか?
  2. OnResultExecutedで、このジョブの新しいスレッドを開始することをお勧めしますか?
  3. このアプローチはASPMVC4で問題ありませんか
4

1 に答える 1

0

MSDN によると、このメソッドは応答が書き込まれた後に呼び出されます ( http://msdn.microsoft.com/en-us/library/system.web.mvc.controller.onresultexecuted(v=vs.108).aspx )。応答をブロックしません。

最初の 2 つのポイント (アクションのログと訪問のログ) を除いて、タスクのサイズに応じて、他のポイントでかなりのリソースが必要になる場合があります。

私のアドバイスは、最初の 2 つのタスクで OnResultExecuted をオーバーライドし、Windows サービス (C# で簡単に記述できる) を使用して他のタスクをバックグラウンドで実行することです。このようにして、iis ワーカー スレッドの代わりに低コストの clr スレッドを使用できます。

時間/リソースを消費するタスクをバックグラウンドで実行すると、Web アプリケーションにスケーラビリティが追加されます

お役に立てれば

于 2013-02-06T13:42:15.353 に答える