Должен ли я вернуть строго типизированный набор данных из веб-службы? - PullRequest
7 голосов
/ 22 сентября 2008

Должен ли я предоставить строго типизированный набор данных из веб-сервиса и связать его непосредственно в клиенте? или есть более разумные способы для веб-сервисов asmx? Я делаю операции CRUD (создание, чтение, обновление, удаление).

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

Есть ли лучший способ?

Должен ли я, возможно, преобразовывать объекты и использовать объекты через веб-сервис? Делать преобразования повсеместно для передачи объектов, возможно, так же утомительно?

Ответы [ 6 ]

4 голосов
/ 22 сентября 2008

Это зависит от ваших требований к взаимодействию. Хотя вполне возможно обрабатывать XML-файлы DataSet практически из любой среды, которая может оказаться громоздкой. Если вы не взаимодействуете, я определенно рекомендую маршрут набранного набора данных, потому что он невероятно прост в использовании из C # и «просто работает».

3 голосов
/ 22 сентября 2008

Я бы сказал, выбрав объекты, DataSet может быть немного грязно. Объекты могут быть намного чище и, конечно, отлажены.

Будьте осторожны при работе с абстрактными типами, хотя их может быть немного сложно сериализовать, если у вас есть коллекции, основанные на абстрактном классе / интерфейсе. У меня были проблемы с этим в прошлом, однако, я нашел решение .

2 голосов
/ 22 сентября 2008

Я имел большой успех с DataSets (сервер использует и возвращает строго типизированный набор данных, в то время как клиент использует его как стандартный набор данных). Как предупреждает Томер, у меня нет никаких проблем с совместимостью.

Что касается обновления, отправка всего набора данных - плохая идея. В объектах DataSet и DataTable существует метод GetChanges (), который возвращает все правки с момента вызова AcceptChanges (). Это должно помочь вам снизить сетевой трафик.

2 голосов
/ 22 сентября 2008

Обратите внимание, что набор Dataset относится к .NET. Если вы хотите, чтобы ваш API-интерфейс был совместимым, вам следует придерживаться элементарных типов данных и конструкций (в противном случае ситуация может оказаться обременительной для разработчиков, не являющихся .NET).

Тогда веб-сервисы не предназначены для передачи больших объектов за одну поездку. Если ваш набор данных содержит более нескольких сотен килобайт, вы, скорее всего, получите тайм-ауты HTTP на стороне клиента или на стороне сервера (с учетом настроек по умолчанию).

Для операций CRUD я бы просто предложил выставлять каждую операцию напрямую через WS.

0 голосов
/ 22 сентября 2008

Я согласен с Джоанн ... придерживайтесь объектов и специальных методов для типов операций, которые вы хотите раскрыть.

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