データベースでタスクを実行するはずのC#でマルチティアアプリケーションを使用しています(初めて使用する場合、データベースを作成してデータを入力することがあります)。私が最初にアプリケーションを設計したとき、進捗バーコントロールの可能性は考慮されていませんでした。アプリケーションの設計を変更して、データベース操作の進捗状況をUIレイヤーに報告できるようにするにはどうすればよいですか?そこには再利用可能なソリューションがありますか?また、私のすべての機能を変更してレポートの追加情報を入力する必要はありませんか?進捗バーを使用するマルチティアアプリケーションの設計
答えて
いいえ、アプリケーションの大きさによっては、先行して多くの作業があります。
作業の進捗状況を報告するには、作業単位が完了したときにイベントを発生させる作業が必要です。そのイベントはUIレイヤーで処理され、進捗インジケーターが更新される必要があります。
開始するには、BackgroundWorker(ここにはMSDNの例 - http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx)があります。 BackgroundWorkerに慣れたら、アプリケーションにどの変更を加える必要があるかを判断するのに適しています。
サーバコードを変更して、サーバシグネチャを変更せずにサーバ側で進捗情報を更新し、この情報を個別に照会できる別の方法を使用できます。
これにより、サーバーへの既存の呼び出しに何の影響も与えずに、進捗状況のサポートを後付けすることができます。UIの新しいバックグラウンドスレッドを追加して、長時間の実行中の進行中の情報を確認します。
編集:クライアントで実行されるタスクでも同じアプローチが有効だと思います。しかし、静的な進捗インジケータクラスもここでも使用できます。
グレッグが述べたように、今後多くの作業があります。しかし、問題に近づくには多くの方法がありますが、クライアントからアプリケーション/データベース層にコンテキスト情報がどのように伝わるかによって、最適なものが決まります。たとえば、セッショントークンまたはトランザクション識別子が、通常、クエリ/トランザクションまたはアプリケーションからクライアントに非同期に戻される確認応答を実行する通常の過程でクライアントからアプリケーションに渡された場合、進捗報告が必要だった場合、アプリケーションがクライアントが照会できる状態テーブルを更新するようにすることができます。これにより、必要な再作業の量を減らすことができます。基本的には、「ミドルウェア」をすでに使用しているとみなし、それを利用して階層間のトランザクションを関連付けることができるかどうかを確認する必要があります。
- 1. 進捗バーのwinformバー
- 2. GWTの進捗バー
- 3. 進捗バーの割合を計算する
- 4. オンラインWebフォームの進捗バー
- 5. ポートフォリオ商品の進捗バー
- 6. 進捗バーへのバインド
- 7. タイムラインAVPlayerの進捗バー
- 8. ブートストラップの進捗バーをカウントダウンタイマーとして使用する
- 9. AJAXリクエストの進捗状況バーを使用する
- 10. SpriteKitで進捗バーを作成する(スウィフトを使用)
- 11. 進捗バー付きカスタムオートコンプリート
- 12. Javaファイルに進捗バー
- 13. リストビューで進捗バーを更新する
- 14. 進捗バーをLiferayで作成する
- 15. スピナーの前に進捗バーを設定する方法は?
- 16. scikit-learnの進捗バーですか?
- 17. 進捗バーのアニメーションを行うには?
- 18. Iframeファイルのアップロードの進捗バー?
- 19. 進捗率の計算
- 20. 進捗率の計算
- 21. 進捗バーが変更されない
- 22. 進捗バーが更新されない
- 23. 高度な進捗計算
- 24. 進捗バー用のapt-get installの出力の解析
- 25. 進捗ダイアグラムとハンドラを使用する
- 26. sendSynchronousRequestで進捗インジケータを使用する
- 27. 進捗バーを作成するためのインラインdivs
- 28. 進捗バーの値を変更する方法
- 29. onclickメソッドに進捗バーを実装する際の問題
- 30. 別のスレッドから進捗バーを更新する
幸運。 (報告)の進展は難しい – SLaks