ユーザーがデータを入力するいくつかのページで構成される CRUD ASP.NET WebForms Web アプリケーションに取り組んでいます。私のクライアントは、ユーザーが最後のページで [完了] をクリックするまで (さまざまな理由で)、ページ間でエンティティをデータベースに保存したくありません。埋められたデータをページ間で伝播するためのオプションと、最も悪いものはどれですか? 私の読書から、ViewState と Server.Transfer を使用できることがわかりました。他のオプションはありますか?
4 に答える
クライアント アプリケーションで使用されるすべてのオブジェクトを に格納しSession
、ユーザーが [完了] をクリックすると、それらのオブジェクトをサービス/メソッドに送信し、エンティティに変換してからデータベースに送信できます。
を使用すると、すべてのデータがフォームの非表示の入力にシリアル化されるためViewState
、送信するデータの量が大幅に増加するため、オブジェクトを追加すると、HTTP 要求応答が大幅に増加します。Viewstate
これには本当に魔法の弾丸はありません。データが複雑すぎない場合は、値をクエリ文字列に格納します。オブジェクトが複雑で大きくなり、型の安全性を維持したい場合は、 を使用しますSession
が、自分でクリーンアップすることを忘れないでください!
さらなるオプションは、MVC パラダイムを使用し、非表示の入力を使用して値をそれ自体の形式で保存することです。これは、ユーザーが途中でバグを起こした場合にセッションをクリアすることを心配する必要がないことを意味しますが、クエリ文字列もクリーンに保ちます。
それがすべてのオプション、querystring、viewstate(don't do it)、sessionまたはhidden variablesだと思います。
データをシリアル化する必要があるため、コンテキストを保持できません。これはシリアル化できないため、上記がオプションです。
それぞれにプラスとマイナスがあり、
- Viewstate (非効率だが使いやすい)
- クエリ文字列 (効率的ですが、大規模なデータ セットと編集可能な場合は実用的ではありません)
- セッション (サーバーの負荷を追加し、クリーンアップが必要ですが、サーバー上でのみデータを保持できます)
- 隠し変数 (ユーザーからは隠されていますが、viewstate よりも効率的で、プロパティごとに多くの隠し入力が必要です)
好きなのを選びな!
MemCached を使用します。
インターネット上にはたくさんの例があります。
これを試してください :
Memcached を使用した分散キャッシュの実装