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


Сравнение LINQ to XML с другими технологиями XML

Обновлен: November 2007

В этом разделе LINQ to XML сравнивается со следующими технологиями XML: XmlReader, XSLT, 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 обеспечивает высокую производительность, по умолчанию обеспечивает безопасность в большинстве сценариев и может использоваться в обозревателе Internet Explorer для выполнения обработки XML на стороне клиента в приложениях AJAX. Возможность применения технологии MSXML предусмотрена в любом языке программирования, поддерживающем COM, включая C++, JavaScript и Visual Basic 6.0.

Не рекомендуется использовать MSXML в управляемом коде, основанном на среде CLR.

Сравнение LINQ to XML с XmlLite

XmlLite представляет собой запрашивающее средство синтаксического анализа с последовательным доступом, без кэширования. В основном разработчики используют XmlLite с языком C++. Не рекомендуется использовать XmlLite с управляемым кодом.

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

XmlLite не поддерживает интеграцию с LINQ (Language-Integrated Query). Применение этого инструмента, в отличие от технологии LINQ, не приводит к повышению производительности программиста, что является одним из побудительных мотивов к использованию этой технологии.

См. также

Другие ресурсы

Приступая к работе (LINQ to XML)