2012-05-11 248 views
3

我有一個駐留在系統托盤中的應用程序,而不是標準的「輪詢」方法(以X秒間隔檢查服務器以獲取更新)我希望使用推送通知系統。所以當有更新時,所有客戶都會收到一條消息,他們會完成任務。該網絡服務器將Debian與Apache和PHP。如何將推送通知發送到桌面應用程序

我的目標平臺是.NET 3.5,那麼這將如何完成? Observer Design Pattern不會工作(由於它是.NET 4.0或更高版本)。

+4

*了'觀測器設計Pattern'將無法正常工作(因爲它是.NET 4.0或更高)。*我討厭它,當我有.NET 1.1的工作,因爲'Singleton'模式直到.NET 2.0才被設計爲 –

+6

「觀察者設計模式將不起作用(因爲它是.NET 4.0或更高版本)」。 - 傑作LOL – dzendras

回答

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。

Check this UML diagram

相關問題