Saxon 9.x против XQSharp против AltovaXML для .net - PullRequest
6 голосов
/ 24 июня 2011

Мне нужен инструмент процессора XSLT 2.0 для использования в .net 4.0. Я обнаружил, что XSLT 2.0 не поддерживается .net. Альтернативами являются сторонние движки, такие как Saxon 9.x или XQSharp. Мне нужна поддержка XSLT 2.0 для коммерческой производственной среды, где производительность очень важна. Вопросы:

  1. Saxon 9.x или XQSharp, какой мне выбрать?
  2. Каковы "за" и "против" двух продуктов?
  3. Есть ли другие альтернативы?
  4. А как насчет AltovaXML по сравнению с Saxon 9.x или XQSharp?

Ответы [ 3 ]

7 голосов
/ 25 июля 2011

В последние недели я использовал XQSharp, Saxon 9.x и AltovaXml, чтобы переписать мою программу с использованием движка Microsoft XSLT1. Вот мой опыт:

AltovaXML

  • Это бесплатно (но бесплатная версия ограничена и не поставляется с источником).
  • Сайт в порядке, так что вы можете найти то, что вам нужно
  • API прост в настройке
  • Имеет API для разных языков
  • Используется COM, другими словами, требуется взаимодействие с собственным кодом
  • Это самый медленный из двигателей, которые я использовал

XQSharp

  • .NET дружественных
  • Бросает хорошие исключения с хорошим описанием
  • Быстрее, чем AltovaXml
  • Это не бесплатно, и источник не предоставляется

саксонский 9.x

  • Не дружественный сайт, сложно найти то, что вы ищете
  • Создано Michael Kay (редактор спецификации W3C языка XSLT 2.0)
  • Самый быстрый из двигателей XSLT2, которые я использовал
  • Существует ограниченная версия с открытым исходным кодом, со схемой и потоковой передачей идут с несвободными версиями
  • На основе Java, но поставляется с упакованным портом IKVM для .NET

Для моего конкретного сравнения производительности перевода XML и XSLT (XSLT1):

  1. 0,02 с Microsoft XSLT1 engine
  2. 0,45 с саксонский 9.x
  3. 0,60 с XQSharp (с OptimizationLevel.None)
  4. 0,90 с XQSharp (настройка по умолчанию)
  5. 1,20 с AltovaXml
4 голосов
/ 28 июня 2011

Я разработчик XQSharp, но постараюсь дать непредвзятый ответ.

И XQSharp, и Saxon - хорошие продукты. Каждый из них имеет высокое соответствие стандарту и оба стремятся к отличной производительности. Мой лучший совет - скачивать пробные версии и тестировать с теми преобразованиями, которые вы ожидаете выполнить. Нам было бы интересно узнать, как вы поживаете.

Если вы работаете в среде .NET, я ожидаю, что XQSharp будет иметь несколько преимуществ. Во-первых, он разработан в .NET, тогда как Saxon разработан в Java и использует IKVM для работы в .NET. Возможно, вы захотите сравнить выпуски Saxon для Java и .NET, чтобы определить, накладывает ли это накладные расходы на производительность.

XQSharp предназначен для хорошей интеграции с классами из пространств имен .NET Framework System.Xml и System.Xml.XPath. Например, реализация использует XPathNavigators. Это знакомство может оказаться полезным.

XQSharp реализует и расширяет функцию XslCompiledTransform для вызова .NET из XSLT, что может оказаться полезным.

См. Этот список реализаций .

1 голос
/ 11 октября 2011

Не нашел ответа на приведенный выше ответ (который дал мне несколько полезных советов), поэтому я выложу его здесь: AltovaXML изменил свою политику в отношении AltovaXML.dll. Вы можете получить версию бесплатно, но в ней отсутствуют некоторые функции. Так что вам лучше покупать лицензию. Также кажется, что у Altova есть некоторые проблемы с памятью, поскольку программа, кажется, продолжает работать даже после того, как вы закрыли соединение.

У Саксона странная политика "попробуй, прежде чем купить". Под этим я подразумеваю, что это довольно странно, что вы проходите тридцатидневный тест, но дата начала / окончания меняется примерно на 10 дней (подробнее на сайте саксонского языка). Он также добавляет текст в ваши преобразованные файлы. Мне это не нравится, так как я хочу, чтобы мои преобразованные файлы - даже тестируемые - были правильными, чтобы я мог видеть, что можно отправлять файлы в наши системы. Я надеюсь, что это изменится в более поздних версиях.

XQSharp - Я не пробовал это, и поэтому я не могу много сказать об этом. Когда я обновляю свой сервис, использующий XSLT2.0, я опробую эту библиотеку / помощника.

...