我目前正在開發一個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");