Flex と Silverlight を使用して RIA アプリを構築するときに、クライアント側で発生するエラーをどのようにキャプチャしますか? 一般的な慣行は何ですか?Web サービスへの非同期 js 呼び出しが実装されているのを見たことがありますが、コミュニティがそれをどのように扱っているか知りたいです。
5 に答える
まず、クライアント側のログを常に使用しています。それを処理する方法は、アプリケーション全体に依存します。
AMF ゲートウェイを使用すると、アプリケーション エラーの呼び出しが発生し、エラーが発生するたびにサーバーに通知されます。サーバー側では BugZilla でバグが開かれています (これは私たちが使用するものであり、必要な他のフックを使用できます)。 )。
Web サービス ベースのアプリケーションを使用すると、Web サービス呼び出しでクライアント エラーが発生します。
エラーごとにサーバーをサンプリングするべきではないと言う人もいますが、クライアント側のエラーはまれであるため、このコメントには同意しません。クライアントにリリースされる前に徹底的なQAが行われるため、エラーが発生するたびにクライアントがすぐに知りたい経験しています。
私は基本的にすべてのエラーを一番上に浸透させ、未処理の例外でそれらをキャプチャします。ユーザーにわかりやすいメッセージを表示します。ただし、アプリケーション全体でILoggerインターフェイスを実装しています。このインターフェイスはさまざまなレベルで初期化でき、あらゆるメッセージングを処理します。ユーザーがinitパラメーターを追加して、エラーをサービスに送信するかどうかを決定できるように設定できます。通常、デバッガーが接続されている場合は、ロガーにDebug.WriteLineを使用してメッセージを書き込んでもらいます。デバッグモードで問題をトレースします。
私は Avi Tzurel と同じアプローチを使用しました。Flex クライアントでエラーが発生したときに、サーバー側で知る必要があります。より多くのデータ (すべてのログ メッセージ、警告) を収集したい場合は、内部バッファーを使用し、非同期でフラッシュします。
とにかく、顧客がこのアプローチに問題がないかどうかを考慮する必要があります..エラーメッセージをサーバーに送信する前に、顧客の同意が必要になる場合があります.
Silverlight では、 Silverlight Integration Pack for Enterprise Libraryの Logging and Exception Handling Application Blocks を検討することをお勧めします。
Silverlight では、WebClient を使用してどこかの Web サービスに再度ログインするのが好きです。JavaScript を呼び出すことなく、Silverlight アプリケーションで直接これを行うことができます。
コードがスタックにないときに発生する例外をキャッチするには、Application.UnhandledExceptionイベントを使用できます。