2010-01-05 5 views
1

Каков наилучший способ возврата табличной структуры из веб-службы ASP.NET (2.0)?Возврат табличной структуры из веб-службы

Он должен взаимодействовать с Java, Iphone App или любой другой платформой.

EDIT: Взаимодействующий я имею в виду, что другая технология/клиент должна иметь возможность потреблять его или десериализовать его на свои родные типы, а не анализировать ответ XML.

+0

Меня также будет интересовать что-то вроде этого. Тем не менее, я считаю, что все, что связано с JSON или сериализацией XML, не соответствует этой точке. Аннотирование стиля объекта слишком многословно. Вы в основном повторяете заголовки столбцов в каждой строке. Я хочу что-то табличное, чтобы я мог передавать тысячи одинаковых записей как можно компактнее. –

ответ

1

Вы можете достичь совместимости с помощью SOAP/XML. Вот ссылка на article, которая может быть вам полезна.

1

Web Services по определению являются совместимыми из-за того, что, помимо прочего, они полагаются на XML для передачи данных между гетерогенными системами.

При этом необходимо определить, как табличная структура сериализуется в XML.

Существует несколько способов сделать это, каждый из них имеет свои плюсы и минусы.

  • Реализовать интерфейс ISerializable
  • Украсить класс с [XmlSerializer] атрибуты для управления классом сериализации в XML.
  • и т.д., и т.д., и т.д ...

Просто начните определить, как вы хотите, чтобы выразить свои табличные данные, а затем работать в том, как реализовать.

+0

Вы имеете в виду, что любая табличная структура, которую я отправляю через веб-службу, будет легко потребляться любым клиентом (java, php).Как насчет возврата DataTable или DataSet (.NET)? Я не думаю, что все так просто. –

0

В зависимости от вашего предпочтения. Я хотел бы предложить:

, если XML-то что-то вроде:

<table> 
    <row1> 
    <col1>data</col1> 
    <col2>data</col2> 
    </row1> 
    <row2> 
    <col1>data</col1> 
    <col2>data</col2> 
    </row2> 
</table> 

если JSON, то что-то вроде:

[{"col1":"data","col2":"data"},{"col1":"data","col2":"data"}] 

В любом случае, это лучше не делать это вручную. Используйте библиотеку для сериализации данных.

+0

Я буду использовать ASP.NET, и я могу сериализовать DataTable для структуры, аналогичной предложенной выше. Я не уверен в десериализации. –

+0

Я уверен, что ASP.NET имеет библиотеки для сериализации XML и JSON. Я был бы очень удивлен, если Microsoft все еще живет в темные века. (подумайте об этом, я знаю, что у них есть библиотеки для обработки XML, потому что в настоящее время они подают в суд патентный тролль за это) – slebetman

0

Вы можете вернуть что-то вроде значения Fielded Text. Там, к сожалению, нет библиотеки, которая бы легко могла создавать такие текстовые объекты в .Net, но реализовать ее сама по себе довольно просто, и ее можно однозначно проанализировать с помощью любой другой платформы.

Кстати, вам действительно нужно использовать веб-службу на основе SOAP? Возможно, это просто текстовый документ, возвращаемый при вызове заданного URL-адреса. Посмотрите на веб-службу RESTful.

Смежные вопросы