2011-11-12 27 views
1

我目前正在開發一個C#Windows窗體應用程序,我打算讓它與服務器交互。服務器將從我開發的移動應用程序接收發布信息,並且每當收到發佈信息時,我的Windows窗體應用程序都應該被通知並給我一個通知。現在我開始爲它創建一個WCF服務。我可以爲我的WCF服務提供哪些操作合同?

這是我的意思的示例場景,

E.g.我的移動應用程序將消息發送到我的服務器。一旦我的服務器收到消息,我的Windows窗體應用程序應該顯示一個新的通知,顯示收到的消息的內容。

因此對於服務的操作合同,我應該採用什麼類型的方法才能接收發布?

例如

[OperationContract] 
bool receivePosting(int n); 

回答

2

我不像你想溝通的方向非常明確:

  • 你的「服務器」需要通知新的工作職位的Winforms應用程序已經儲存?

或:

  • 您的Winforms應用程序要求的 「服務器」 關於新貼子?

我把「服務器」放在引號中,因爲在WCF世界裏,這是一個用於特定角色的術語。

假設第一個選項,你需要這樣做:

  • 您的Winforms應用程序需要是WCF服務器 - 例如它需要定義服務合同,運營合同和數據合同 - 並且執行那些在這種情況下的WCF 客戶端;只要接收/存儲一個帖子,那麼你會調用WCF服務在您的Winforms應用程序發送通知(所以說真的,在此設置中,你的角色被保留 - 在Winforms應用程序是WCF服務器)

至於操作合同 - 您的Winforms應用程序需要了解新的發佈內容?只是收到新帖子的事實?發佈的全部內容,或只是其中的一部分?

無論如何,您需要在您的WCF服務上定義一個「發佈服務器」可以調用的方法,並將所有相關信息傳遞給Winforms WCF服務器 - 您不希望進行兩個或更多調用只是一個通知。

所以,你的服務合同可能是:

[ServiceContract] 
public interface IPostingService 
{ 
    [OperationContract] 
    void NotifyAboutPosting(Posting post); 
} 

和你Posting類將是數據的合同:

[DataContract] 
public class Posting 
{ 
    [DataMember] 
    public int ID { get; set; } 
    [DataMember] 
    public string Description { get; set; } 
    [DataMember] 
    public DateTime PostingTimestamp { get; set; } 
} 

無論您需要兩方之間發送 - 在您的數據定義它合同這是你的服務電話的參數

+0

嗨,謝謝你的回覆。我上面編輯了我的主要帖子。我想要的是,當我的服務器收到消息/事件的新發布時,我需要捕獲該發佈並將其發送到我的winforms應用程序,以通知我,我收到了一條包含其中信息的新發布。 – Thomas

+0

編輯:使用datacontract模式需要導入什麼? – Thomas

+0

@Thomas:'DataContract'位於'System.Runtime.Serialization'命名空間 –

相關問題