3
我有一個駐留在系統托盤中的應用程序,而不是標準的「輪詢」方法(以X秒間隔檢查服務器以獲取更新)我希望使用推送通知系統。所以當有更新時,所有客戶都會收到一條消息,他們會完成任務。該網絡服務器將Debian與Apache和PHP。如何將推送通知發送到桌面應用程序
我的目標平臺是.NET 3.5,那麼這將如何完成? Observer Design Pattern
不會工作(由於它是.NET 4.0或更高版本)。
我有一個駐留在系統托盤中的應用程序,而不是標準的「輪詢」方法(以X秒間隔檢查服務器以獲取更新)我希望使用推送通知系統。所以當有更新時,所有客戶都會收到一條消息,他們會完成任務。該網絡服務器將Debian與Apache和PHP。如何將推送通知發送到桌面應用程序
我的目標平臺是.NET 3.5,那麼這將如何完成? Observer Design Pattern
不會工作(由於它是.NET 4.0或更高版本)。
您必須創建兩個接口及其派生的具體類。您的服務將創建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。
*了'觀測器設計Pattern'將無法正常工作(因爲它是.NET 4.0或更高)。*我討厭它,當我有.NET 1.1的工作,因爲'Singleton'模式直到.NET 2.0才被設計爲 –
「觀察者設計模式將不起作用(因爲它是.NET 4.0或更高版本)」。 - 傑作LOL – dzendras