Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье сравнивается LINQ to XML со следующими технологиями XML: XmlReaderXSLT, MSXML и XmlLite. Эти сведения помогут вам решить, какие технологии следует использовать.
Сравнение LINQ to XML с объектной моделью документа (DOM) см. в разделе LINQ to XML и DOM.
LINQ to XML и XmlReader
XmlReader — это быстрый парсер, работающий только на чтение вперёд и не выполняющий кэширование.
LINQ to XML реализован поверх XmlReaderи тесно интегрирован. Однако вы также можете использовать XmlReader напрямую.
Например, предположим, что вы создаете веб-службу, которая будет анализировать сотни XML-документов в секунду, а документы имеют ту же структуру, что означает, что необходимо только написать одну реализацию кода для синтаксического анализа XML. В этом случае вы, вероятно, хотите использовать XmlReader напрямую.
В отличие от этого, если вы создаете систему, которая анализирует множество небольших XML-документов, и каждая из них отличается, вы хотите воспользоваться преимуществами повышения производительности, которые предоставляет LINQ to XML.
LINQ to XML и XSLT
LINQ to XML и XSLT предоставляют широкие возможности преобразования XML-документов. XSLT — это декларативный подход на основе правил. Опытные программисты XSLT пишут XSLT в стиле функционального программирования, который подчеркивает подход без сохранения состояния. Преобразования можно записывать с помощью чистых функций, которые реализуются без побочных эффектов. Этот подход на основе правил или функциональный подход незнаком для многих разработчиков, и может быть трудным и трудоемким для обучения.
XSLT может быть продуктивной системой, которая дает высокопроизводительные приложения. Например, некоторые крупные веб-компании используют XSLT в качестве способа создания HTML-кода из XML, извлеченного из различных типов хранилищ данных. Управляемый механизм XSLT компилирует XSLT в код среды CLR и выполняется еще лучше в некоторых сценариях, чем собственный обработчик XSLT.
Однако XSLT не использует преимущества C# и знаний Visual Basic, которые имеют многие разработчики. Это требует от разработчиков написания кода на другом и сложном языке программирования. Использование двух не интегрированных систем разработки, таких как C# (или Visual Basic) и XSLT, приводит к более сложной разработке и обслуживанию программных систем.
После того как вы станете опытным в использовании выражений запросов LINQ to XML, преобразования LINQ to XML являются мощными технологиями, которые легко использовать. В основном вы формируете XML-документ с помощью функционального построения, извлечения данных из различных источников, динамического создания XElement объектов и сборки всего в новое XML-дерево. Преобразование может создать совершенно новый документ. Создание преобразований в LINQ to XML является относительно простым и интуитивно понятным, а результирующий код доступен для чтения. Это снижает затраты на разработку и обслуживание.
LINQ to XML не предназначен для замены XSLT. XSLT по-прежнему является инструментом для сложных и документоцентрических преобразований XML, особенно если структура документа не определена.
XSLT имеет преимущество быть стандартом всемирного веб-консорциума (W3C). Если у вас есть требование использовать только технологии, которые являются стандартами, XSLT может быть более подходящим.
XSLT — ЭТО XML, поэтому его можно программным способом управлять.
LINQ to XML и MSXML
MSXML — это технология на основе COM для обработки XML, которая входит в состав Microsoft Windows. MSXML предоставляет собственную реализацию DOM с поддержкой XPath и XSLT. Он также содержит парсер SAX2, который не использует кэширование и работает на основе событий.
MSXML хорошо работает, защищается по умолчанию в большинстве сценариев и может быть доступен в браузере для обработки XML на стороне клиента в приложениях в стиле AJAX. MSXML можно использовать на любом языке программирования, поддерживающем COM, включая C++, JavaScript и Visual Basic 6.0.
MSXML не рекомендуется использовать в управляемом коде на основе среды CLR.
LINQ to XML и XmlLite
XmlLite — это некэширующий, однонаправленный, вытягивающий парсер. Разработчики в основном используют XmlLite с C++. Разработчикам не рекомендуется использовать XmlLite с управляемым кодом.
Основное преимущество XmlLite заключается в том, что это упрощенный, быстрый синтаксический анализ XML, безопасный в большинстве сценариев. Его область поверхности угрозы невелика. Если необходимо проанализировать ненадежные документы и защититься от атак, таких как отказ в обслуживании или раскрытие данных, XmlLite может быть хорошим вариантом.
XmlLite не интегрирован с Language-Integrated query (LINQ). Это не обеспечивает улучшения производительности программиста, которые являются мотивирующей силой для LINQ.