0

ユーザーが入力したデータで SQL Server データベースを更新する非常に大きな HTML フォーム (100 フィールド以上) があります。ユーザーがフォームに入力するには長い時間がかかりますが、ユーザーが送信するすべての情報はビジネス プロセスにとって非常に価値があります。ユーザーがフォームをあきらめたとしても、入力したものはすべて保持したいと考えています。

各フィールドに onblur イベントを添付し、jQuery/AJAX を使用して各データをアプリケーション サーバーにすぐにポストする予定です。その部分はかなり簡単です。問題は、このアプリケーション レベルの情報をデータベースに保存する最適なタイミングと方法です。繰り返しになりますが、私たちの優先事項はパフォーマンスではなくデータ保持ですが、これも可能な限り効率的に行いたいと考えています。

私が見ているオプションは次のとおりです。

  1. Web サービスが各データをデータベース サーバーにすぐにポストするようにします。
  2. アプリケーション サーバー上のカスタム クラスに情報を格納し、定期的に update メソッドを呼び出して新しいデータをデータベースにポストします。
  3. 情報をビュー状態またはセッション状態に保存し、ルーチンを実行してこの情報をデータベース サーバーにポストします。
  4. 私たちが考えていなかった他の何か。

オプション 1 は、最も明らかにフェイルセーフに見えますが、最もリソースを消費します。オプション 2 が最も洗練されているように見えますが、最初に update メソッドを実行しないとカスタム クラス インスタンスを破棄できないと断言できますか?

ご協力いただきありがとうございます!

4

2 に答える 2

1

私見、私は本当にフォームをセクションに分割したいと思います(可能であれば)。これはASP.Netなので、使用している場合は使用Web Formsを検討してくださいwizards(フォームを論理に切り分けてくださいSteps

フォーム ウィザードを使用しなくても同じことができますが、プロセスをクライアント側の論理的なステップに分割することはできます。おそらく純粋な JavaScript でこれを行うことができますが、フレームワーク (jQuery、Knockout など) を使用した方が簡単でしょう - 概念は同じままで、フォーム入力プロセスをセクション (別名「ステップ」) に分割します -たとえば、表示切り替え、各「ステップ」の div などを使用します。

  • 「後で放棄されてもすべてを保持する」: ステップは「最も重要な」入力が最初にある「階層的」であると想定されます。これにより、「ステップ」アプローチがさらに重要になります。これは(本当に必要な入力の)「論理グループ」であるため、ステップアプローチを実行すると、このデータ(この「ステップ」の)をDBに保存できます。適切と思われる方法 (Ajax、ASP.Net ポスト/ポストバックなど)。

ひ...

于 2013-06-05T13:49:32.790 に答える
0

すべてを何らかの xml またはデータセット (.getxml) にパッケージ化し、xml をストアド プロシージャに渡します。

XML を C# から SQL Server 2008 のストアド プロシージャに渡す方法は?

そして、おそらくバックグラウンドスレッドに呼び出しを置きます。

http://code.msdn.microsoft.com/CSASPNETBackgroundWorker-dda8d7b6

xml は、行ごとに値を呼び出す (RBAR) よりも高速です。xml のみを保存するか、xml をリレーショナル テーブルに分割できます。

于 2013-06-05T17:15:04.500 に答える