私は、ネットワーク通信を大量に行うWindowsサービスを作成しています。ユーザーに(ログオンしている場合)通知する方法が必要です例外/エラー。サービスがデスクトップとやりとりできるようにすることが悪い習慣であることは分かっています。そのため、ユーザーにエラーが発生したことを通知する別の方法がありますか?私はイベントロギングを認識していますが、システムトレイやユーザーの注目を集めるものからバブル通知を表示することもできます。.Net Windowsサービスがユーザーにエラーを報告するための最良の方法
答えて
イベントログと監視専用のアプリケーションをご利用ください。電子メールまたはMSMQの使用を検討することもできます。
他のアプリを使ってこのアプリケーションとやりとりし、エラーについてユーザーに通知するにはどうすればよいですか?この方法で、ユーザーに「オプション」を付けることができます。アラート、メールなどをオフにすることができます
通常、サービスが通知できるセカンダリアプリがあります。たとえば、何か重要なことが起こったときに、バルーンをポップアップするシステムトレーアイコン(ugh)を表示することができます(二重)。アプリ自体は、あなたのサービスの設定のためのインターフェースを提示することもできます。
Growl:http://www.growlforwindows.com/gfw/のような既存の通知アプリを利用できます。これにより、ユーザーは「オプトイン」することができます。
「デスクトップとやりとりする」オプションの代わりを提供する必要があります。 VistaおよびWin7ではサポートされなくなりました。高度に特権のあるアカウントで実行されるUIへの制限されたユーザーアクセスを与えることは、あまりにも大きなセキュリティリスクとみなされました。 Googleの "セッション0の隔離"を参照してください。
.NETでサポートされているプロセス相互運用機能の1つを使用して、サービスとUIアプリケーションの間の相互作用を設定する必要があります。単純なメッセージの受け渡しには、ソケットまたは名前付きパイプを使用します。パイプ名には、すべてのセッションに表示される「グローバル\」プレフィックスが必要です。より複雑なやり取りを行うには、RemotingまたはWCFを使用できます。
ユーザーがデスクトップアプリケーションを実行したり、終了したりする可能性があることに注意してください。 EventLogクラスでエラーを記録する必要があります。
この問題を解決するために、ユーザーが自由に起動して停止できるWindowsフォームアプリケーションを作成しました。もちろん、Windowsサービスは24時間365日、バックグラウンドで実行されています。アプリケーションが開始されると、Windows Communication Foundation(WCF)を使用してサービスに現在のステータス(アクティブであるか、接続されているクライアントの数、収集されたバイト数など)を照会します。この情報は、アプリケーション内
タスクマネージャの動作を模倣しようとしたので、システムトレイにアイコンを表示するアプリケーションのメインフォームにSystem.Windows.Forms.NotifyIcon
も追加しました。アプリケーションが開いていると、システムトレイのアイコンが表示されます。ユーザは、タスクバーへのアプリケーションを最小限に抑えることができ、またはアプリケーションを完全に隠すことができます。トレイアイコンは、ユーザーがアプリケーションを閉じると消えてしまいます。トレイアイコンは、アプリケーションを再度開くためのダブルクリックと、機能にすばやくアクセスするためのポップアップメニューもサポートしています。
いずれにしても、WCFはサービスとフロントエンドアプリケーションの通信を行う最も簡単な方法です。人々は、WCFに関連した「急な」学習曲線を主張するだろうが、私はそれを経験しなかった。 WCFはプロセス間通信を開発するための非常に効率的な方法であることがわかりました。 this videoを見れば、WCFのプログラミングパラダイムを理解することができます。
- 1. .NETソースコードを印刷するための最良の方法
- 2. Pythonのための最も良い報告ツール
- 3. androidのユーザー情報を格納する最良の方法
- 4. .Net Windowsサービスで "ログオン"ユーザーを編集する方法
- 5. iOSのコンソールログと同時にクラッシュログを報告する最も良い方法は?
- 6. RESTサービスを構築するための最良の.NET APIは何ですか
- 7. ユーザーの資格情報を保存するためのより良い方法
- 8. WinJS:重要な情報を保存するための最良の方法
- 9. Djangoで学生情報サイトを作成するための最良の方法
- 10. サービスのプロパティを保存/取得するための最良の方法
- 11. Webサービス経由でファイルを転送するための最良の方法
- 12. docker composeアプリケーションをサービスとしてパッケージ化するための最良の方法
- 13. .NETでRESTfulなサービス "クライアント"を書く最も良い方法は?
- 14. ベストプラクティス:国際化のためにC#.netに例外/エラーまたは情報メッセージを格納する最良の方法は何ですか?
- 15. Haskellでロックされたファイルを報告する方が良い
- 16. Windowsエラー報告の製品データのマッピング
- 17. テスト方法に関する情報を保存するための最良の方法
- 18. Jupyter/IPythonノートブック情報を埋め込む最良の方法
- 19. .Netソリューション:Windowsサービスのためのステップを構築する
- 20. C++のより良いエラーを報告するためのメソッドのオーバーロード。より良い方法がありますか?
- 21. Djangoエラー報告 - どのユーザーがエラーを引き起こしたかを知る方法?
- 22. スプレッドシートをウェブデータベースに接続するための最良の方法
- 23. モデルからエラー情報を戻す最も良い方法は?
- 24. ユーザーの銀行口座情報を保存する最も良い方法は?
- 25. プログラムでWindowsエラー報告(AppCrash)ダイアログを無効にする
- 26. PHP Webサービスを作成する最良の方法
- 27. Googleの資格情報を使用してユーザーがあなたのアプリにアクセスできるようにするための最良の方法
- 28. ユーザーがセキュリティとスピードのために所属するレポートグループを反復する最良の方法
- 29. .netでWebアプリケーションのためのシングルトンソケットを作るための最良の方法は?
- 30. .NET MVCでURLにフィルターを追加する最良の方法