如何为我的WCF服务编写回调通道?

时间:2011-11-16 07:05:55

标签: winforms wcf

我目前正在开发一个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");

1 个答案:

答案 0 :(得分:0)

使用wcf的发布订阅框架进行管理以实现所需的方案。

相关问题