XML против текста для приложений, не связанных с веб-разработкой

StackOverflow https://stackoverflow.com/questions/126979

  •  02-07-2019
  •  | 
  •  

Вопрос

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

команда дата время проект
в 23.09.2008 08:00:00 PROJ1
изменение 23.09.2008 09:00:00 PROJ2
выход 23.09.2008 12:00:00 PROJ2
в 23.09.2008 01:00:00 PROJ3
вышел 23.09.2008 05:00:00 PROJ3

XML будет выглядеть примерно так:

<timelog> <timecommand cmd=in date=2008/09/23 time=8:00:00 proj=PROJ1/>
...
<timecommand cmd=out date=2008/09/23 time=5:00:00 proj=PROJ3/>
</timelog>

Некоторые из первоначальных преимуществ текстовой версии, которые я вижу, заключаются в том, что она легко читается и анализируется с помощью регулярных выражений.Каковы преимущества использования XML в этом случае?

Это было полезно?

Решение

Нет абсолютно ничего плохого в использовании текстового форматирования данных.Это был стандарт де-факто на протяжении десятилетий.Большие огромные финансовые системы мэйнфреймов все еще используйте его сегодня.Преимущества заключаются в том, что его легко производить, легко потреблять и он невероятно легкий.А как насчет файлов журналов?Знаете ли вы какую-нибудь производственную платформу, которая не делает создать свой файл журнала в текстовом формате с разделителями (веб, приложение, сервер базы данных)?

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

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

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

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

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

На ум приходит пара преимуществ:

  • Легче анализировать в других приложениях
  • Легче понять содержание документа с первого взгляда
  • Облегчает ввод данных в управленческую панель управления.
  • Доставляет удовольствие руководству без особых усилий для вас

Минусы, как я их вижу:

  • Означает изменение существующего кода, возможно, без необходимости.
  • Возможно небольшое снижение производительности, в зависимости от того, как вы создаете документы по сравнению с тем, как вы создаете текущие документы.
  • Это XML ради XML, а это чертовски глупо.

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

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

Если вы используете XML, то в некотором смысле данные будут более «переносимыми».По сути, в большинстве сред у вас есть анализаторы ваших данных, поэтому написать инструмент для анализа данных может быть проще.Кроме того, если он в формате XML, вы можете написать XSLT, чтобы преобразовать его в другие форматы, чтобы его было легче читать.

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

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

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

Его легко анализировать с помощью регулярных выражений, xml и xsl.

По правде говоря, в использовании XML нет никакого «преимущества», если только вы не отправляете данные в другую систему.

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

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

Это постоянный файл журнала?

Как вы собираетесь написать, чтобы создать действительный документ?Или вы собираетесь прочитать его, добавить новую запись и каждый раз записывать ее?

Файлы журналов являются идеальными кандидатами для хорошо структурированных строк простого текста, к которым вы просто добавляете.

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

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

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

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

Спросите себя, для чего используются файлы?Их нужно менять?Если да, то кто платит и кто заложил это в бюджет?

В некоторых случаях я люблю XML, а в других ненавижу его!

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

Если вы разрабатываете .NET (особенно .NET 3.5 с LINQ to XML), вы будете писать меньше кода для чтения/записи XML, чем если бы вы использовали только простой текстовый файл.Кроме того, XML просто облегчает любому человеку чтение файла и точное понимание того, что в нем содержится и для чего он нужен.И не беспокойтесь о том, что XML займет немного больше места на диске: дисковое пространство стоит дешево.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top