Каковы преимущества и недостатки использования XML-схем? - PullRequest
5 голосов
/ 26 сентября 2008

Мы используем тип данных XML в Microsoft SQL Server 2005 для проекта. Некоторые члены команды и я полагаем, что мы также должны использовать XSD, в то время как члены другого лагеря считают, что мы должны хранить XML-файлы ad hoc и не рассматривать их как «типы».

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

Мы используем .NET 3.5 / C #, и наши таблицы разработаны с соответствующими типами данных. Мой аргумент заключается в том, что мы уже «ориентированы на типы» в своем мышлении, почему нарушаем этот подход, потому что это XML. Исходная проблема возникла из-за отсутствия типов текстовых файлов. Отсутствие подхода «типов» оставляет нас открытыми для той же проблемы.

Может быть, мое понимание преимуществ XML-схем неверно. Итак, каковы преимущества и недостатки использования XML-схем?

Ответы [ 7 ]

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

Ну, как сказано в других постах и ​​в этом вопросе, XSD гарантирует, что вы используете правильный тип в нужном месте вашего XML, и что вам придется дважды подумать, прежде чем менять его структуру.

Но XSD действительно слишком многословен, если я могу так сказать. И иногда действительно сложно описать сложную структуру с условным содержанием.

Надеюсь, XSD - не единственный способ проверки XML, гораздо более простой подход заключается в использовании RelaxNG и особенно его компактном синтаксисе, который действительно более читабелен, чем вы когда-либо могли себе представить с помощью XSD. .

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

К сожалению, даже авторская часть XSD (W3C) понимает, что XSD - довольно плохая технология. Тем не менее, это не обязательно плохо. Одним из основных преимуществ C # является то, что он статически типизирован. Статическая печать XML-документов дает им те же преимущества. Вероятно, здесь лучше всего провести обратный инжиниринг ваших классов для создания схемы с использованием атрибутов сериализации XML. Когда вы сделаете это, C # создаст специальное устройство чтения данных для вашего XML-файла, что значительно повысит производительность.

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

Так что, в конечном счете, как и многие другие вещи, их достаточно для повышения производительности, чтобы оправдать затраты во время разработки. Или достаточно сильное желание использовать статически типизированные системы, чтобы оправдать затраты на написание XSD.

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

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

Хранение хранилища XML без XSD сродни (на мой взгляд) наличию базы данных, в которой все типы объявлены как VARCHAR (n). Вам все равно, какой тип ввода вы получаете, вам просто нужен ввод.

XSD гарантируют, что ваши XML имеют тип ввода, который вы ожидаете. Они дают структуру вашей модели, именно то, что вы ищете.

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

XSD - не единственная доступная XML-схема. Вместо этого используйте http://relaxng.org/. RelaxNG позволяет вам выразить схему в XML, не требуя изучения еще одного «языка» данных, как это делает XSD.

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

Если у вас нет схемы, вы в конечном итоге переопределите все проверки самостоятельно (или вообще не будете проверять и вылетать при неверном вводе). Парсер / валидаторы XSD выполняют всю эту работу за вас и оптимизируются и отлаживаются экспертами в своей области. Зачем вам переделывать всю эту работу самостоятельно?

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

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

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

0 голосов
/ 15 апреля 2011

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

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