ちょうど...いくつかのプラチナをしています。WCFを使用して異なるオブジェクトを掲示/通知しますか?
構造:
AクライアントWPFアプリケーションとサーバーWPFアプリケーション、それらの両方のセルフWCFサービスをホストします。
サーバーWPFは、クライアントのWCFへのチャネルを作成し、常にメッセージを送信します:
クライアントWPFは、私が何をしたいのListBox
が含まれているビューが含まれています。
クライアントのWCFは、それを購読しているどのクラスにもメッセージと掲示板を受け取ります。 (あるいは、私はそれを観察するクラスを言うでしょう)。
この場合、クライアントのビューはメッセージを受け取り、リストボックスに入れます。
問題:
だから、問題は、私が見るにはWCFを観察してみましょうはどうすればよいのですか?または、WCFから通知を受け取りますか?
クライアントのWCFは、ServiceHost myHost = new ServiceHost(typeof(MyClient))を使用して作成されます。
WCFにクライアントのビューへの参照があり、通知を行う方法を教えてください。
Throught:
はどういうわけか、内部ビューの参照(この...意味がありません)
Observerパターンを持っているクライアントのWCFをハードコーディング? staticのSubjectクラスを作成して、クライアントのWCFインターフェイスを実装します。 クライアントのルーターでは、すべてのメソッドがSubjectクラスを呼び出します。ビューは、クライアントのWCFインタフェースも実装し、Subjectクラスに接続します。など、どこでも、すべての呼び出しかもしれないオプション2と同様3.Everythingが、代わりにルータの
public class ClientServiceObserver : IClient { static List<IClient> _observers = new List<IClient>(); public static void Attach(IClient client) { _observers.Add(client); } public static void Detach(IClient client) { _observers.Remove(client); } public void SendCallbackMessage(string message) { foreach (IClient client in _observers) { client.SendCallbackMessage(message); } } }
:最後に件名クラスするルータは、このような何か
....すべてのビューの呼び出しよくWCFにサブジェクトクラスに通知があっただけで更新があれば、Viewは通知を受け取ってサーバーへのチャネルを作成して自分自身のデータを取得します.....
上記のオプションは本当に良いとは言えません。 2それがもうObserver Patternsなのかどうかはわかりません....
私はそれを行うための最良の方法は何でしょうか?
ありがとう、私はそれらのフレームワークを学ぶための時間だと思います:) –
フレームワークの理解は必要ありません。 EventAggregatorコンポーネントの使い方を見てください – Chandermani