возврат данных через webservice c #

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

Это в C # 2.0

У вас есть приложение Windows, которое имеет элемент управления datagridview. Это нужно заполнить, выполнив вызов webservice.

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

c#,web-services,

0

Ответов: 4


1

Я мог бы взглянуть на службы данных ADO.NET , например Astoria, в VS2008 SP1.

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

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


1

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

Пейджинг, фильтрация и т. Д. Должны быть реализованы вами.


1

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


0

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

C #, веб-сервисы,
Похожие вопросы