Получать только новые объекты из dataservice клиенту (канал?)

#c# #wcf #wcf-data-services

#c# #wcf #wcf-data-services

Вопрос:

Я только что начал работать с WCF Data Services, поэтому прошу прощения, если в моих словах нет смысла.

Я создаю онлайн-регистратор событий / средство просмотра. Для этого я создал ado.net модель данных объектов и служба данных wcf. Это работает нормально, и я могу добавлять события в свой сервис.

Сейчас я работаю над созданием клиента Windows для просмотра событий, и мне было интересно, есть ли какой-либо подход к регулярному обновлению клиента новыми событиями. Поскольку будет большое количество событий, кажется неэффективным загружать все события для каждого обновления.

Чтобы предоставить больше информации, я могу упомянуть следующее:
1. Пользовательский класс TraceListener в программном обеспечении A отправляет события в службу данных.
2. Поскольку службы передачи данных wcf могут выступать в качестве источника данных, я решил использовать этот подход вместо обычного веб-сервиса.
3. В настоящее время я создаю клиент в WPF.

Я с нетерпением жду любых ответов на этот вопрос.

Спасибо, Стефан

Ответ №1:

Службы обработки данных WCF предоставляют ваши данные с использованием протокола OData. Это означает, что ваш клиент может легко запросить вашу службу данных с помощью LINQ.

Для каждого запроса, который клиент отправляет на сервер, сохраняйте временную метку. В следующем запросе запрашивайте только те события, которые произошли после метки времени, используя запрос LINQ на прокси-сервере, сгенерированном на основе ссылки на службу.

 var newEvents = myServiceRef.Events.Where(x => x.Timestamp >= lastTimestamp);
  

Смотрите также http://www.odata.org / подробнее о протоколе OData и http://msdn.microsoft.com/en-us/library/ee622463.aspx подробнее об использовании LINQ для доступа к службам передачи данных WCF.

Комментарии:

1. Привет, спасибо за ваш ответ. Добавлять ли новые события вручную в отдельную коллекцию на клиенте или есть какой-то способ добавить новый запрос к исходному?