0

単純な REST API 用に ASP.net Web API を使用しています。私はデータ アクセス レイヤーに Linq を使用しており、API 呼び出しごとに新しい linq データ コンテキストを作成していました。しかし、すべての呼び出しに対して新しいデータ コンテキストを作成するのは少しリソースが集中するように思えたので、global.asax でインスタンス化される単一のアプリケーション レベルの変数にデータ コンテキストを移動することを検討し始めました。

各 API 関数は、1 つのテーブルに対して単純な CRUD 操作を実行するだけです。このアプローチを使用すると、並行性の問題がいくつかあることを理解しています。しかし、実際にはすべてのテーブルがユーザーごとに分割されているため、2 人の異なるユーザーがテーブルの同じ行を更新または削除することはできませんでした。また、API であるため、すべての変更後に datacontext.submitchange() を呼び出しているため、1 人のユーザーが同じ行を同時に更新できます。

同時実行性の問題以外に、グローバル レベルでデータ コンテキストを管理することと、すべての API 呼び出しでインスタンス化することについて、他に懸念事項はありますか? アプリケーションレベルのインスタンス化のパフォーマンス/リソースの利点を達成する可能性のある他のアプローチはありますか?

4

1 に答える 1

0

データ コンテキストをグローバル変数として定義できると思います。これが原因で将来問題が発生しないと確信している場合は、これを行うことができます。

ただし、この変更を行う前に、アプリケーションのベンチマークを実行して、何がリソースを消費しているのかを正確に調べることをお勧めしますか? データ コンテキストが有罪であると確信していますか? 他の何かがあなたのリソースを食い尽くしたらどうしますか?

最初に問題を特定してから、最適化を開始する必要があります。

于 2013-06-16T00:12:27.783 に答える