---
title: ".NET Framework, System.Xml, MSXML и &quot;чудеса производительности&quot;"
description: "Например, мы используем XSLT-трансформацию, как шаблонизатор в веб-приложении ASP.NET. Первое что пр..."
author: "tarakanoffth"
published: "2011-08-02T03:35:05+00:00"
modified: "2011-08-08T22:39:11+00:00"
locale: "ru"
canonical_url: "https://yvision.kz/post/net-framework-system-xml-msxml-i-quot-chudesa-proizvoditelnosti-quot-181487"
markdown_url: "https://yvision.kz/post/net-framework-system-xml-msxml-i-quot-chudesa-proizvoditelnosti-quot-181487/markdown"
site_name: "Yvision.kz"
---

# .NET Framework, System.Xml, MSXML и &quot;чудеса производительности&quot;

> Например, мы используем XSLT-трансформацию, как шаблонизатор в веб-приложении ASP.NET. Первое что пр...

Например, мы используем XSLT-трансформацию, как шаблонизатор в веб-приложении ASP.NET.

Первое что приходит в голову — это пространство имен [System.Xml и System.Xml.Xsl](http://msdn.microsoft.com/ru-ru/library/gg145036.aspx), которые предоставляют универсальные классы для работы с XML и XSLT.

А теперь второе. Что не сразу приходит в голову.

Это подключение [ActiveX-компонента MSXML (6.0)](http://msdn.microsoft.com/ru-ru/library/ms760399.aspx). Который тоже предоставляет универсальные классы для работы с XML и XSLT. Собственно, сам файл библиотеки компонента (msxml6.dll) копируется в каталог с веб-приложением, а затем на него создается ссылка и уже с компонентом можно спокойно работать из веб-приложения.

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

На самом деле, всё совершенно наоборот.

Второй способ оказывается производительнее первого. То есть, подключение неуправляемого кода из библиотеки MSXML для XSLT-трансформации намного производительнее, чем использование управляемого кода из пространства имен System.Xml библиотеки .NET.

Время XSLT-трансформации в веб-приложении ASP.NET:

> System.Xml (.NET) — Time taken: 0,0228 sec (44) req/sec MSXML (MSXML 6.0) — Time taken: 0,0025 sec (396) req/sec

---

Source: [https://yvision.kz/post/net-framework-system-xml-msxml-i-quot-chudesa-proizvoditelnosti-quot-181487](https://yvision.kz/post/net-framework-system-xml-msxml-i-quot-chudesa-proizvoditelnosti-quot-181487)