Как передать данные (SQL или LINQ) из дуплексной службы WCF в клиент Silverlight - PullRequest
1 голос
/ 20 апреля 2011

Я сделал простое приложение чата, чтобы узнать что-то новое, и сейчас я хочу добавить список пользователей, которые в данный момент вошли в чат.Итак, я сделал это:

        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 голосов
/ 20 апреля 2011

Вы можете сделать это, используя pollingDuplexHttpBinding Проверьте это

...