Как * вы * используете XML в мире веб-приложений? - PullRequest
4 голосов
/ 14 декабря 2008

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

Мне нужно как можно больше реальных примеров использования XML, чтобы:

  • Полное понимание того, что использует XML, когда хост А обращается к хосту B
    Я, конечно, могу себе представить, как должен / может использоваться XML. Реальность может быть совсем другой.
  • выполняет тесты на реальных, не гипотетических данных
    Как XML работает по сравнению с технологией X на наборах реальных данных, имеет такое же значение, как сравнение XML с технологией X на произвольный набор данных
  • выявить и измерить любые схемы использования XML, например. только элементы, элементы плюс некоторые атрибуты или минимальные элементы и использование тяжелых атрибутов

Вопрос

Как вы используете XML в мире веб-приложений?

Когда узел B возвращает данные со структурой XML на узел A по HTTP, что возвращается? Это может быть сервер, возвращающий данные в среде AJAX, или один сервер, сопоставляющий данные с одного или нескольких других серверов.

Идеальные ответы будут включать:

  • Реальный пример XML в ответе HTTP
  • URL-адрес, при необходимости, для запроса вышеуказанного
  • Объяснение, если необходимо, того, что представляют данные
  • Объяснение (если не очевидно) того, почему такие сообщения обмениваются (например, для выполнения запроса пользователя; хост X возвращает отчет о состоянии работоспособности на хост Y)

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

Ваше собственное мнение об использовании XML в вашем примере также было бы замечательно (например, мы реализовали XML-структурированные ответы из-за требования X / Person Y, хотя я думал, что JSON был бы лучше, потому что ...; или мы для этого используйте XML, потому что [это действительно веская причина], и это просто лучший выбор для работы).

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

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

Что могло бы принести большую пользу, так это впечатление о том, как XML используется в настоящее время при обмене данными между узлами HTTP, независимо от того, является ли текущее использование правильным или подходящим. Примеры случаев неправильного применения XML так же ценны, как и случаи, когда XML применяется правильно.

Ответы [ 10 ]

3 голосов
/ 14 декабря 2008

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

Однако, если клиент и сервер реализованы одной и той же командой, то нет смысла переводить их туда и обратно в удобочитаемой форме, и почти всегда есть более быстрая, более дешевая (с точки зрения обработки) альтернатива. , даже если технологии клиента и сервера разные.

Сосредоточив свои замечания на протоколах передачи, еще до того, как XML пришел в «плохие» старые времена клиент / сервер, когда пропускная способность и вычислительная мощность были драгоценными, архитекторам было бы необходимо разработать протокол (обычно двоичный) с единственная работа эффективности и скорости, где размер пакета будет минимизирован. Очевидным ограничением является то, что рукопожатие было очень конкретным, а бинарный диалект был непонятным, если он не был опубликован. Положительным моментом было то, что он был чрезвычайно эффективным и мог быть высоко оптимизирован для применения под рукой. Очень часто бинарные форматы публиковались (вы видели старую спецификацию Excel BIFF - не протокол, а пример публикации бинарного формата).

XML в HTTP, т. Е. SOAP, сломал это. Обоснование было очень вменяемым, иметь общепринятый протокол для рукопожатия, своего рода компьютер Esperanto , так что вы могли бы разделить архитектуру вашего клиента и сервера и решать их темпы разработки и внутренние компоненты совершенно отдельно. Более того, вы можете защитить себя от возможных требований клиентов, пообещав, что переключение клиентов - это всего лишь вопрос внедрения нового. Более того, позвольте любому Joe с парсером XML использовать ваш API. Все это великолепно и привело к появлению очень хорошо размеченных архитектур - что совершенно неплохо.

Таким образом, в значительной степени сила этого предложения была проявлена ​​и есть явные преимущества, однако я думаю, что а) это требование часто завышено и б) протоколы XML часто реализуются очень небрежно и с недостаточным вниманием к стоимость обработки они подразумевают. Более того, изначально здравомыслящие рассуждения уступили место случаям экстремистской религии (держу пари, что за меня проголосовали), и я видел код, передающий XML между вызовами функций в одних и тех же классах , используя именно обоснование будущего и аргументы функционального разделения, что явно помешано.

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

Появление JSON свидетельствует о том, что в XML-фургоне было слишком много уровней. JSON - это попытка сократить структурные элементы при сохранении общности и тем самым получить преимущества меньших пакетов. Протоколы, такие как AMF от Adobe, обычно намного более компактны и почти полностью бинарны.

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

