0

Entity Framework で WebApi を使用して REST サービスを実装しています。使用状況をデータベースに記録する必要があります。これは、返される前にコントローラーで行うか、ActionFilterAttribute で行うことができます。データベースを更新するための呼び出しを開始できるようにしたいのですが、完了を待ちたくありません。更新を待たずにレスポンスをユーザーに返してほしい。

BackgroundWorker を使用してオブジェクトを渡すことを考えていました。

これがこれを行う良い方法であるかどうかについて考えている人はいますか?

4

3 に答える 3

1

自問すべき質問は、データベースの更新によって全体的な応答時間にどれだけの待ち時間が追加されるかということだと思います. ほとんどの場合、リクエスト処理の一部として更新を行うのは非常に簡単です。バックグラウンドワーカーは一般的に良い解決策ではありませんが、そのトピックに関連する良い読み物があります. どうしてもリクエスト処理以外でデータベースの更新が必要な場合は、信頼性の観点から、MSMQ、RabbitMQ などのキューイング メカニズムを検討することをお勧めします。

于 2013-10-01T22:30:32.877 に答える
0

NLog の非同期機能を調べてみましたか? 次のようにデータベースのログ ターゲットをラップすることで、NLog の非同期ラッパーを使用します。

<targets async="true">
  <target name="dbLog" xsi:type="Database" dbProvider="sqlserver" connectionString=".." />
  .
  .
</targets>

NLog を使用した MS SQL DB へのロギングのクイック スタートアップは、ここ にあります。NLog.configのサンプルについては、この SO スレッドを参照してください。

于 2013-10-03T07:15:42.410 に答える