私の質問は、ASP.NET4.0WebFormsアプリに自動保存を実装するための高性能な方法についてです。
さまざまなjQuery自動保存プラグインの使用について多くのことを読みましたが、それらはすべて最小限の入力要素に最適に使用されているようです。また、ユーザーがフォームに戻ったときにASP.NETフォームに再度入力するソリューションは見つかりませんでした。
多くの要素を含むFormViewと、ネストされたリストビューとフォームビューがあります。LinqDataSourceを使用してFormViewとその子にデータを入力します。
WebサーバーはIIS7です。DBはLinqtoSQL経由のSQLServerであり、MSMQまたは必要なその他のサーバーコンポーネントにアクセスできます。
フォーム要素をAutoPostBackに設定したUpdatePanelと、非同期リクエストを強制的にシーケンシャルにするためのカスタムjavascriptを使用して、自動保存を実装しました。これは、LinqからSQLへの同時実行エラーを回避するためです。各UpdatePanel非同期ポストバックは、フォーム全体をSQLServerのドラフトテーブルに保存します。あまりエレガントではありませんが、ゆっくりと機能します。
問題は、往復が遅すぎることです。これにより、保存中に行われたフォームの変更は保存されず、ユーザーがその間にスクロールした場合、フォームは保存された要素にジャンプして戻ります。
だから私は今私がする必要があると思っています:
- 同じ方法を維持し、フォームからlinqエンティティを入力して、MSMQに保存します。次に、これを引き出して、ユーザーがフォームを送信したとき(または、セッション終了時、または次回再度ログインしたとき)に永続化します。また
- https://github.com/nervetattoo/jquery-autosave/のようなものを使用して、シリアル化されたフォームデータをMSMQに保存します。これはかなり高速ですが、問題は、ユーザーが後続のセッションでフォームに戻ったときに、データをASP.NETフォームに戻す方法がわからないことです。
また、各ポストバックに「送信」フォームの入力値だけを保存することも考えました。これを辞書で実行し、MSMQで辞書を維持することができます。
ところで、ユーザーがブラウザを閉じてもフォームデータが保持されるようにする必要があるため、キャッシュまたはセッションを使用できません。だから私はもっと頑強なものが必要です。
あなたの意見に非常に興味があります-すべてが大いに感謝しています!
乾杯..