3

システム トレイに常駐するアプリケーションがあり、標準の「ポーリング」方法 (更新のために X 秒間隔でサーバーをチェックする) の代わりに、プッシュ通知システムを使用したいと考えています。したがって、更新があると、すべてのクライアントがメッセージを受け取り、タスクを実行します。Web サーバーは、Apache と PHP を使用した Debian です。

私のターゲット プラットフォームは .NET 3.5 です。はObserver Design Pattern機能しません (.NET 4.0 以降であるため)。

4

1 に答える 1

2

2 つのインターフェースとその派生具象クラスを作成する必要があります。サービスは、IObservable、IObserver、および ApplicationErrorState を作成します。

クライアントはクラスを作成し、IObserver から ErrorMessageSync を派生させます。

エラーを表示し、.Net 3.5 で作成された私の例を次に示します。

PSデリゲートも使用できます

/// It will store observers and will push the message
public interface IErrorObservable
{
  void Attach(IErrorObserver observer);

  void Detach(IErrorObserver observer);

  void Notify();
}

public interface IErrorObserver
{
  void Update(string message);
}

///It is concrete class to push message
public sealed class ApplicationErrorState : IErrorObservable
{
  private List<IErrorObserver> _observers = new List<IErrorObserver>();
 
  ///constructor
  public ApplicationErrorState()
  {
  }

  public void Attach(IErrorObserver observer)
  {
     _observers.Add(observer);
  }

  public void Detach(IErrorObserver observer)
  {
     _observers.Remove(observer);
  }

  public void Notify()
  {
     foreach (IErrorObserver observer in _observers)
     {
        observer.Update(/*Logic*/);
     }
  }

  public void SetError()
  {
     Notify();
  }


  ///COncrete subject 
  private class ErrorMessageSync : IErrorObserver
  {
     private MyClass _parent;
     
     public ErrorMessageSync(MyClass parent)
     {
        _parent = parent;
     }

     public void Update(string message)
     {
            //This work will be done
     }
  }

これは、このアプローチの UML です。

このUML図を確認してください

于 2012-05-12T00:30:44.413 に答える