2011-11-16 61 views
0

我目前正在開發一個C#Windows窗體應用程序,我打算讓它與服務器交互。服務器將從我開發的移動應用程序接收發布信息,並且每當收到發佈信息時,我的Windows窗體應用程序都應該被通知並給我一個通知。爲了做到這一點,我打算爲它使用WCF雙工服務。如何爲我的WCF服務編寫回調通道?

E.g.我的移動應用程序發送一條信息到我的服務器。一旦我的服務器讀取並接收到新的發佈,服務應該發送一條消息到我的winform應用程序,以提醒我發送了一條消息。而Winform應用程序的UI應該根據我想更新的內容進行更新。 (例如,添加新的面板)

對於我的服務,這是我迄今所做的,

[ServiceContract(SessionMode=SessionMode.Required, 
       CallbackContract = typeof(IPostingServiceCallBack))] 
public interface IPostingService 
{ 

} 

public interface IPostingServiceCallBack 
{ 
    [OperationContract(IsOneWay = true)] 
    void NotifyAboutPosting(Posting posting); 
} 

[DataContract] 
public class Posting 
{ 
    [DataMember] 
    public int alertId { get; set; } 

    [DataMember] 
    public string Title { get; set; } 

    [DataMember] 
    public string Message { get; set; } 
} 

[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)] 
public class PostingService : IPostingService 
{ 
    public void NotifyAboutPosting(Posting posting) 
    { 

    } 
} 

,這一切都是從winform應用程序一個單獨的項目除了文件中完成的,因爲我需要舉辦服務器本身的服務。我有2個接口,據我所知會有2個通道,1個用於連接,1個用於回調。

我的問題是,我是否需要爲我的IPostingService接口編寫任何程序?因爲我只需要服務來回復我發佈的新帖子,我不認爲我需要從winform應用中調用任何東西。其次,我如何編程我的回調通道以達到我想要的結果?

謝謝!

如果有必要在main方法的代碼,它是如下:

Uri baseAddress = new Uri("http://localhost:8888/PostingService"); 

ServiceHost selfHost = new ServiceHost(typeof(PostingService), baseAddress); 

try 
{ 
    selfHost.AddServiceEndpoint(typeof(IPostingService), new WSHttpBinding(), "Posting"); 

回答

0

託管使用WCF發佈訂閱框架以實現期望的場景。