我有一个驻留在系统托盘中的应用程序,而不是标准的“轮询”方法(以X秒间隔检查服务器以获取更新)我希望使用推送通知系统。因此,当有更新时,所有客户端都将收到一条消息,他们将完成任务。 Web服务器将是Apache和PHP的Debian。
我的目标平台是.NET 3.5,那么如何做呢? Observer Design Pattern
不起作用(因为它是.NET 4.0或更高版本)。
答案 0 :(得分:2)
您必须创建两个接口及其派生的具体类。您的服务将创建IObservable,IObserver和ApplicationErrorState。
您的客户端将创建类,并将从IObserver派生ErrorMessageSync。
以下是我显示错误的示例,并使用.Net 3.5创建。
<强> P.S。您也可以使用代理
/// 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。