Поделиться через


LINQ to XML и другие технологии XML

В этой статье сравнивается 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 не интегрирован с языковым интегрированным запросом (LINQ). Это не дает улучшений производительности программиста, которые являются мотивирующими силой за LINQ.

См. также