如何将数据(SQL或LINQ)从WCF Duplex Service推送到Silverlight客户端

时间:2011-04-20 15:30:08

标签: wcf silverlight duplex

我已经制作了简单的聊天应用程序来学习一些新东西,我现在要做的是添加当前登录聊天的用户列表。 所以我这样做了:

        public ObservableCollection<User> GetUserList()
    {
        ObservableCollection<User> users = new ObservableCollection<User>();

        IEnumerable<User> userEnu;
        userEnu = from u in _clientDic
                  select new User
                  {
                      UserName = u.Key
                  };

        foreach (User user in userEnu)
        {
            users.Add(user);
        }

        IEnumerable<IDuplexClient> clients;
        clients = from p in _clientDic
                  select p.Value;

        foreach (IDuplexClient item in clients)
        {
            item.DisplayUserList(users);
        }
        return users;
    }

还有一个DataConctract,它同时响应用户。 无论如何。此方法获取字典中存在的所有用户并将其放入ObservableCollection。

我想要做的是将数据从此集合推送到用户,如果它发生更改(用户登录或注销)。

到目前为止,我只能通过调用

手动从服务器中提取数据
_client.GetUserListAsync()

手动。通过silverlight应用程序中的按钮按钮。 但这不是我使用双工连接,强制用户(或客户端应用程序)进行服务器定期调用的原因,它会检查是否有新数据。我希望服务器将任何新数据推送到客户端。

    [ServiceContract]
public interface IDuplexClient
{
    [OperationContract(IsOneWay = true)]
    void DiplayMessage(string message);

    [OperationContract(IsOneWay = true)]
    void DisplayUserList(ObservableCollection<User> userColl);
}

这是服务合同。老实说,我真的不知道这是否相关,但我发布以防万一。

1 个答案:

答案 0 :(得分:0)

您可以使用pollingDuplexHttpBinding Check this

执行此操作