単純な REST API 用に ASP.net Web API を使用しています。私はデータ アクセス レイヤーに Linq を使用しており、API 呼び出しごとに新しい linq データ コンテキストを作成していました。しかし、すべての呼び出しに対して新しいデータ コンテキストを作成するのは少しリソースが集中するように思えたので、global.asax でインスタンス化される単一のアプリケーション レベルの変数にデータ コンテキストを移動することを検討し始めました。
各 API 関数は、1 つのテーブルに対して単純な CRUD 操作を実行するだけです。このアプローチを使用すると、並行性の問題がいくつかあることを理解しています。しかし、実際にはすべてのテーブルがユーザーごとに分割されているため、2 人の異なるユーザーがテーブルの同じ行を更新または削除することはできませんでした。また、API であるため、すべての変更後に datacontext.submitchange() を呼び出しているため、1 人のユーザーが同じ行を同時に更新できます。
同時実行性の問題以外に、グローバル レベルでデータ コンテキストを管理することと、すべての API 呼び出しでインスタンス化することについて、他に懸念事項はありますか? アプリケーションレベルのインスタンス化のパフォーマンス/リソースの利点を達成する可能性のある他のアプローチはありますか?