如何将数据从WCF主机发送到连接的客户端?

时间:2011-02-25 04:45:02

标签: wcf service client host

我想将数据从WCF主机(非服务代理)发送到与服务相连的客户端。 我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:3)

您需要创建 Duplex 服务。有关详细信息,请参阅此文章:http://msdn.microsoft.com/en-us/library/ms731064.aspx

以下是一个例子:

[ServiceContract(
    SessionMode=SessionMode.Required,
    CallbackContract=typeof(INotificationServiceCallback))]
public interface INotificationService
{
    [OperationContract(IsOneWay = true)]
    void Connect();
}

public interface INotificationServiceCallback
{
    [OperationContract(IsOneWay = true)]
    void SendNotification(string notification);
}

public class NotificationService : INotificationService
{
    public static List<INotificationServiceCallback> Clients = 
        new List<INotificationServiceCallback>();

    public void Connect()
    {
        Clients.Add(
            OperationContext.Current.GetCallbackChannel<ICalculatorDuplexCallback>());
    }
}

public class Notifier
{
    void HandleReceivedNotification(string notification)
    {
        foreach (var client in NotificationService.Clients)
        {
            client.SendNotification(notification);
        }
    }
}