私はASP.NET Core Webサイトを持ち、EFCoreを使用しています。 私はデータベースへのログのようないくつかの作業をしたいと思いますが、より速く答えるためにユーザーに応答を送信した後です。ASP.NETコアのレスポンスの後にいくつか作業します
私は別のスレッドでそれを行うことができましたが、DbContextの非同期アクセスのため安全でないかどうかはわかりません。それを行うための推奨される方法はありますか?その理由の
public async Task<IActionResult> Request([FromForm]RequestViewModel model, string returnUrl = null)
{
try
{
var newModel = new ResponseViewModel(model);
// Some work
return View("RequestView",newModel)
}
finally
{
// Some analysis on the request
// I would like to defer this part
await Log(model);
}
}
一つは、私が答えるために必要とされていないウェブサービス(ジオコーディング)を、呼び出したいが、良いログ(私は座標の都市/国を必要とする)上で動作するということです。
1にHangFireを使用しての私のblog postである可能性があり全部ダウン? ASP.NETでのスレッドの開始(コアまたはレガシー)は非常に悪く、ASP.NETがスレッドプールからスレッドを管理する方法を乱し、通常はパフォーマンスが向上する代わりに悪化します(メモリスレッドの割り当て、コンテキストスイッチ)。 3.ボトルネックであることを実際に主張し、それをバックアップするための頑強なデータがある場合は、メッセージ(メモリまたは分散)をキューに入れてバックグラウンドで処理してください) – Tseng
実際には重いわけではありませんが、データベースへの書き込み(リクエストがすでに完了しているかどうかを確認する)、ユーザーに何も通知しないようにする前に答えを出したいと思っています。 – Jean