XML против текста для не-веб-приложений - PullRequest
1 голос
/ 24 сентября 2008

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

команда дата / время проекта
в 2008/09/23 08:00:00 PROJ1
изменить 2008/09/23 09:00:00 PROJ2
вне 2008/09/23 12:00:00 PROJ2
в 2008/09/23 01:00:00 PROJ3
вне 2008/09/23 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 в этом случае?

Ответы [ 11 ]

2 голосов
/ 24 сентября 2008

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

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

Недостатки, как я их вижу:

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

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

2 голосов
/ 24 сентября 2008

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

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

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

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

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

1 голос
/ 24 сентября 2008

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

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

Есть несколько опций, кроме XML, которые вы можете использовать. В блоге Джеффа Угловая скобка об этом немного говорится.

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

1 голос
/ 24 сентября 2008

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

0 голосов
/ 24 сентября 2008

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

0 голосов
/ 24 сентября 2008

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

0 голосов
/ 24 сентября 2008

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

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

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

0 голосов
/ 24 сентября 2008

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

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

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

0 голосов
/ 24 сентября 2008

Это текущий файл журнала?

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

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

0 голосов
/ 24 сентября 2008

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

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

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