如何向桌面应用程序发送推送通知

3
我有一个应用程序,驻留在系统托盘中。与标准的“轮询”方法(每 X 秒检查服务器是否有更新)不同,我希望使用推送通知系统。因此,当有更新时,所有客户端都会收到消息,并执行其任务。Web 服务器将是运行 Debian、Apache 和 PHP 的环境。
我的目标平台是 .NET 3.5,那么该如何实现呢?由于观察者设计模式需要 .NET 4.0 或更高版本,因此无法使用该模式。

4
“观察者设计模式”无法使用(因为它是针对.NET 4.0或更高版本设计的)。我很讨厌使用.NET 1.1,因为“单例模式”是在.NET 2.0之后才设计的。 - ta.speot.is
6
“观察者模式将无法工作(由于它使用的是.NET 4.0或更高版本)。 ” - dzendras
1个回答

2

你需要创建两个接口及其派生的具体类。你的服务将创建IObservable、IObserver和ApplicationErrorState。

你的客户端将创建一个类,并从IObserver派生ErrorMessageSync。

这是我的示例,它显示错误并使用.NET 3.5创建。

提示:你也可以使用委托

/// 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图


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接