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

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

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

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

Вопрос

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

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

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

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

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

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

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

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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
4
0
1 923
10

Ответы 10

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

Я сравниваю XML с буферами JSON, YAML и Google Protocol. В настоящее время я просто пытаюсь собрать данные об использовании XML.

Jon Cram 14.12.2008 03:07

Я работаю над продуктом, известным как Semotus HipLink, и мы широко используем JSON для вызовов AJAX.

fasih.rana 15.12.2008 22:21

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

Напротив, пока лучший ответ.

Jon Cram 14.12.2008 03:26

Если XML сложен, что проще? ASN.1 + BER?

bortzmeyer 15.12.2008 12:11

Предположим, у меня есть четыре поля данных, если они отправляются как xml, как будет выглядеть код синтаксического анализа? сложный обход дерева, чтобы получить пару значений. JSON для этого намного лучше.

hasen 24.12.2008 08:58

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

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

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

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

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

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

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

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

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

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

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

Jon Cram 14.12.2008 03:28

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

user10892 14.12.2008 06:44

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

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

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

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

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

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

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

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

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

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

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

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

Каналы XML MRIS состоят из строки типа <Data Separator = "~">, а затем группы данных с разделителями ~. Каналы имеют размер во много мегабайт, и простое использование подхода строчно-ориентированного чтения + разделения вместо XML позволяет выполнять работу с меньшим объемом памяти и быстрее. Данные "XML" периодически загружаются через HTTP GET.

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

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

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

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

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

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

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

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

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

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

Другие вопросы по теме