возврат данных через веб-сервис c # - PullRequest
0 голосов
/ 16 октября 2008

я знаю, что это старый вопрос, но это мой сценарий

Это в C # 2.0

Есть приложение для Windows, которое имеет элемент управления просмотра данных. Это необходимо заполнить, сделав вызов веб-службы.

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

Ответы [ 4 ]

1 голос
/ 16 октября 2008

Напишите собственный класс (MyDataItem), в котором будут храниться ваши данные. Затем вы можете передать List<MyDataItem> или некоторую коллекцию MyDataItem и связать ее с вашей сеткой.

Вам потребуется реализовать пейджинг, фильтрацию и т. Д.

1 голос
/ 16 октября 2008

Нет способа получить поведение привязки, которое вы автоматически получаете с DataSet, если вы проходите через слой данных Web Services. Вам придется создать свой собственный прокси-класс, который поддерживает все функции привязки данных и сохраняет их через вызовы веб-службы. В зависимости от среды вашего приложения может потребоваться пакетное изменение, чтобы избежать лишних обращений к веб-службам.

1 голос
/ 16 октября 2008

Я мог бы взглянуть на ADO.NET Data Services , он же Astoria, в VS2008 SP1.

Это позволяет вам предоставлять данные через веб-сервис (WCF предоставляет ATOM, IIRC) - но вам не нужно знать все эти детали: инструмент беспокоится об этом: вы просто получаете обычный IQueryable источники в контексте данных (не совсем то же самое, что контекст данных LINQ-to-SQL, но та же концепция).

Здесь хорошо то, что LINQ-запрос (например, фильтрация (Где), разбиение на страницы (Пропуск / Возврат) и т. Д.) Может составляться все путем от клиента, до веб-сервис и вплоть до хранилища данных с поддержкой LINQ (LINQ-to-SQL или Entity Framework и т. д.). Таким образом, по каналу поступают только правильные данные: если вы запросите первые 10 строк (из 20000), упорядоченные по имени, то вы получите: 10 строк из базы данных; 10 рядов по проводу, без помех.

0 голосов
/ 16 октября 2008

fallen888 имеет право - вам нужно будет создать класс коллекции List или DataTable, заполнить его выводом из потока данных веб-сервиса и самостоятельно обрабатывать страницы и фильтрацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...