Являются ли наборы данных, возвращаемые из кросс-платформенных веб-сервисов, совместимыми? - PullRequest
0 голосов
/ 07 января 2011

Я создаю веб-сервис в Visual Studio 2010. Если он возвращает DataSet (строго типизированный), может ли кто-то с другой платформы получить доступ к этой конечной точке и использовать XML по мере необходимости, или это будет выглядеть для них как мусор?

Какие у меня есть альтернативы?

РЕДАКТИРОВАТЬ: что, если я вернул DataTable? Я читал, что Microsoft почему-то рекомендовал в пользу DataSet

1 Ответ

0 голосов
/ 07 января 2011

Да, кросс-платформенные кодеры все еще смогут читать XML, но это не лучший вариант. Скотт Хансельман говорит: :

Возвращение DataSets из WebServices является порождением сатаны и представляет все истинное зло в мире

ВотXML, созданный для простого набора данных, содержащего 1 таблицу с 2 столбцами и двумя записями:

<?xml version="1.0" standalone="yes"?>
<NewDataSet>
  <Table1>
    <Column1>hello</Column1>
    <Column2>world</Column2>
  </Table1>
  <Table1>
    <Column1>hello</Column1>
    <Column2>greg</Column2>
  </Table1>
</NewDataSet>

Вашим кроссплатформенным кодировщикам потребуется проанализировать XML, что может стать очень громоздким, особенно если данные сложные.

Наборы данных на самом деле предназначены для представления базы данных - в хорошо разработанном, многоуровневом приложении они должны использоваться только на уровне доступа к данным.Затем они должны быть преобразованы в строго типизированные объекты домена / модели, которые ничего не знают о базах данных.

Гораздо лучший вариант - использовать пользовательские объекты.Вот пример того, как это сделать, на Ryan Farleys blog .

Основные преимущества использования пользовательских объектов: 1. Они полностью совместимы.2. Они сильно напечатаны.3. Потребитель не несет ответственности за анализ / десериализацию XML.4. Разделение проблем между хранением данных и потребителем.

Примечание: Следует отметить, что веб-сервисы устаревают.Если вы создаете новый веб-сервис, вам действительно следует использовать WCF.Это требует некоторого обучения, но это гораздо более богатая и гибкая платформа.

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