2010-01-21 95 views
0

我目前正在我的工作地點創建公告系統。這個系統的作用將是取代所有用戶的電子郵件,因爲人們濫用它並且通常濫用該設施。該系統將包括:WPF C#客戶端/服務器公告系統

門戶網站:將允許工作人員輸入任何重要公告(這將通過廣告限制)。

的SQL Server 2K5 DB:將持有的公告與工作人員的記錄一起,如果他們讀過的公告等

前端:創建在WPF & C#這已接近完成,它會向用戶顯示通告。

網頁:客戶將聯繫每隔一段時間,它會返回一個XML文件,客戶端閱讀。

但是我的老闆現在已經轉移了球門柱和希望的公告一旦被寫入到數據庫中,而不是等待客戶端上的聯繫網頁顯示給用戶。

所以現在我有點不確定如何去做這件事。我有一個想法,我會創建一個小型服務器應用程序來監控新公告,然後聯繫客戶,讓他們通過網站獲取他們需要的信息。但我只是想看看是否有更好或更有效的方法來做到這一點,或者如果別人有更合適的想法或建議。

+0

傷心的是,你的同事不能使用電子郵件:( – 2010-01-21 15:35:15

回答

1

嗯,你可以嘗試使用WCF雙工Web服務(http://msdn.microsoft.com/en-us/library/ms731064.aspx),以滿足信息需求是一個有趣的項目 - 一種方式

它應該是這樣的 - 一個WCF服務託管中心的應用服務器上,與DB會談。所有客戶端都使用雙向雙向綁定來訂閱此WCF服務。然後,他們可以有效地收聽任何新消息的通知 - 您可以通過args獲得一個很好的回調,以便向他們發送敬酒信息。

應該是一個有效的方法來做到這一點。

僅供參考雙工綁定您提供在客戶端上生成的兩個接口,一個是服務,一個回調類:

public interface ICalculatorDuplex 
{ 
    [OperationContract(IsOneWay = true)] 
    void Clear(); 
    [OperationContract(IsOneWay = true)] 
    void AddTo(double n); 
    [OperationContract(IsOneWay = true)] 
    void SubtractFrom(double n); 
    [OperationContract(IsOneWay = true)] 
    void MultiplyBy(double n); 
    [OperationContract(IsOneWay = true)] 
    void DivideBy(double n); 
} 


public interface ICalculatorDuplexCallback 
{ 
    [OperationContract(IsOneWay = true)] 
    void Equals(double result); 
    [OperationContract(IsOneWay = true)] 
    void Equation(string eqn); 
} 

所以我設想是這樣的:

public interface IAnnouncementServiceDuplex 
{ 
    [OperationContract(IsOneWay = true)] 
    void Subscribe(int userId); 
} 
public interface ICalculatorDuplexCallback 
{ 
    [OperationContract(IsOneWay = true)] 
    void SendNotification(AnnouncementData data); 
} 
+0

只是想知道,例如說我想以這種方式發回XML數據,這將有可能嗎? – manemawanna 2010-01-21 15:06:06

+0

好吧,當然 - 如圖所示,你可以定義你的回調簽名然而你喜歡(無論你想要什麼類型的參數像),所以也許對象會更合適 - 但如果你需要發送XML,你也可以這樣做(作爲一個字符串)。 但是,請記住這些Web服務(取決於您的綁定/端點配置)是否已通過XML格式發送SOAP。 – Bobby 2010-01-21 15:30:23

+0

非常感謝我會去調查更多,需要了解如何維護連接,因爲服務器理想地需要知道誰的客戶端正在運行,因此它知道聯繫誰。 – manemawanna 2010-01-21 15:41:53