Представьте, что ваш средний клиент / серверный запрос был 1/10 от размера и текст не разбирался ни на одном конце, но вы сохранили общность интерфейса. Я не знаю ни одного разработчика, который бы этого не принял.

2 голосов
/ 14 декабря 2008

Мой совет - пропустить XML и взглянуть на что-то более простое, например, JSON. XML предоставляет только две вещи:

1) «стандартизированный» способ сериализации сложных данных 2) способ проверки (через DTD) правильности вышеуказанной сериализации

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

Если данные, которые вы передаете, могут быть представлены в виде простой строки, массива или ассоциативного массива (или хеша), XML излишне.

2 голосов
/ 14 декабря 2008

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

1 голос
/ 14 декабря 2008

Я приведу два примера потребностей, которые мы удовлетворили с помощью XML:

  1. Нам нужно было передать данные, собранные со многих серверов UNIX, о распределении файлов, отправив данные на сервер Windows для анализа. Детали и резюме графически отображаются через веб-приложение.

  2. Нам нужно было хранить несколько форматов ответов формы в одном репозитории для последующего поиска и «воспроизведения». Формы создаются, хранятся, ищутся и воспроизводятся в веб-приложении.

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

1 голос
/ 14 декабря 2008

Я использовал XML в веб-приложениях несколько раз. Все время это происходило через веб-сервисы SOAP. Это потому, что я программирую в Visual Studio, которая имеет отличную встроенную поддержку веб-служб SOAP. Он автоматически генерирует оболочки ООП, что позволяет легко использовать его как из AJAX (клиентская часть), так и .NET (серверная часть для межсерверных коммуникаций).

Я не думаю, что могу публиковать какие-либо примеры, но тогда я не думаю, что это все равно сильно изменится.

1 голос
/ 14 декабря 2008

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

1 голос
/ 14 декабря 2008

К сожалению, я не могу предоставить вам реальные данные по деловым / юридическим причинам.

По моему опыту, xml был стандартным форматом для более чем 90% серверной части, между которыми я работал в последние годы, исключительно из-за преобладания инструментов для работы с ним и того факта, что большинство разработчиков имеют некоторый опыт работы с ним.

Что-то вроде буферов протокола google может оказаться более эффективным для многих задач, но удобство и безопасность формата, который большинство программистов с опытом «предприятия» уже знают, как использовать, трудно обосновать.

Если вы продаете услугу внешнему миру, гораздо проще продать, если вы предлагаете интерфейс на основе xml, CIO читает «веб-сервис на основе xml», CIO говорит: «Хорошо, моя команда знает, что ...»

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

1 голос
/ 14 декабря 2008

Я предлагаю вам также изучить JSON, который является альтернативой XML и широко используется для его компактности.

0 голосов
/ 14 декабря 2008

Как и многие другие, в какой-то момент я экспериментировал с SOAP и XMLRPC, но обнаружил, что поддержка браузера настолько слаба, что мне нужно было «откатиться» на специальный анализатор, когда MSXML прервал ввод данных. Ранние версии моего приложения netMail раньше использовали XML, а MSIE просто не хватало скорости для анализа XML. У меня все еще есть реализация XML, если вы действительно заинтересованы в ее просмотре.

На ум приходят два реальных примера сразу как те, с которыми мне приходилось сталкиваться в последние несколько месяцев:

При работе с XML-интерфейсом упорядочения Ingram-Micro сообщения зависят от порядка всех элементов и очень чувствительны к проблемам кодирования. Просто не было возможности использовать стандартные инструменты обработки XML для взаимодействия с ним. Специальное решение было бы лучше, потому что тогда не было бы вопроса о том, в каком порядке поступали элементы. Обмены выполняются как push, так и pull методами; с нашим сервером POSTING данных в конечную точку IM-XML, а их сервер POSTing данных обратно.

XML-каналы MRIS состоят из строки, подобной , а затем из набора данных, ограниченных ~. Ленты имеют размер в несколько мегабайт, и простой подход, ориентированный на чтение и разделение строк вместо «XML», позволяет выполнять работу с меньшими затратами памяти и быстрее. Данные «XML» периодически загружаются через HTTP GET.

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

Чаще всего я нахожу, что я использую необработанные выражения javascript (часто называемые JSON), когда задействован браузер (просто потому, что eval «как можно быстрее»), а S-выражения иначе.

Извините, я не могу помочь вам с хорошими примерами XML в Интернете; Я просто не думаю, что они есть.

0 голосов
/ 14 декабря 2008

Eucaris - это веб-приложение для получения данных о регистрации автомобиля. Серверная часть использует данные XML типа XSD для сообщений с запросами и ответами.

...