2

サービス+外部WPFUIであるアプリケーション(学校プロジェクト)を開発しています。UIからサービスへの通信にWCFを使用することを計画しました。とにかく、いくつかのイベントが発生した場合、サービスはUIに通知する必要があり、私はそれを行う簡単な方法を探しています。

もちろん、基本的なIPCならどれでも機能しますが、パイプ、ミューテックス、イベントなどを台無しにしたくないのです。

ネイティブのwin32アプリではWM_USERメッセージを使用していましたが、私が理解している限り、それはWPFによってネイティブにサポートされていません。

誰かがいくつかの可能な/最良の解決策を指摘できますか?

ありがとう

4

4 に答える 4

3

WCFコールバック操作を使用して、クライアントに通知できます。

于 2012-09-07T10:09:07.803 に答える
2

私が使用したアプローチの1つは、キューとして機能する共有データベーステーブルです。UIアプリは、最後に表示されたレコード(インデックスまたはタイムスタンプ)を追跡し、新しいイベントを定期的にポーリングします。同時実行の問題を防ぐために、クエリと更新をトランザクションにバインドします。データベースの利点の1つは、デバッグとクラッシュに役立つイベントを永続化することです。System.Data.SqliteRavenDB、およびSql ServerCompactEditionが適切な選択です。

もう1つの方法は、TCP/IPを介したパブリッシュ/サブスクライブメッセージシステムとしてZeroMQを使用することです。ZeroMQはセットアップが非常に簡単で、大量のメッセージを処理できます。

データベースとZeroMQの両方のアプローチにより、UIアプリをサービスホスト上に配置する必要はなく、リモートマシン上に配置できます。

また、イベントの受け渡しにデータベースとZeroMQのどちらを使用しているかに関係なく、イベントをクラスとして定義し、文字列にシリアル化することをお勧めします。ServiceStackの優れた使いやすいJSONシリアライザーをお勧めします。

于 2012-09-06T19:07:42.007 に答える
1

サービスとアプリケーションは別々のマシンで実行されていますか?アプリの実行中にサービスが通知を送信した場合、アプリが次に実行されたときに通知を受け取りますか?もしそうなら、あなたの最良のオプションはメッセージキューです。

于 2012-09-06T20:48:30.543 に答える
0

EventAggregator通知を送信するために試すことができます(購読+公開メソッド)

リンク: http: //msdn.microsoft.com/en-us/library/ff921122%28v=pandp.20%29.aspx

于 2012-09-06T18:37:29.223 に答える