我目前正在开发一个C#Windows窗体应用程序,我打算让它与服务器进行交互。服务器将从我开发的移动应用程序接收发布,并且每当收到发布时,我的Windows窗体应用程序应该得到通知并给我通知。为此,我打算为它使用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应用程序调用任何东西。
其次,如何编程我的回调通道以达到我想要的结果?
谢谢!
如果主方法中需要代码,则如下:
Uri baseAddress = new Uri("http://localhost:8888/PostingService");
ServiceHost selfHost = new ServiceHost(typeof(PostingService), baseAddress);
try
{
selfHost.AddServiceEndpoint(typeof(IPostingService), new WSHttpBinding(), "Posting");
答案 0 :(得分:0)
使用wcf的发布订阅框架进行管理以实现所需的方案。