【问题标题】:How to push data (SQL or LINQ), from WCF Duplex Service to Silverlight client如何将数据(SQL 或 LINQ)从 WCF 双工服务推送到 Silverlight 客户端
【发布时间】:2011-04-20 15:30:08
【问题描述】:

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

        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;
    }

还有对应User的DataConctract。 反正。此方法获取字典中存在的所有用户并将其放入 ObservableCollection。

我想要做的是,如果数据发生变化(用户登录或注销),则将此集合中的数据推送给用户。

到目前为止,我只能通过调用手动从服务器中提取数据

_client.GetUserListAsync()

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

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

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

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

【问题讨论】:

    标签: wcf silverlight duplex


    【解决方案1】:

    您可以使用 pollingDuplexHttpBinding Check this 来做到这一点

    【讨论】:

    • 我知道。这就是我制作示例聊天应用程序的方式。用户之间发送消息没有问题。这里真正的问题是如何使服务器从 Collection 推送数据(无论是使用 LINQ 从 DataBase 还是从 Dictionary 中提取)。不幸的是,我无法以与在用户之间发送普通短信相同的方式从集合中发送数据。我不想做的是收集服务器检查是否有任何更改,如果有,请将这些更改推送到所有感兴趣的客户端(相同的房间、频道、游戏等)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多