1

ReadCommitted Isolation を使用している NHibernate MVC アプリケーションがあります。

サイトには、ユーザーが開始できる特定のプロセスがあり、入力によっては数分かかる場合があります。これは、セッションがリクエストごとであり、その間ずっと開いているためです。

ただし、それが実行されている間、他のユーザーはサイトにアクセスできません (アクセスを試みることはできますが、長期実行が終了しない限り、要求は通過しません)。

さらに、同じデータベースに接続しながら、この長時間実行される機能を実行するコンソール アプリも必要です。それは同じ問題を引き起こしています。

セットアップのどの部分が間違っているのかわかりません。フィードバックをいただければ幸いです。

NHibernate は流暢な構成と StructureMap でセットアップされます。

  • 分離レベルは ReadCommitted として設定されます。
  • セッション ファクトリのライフサイクルは HybridLifeCycle です (Web では Session per request である必要がありますが、win コンソール アプリでは ThreadLocal になります)。
4

4 に答える 4

1

あなたのアプリケーション/SQLステートメントの設計に問題があると思います。あなたがFacebookでない限り、これまでに必要なプロセスはないと思います.この長時間実行プロセスは続行されます。

また、ORM がすべてのシナリオに適していない場合もありますが、SP を使用しようとしましたか?

于 2013-09-13T13:58:34.847 に答える
1

別の、より複雑な解決策は次のとおりです。

マシンの 1 つで実行されるバックグラウンド ロボット アプリケーションを構築します。

  • このバックグラウンド ワーカー ロボットは、「ワーカー ジョブ」(ユーザーによって開始されたジョブ) を受け取ることができます。
  • 次に、ロボットはジョブのステップとステップをバックグラウンドで処理します

落とし穴は次のとおりです: - このロボットを非常に安定してプログラムする必要があります - 何らかの方法でロボットを監視する必要があります

確かに、これにはより多くの作業が必要です。反対に、より多くのジョブ タイプを統合するオプションがあり、システムがバックグラウンドでさまざまなことを処理できるようになります。

于 2013-09-13T13:05:36.937 に答える