Прекомпилированные XSLT, ReBase и NGEN - PullRequest
2 голосов
/ 19 ноября 2010

Расширенный вопрос производительности здесь. Вот мой сценарий:

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

Я реализовал оптимизацию использования XslCompiledTransform и кэширования его между обновлениями базы данных (каждые 30 минут). Я хочу повысить производительность, предварительно скомпилировав XSLT в DLL с помощью xsltc.exe. Это должно устранить все вызовы динамических методов, которые создает XslCompiledTransform.

Итак, у меня есть отдельный сервер, записывающий XSLT в файлы и запускающий их через xsltc.exe. Занимает около 20 минут, но это нормально. Затем я помещаю библиотеки DLL на каждый веб-сервер. Теперь я могу просто заставить веб-сервер динамически загружать библиотеки DLL по мере необходимости. Вот код, который я использую для загрузки сборки в XslCompiledTransform:

byte[] bytes = File.ReadAllBytes(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "XsltDlls\\" + fileName + ".dll"));
Assembly assembly = Assembly.Load(bytes);
Type type = assembly.GetType(fileName);
XslCompiledTransform compiledTransform = new XslCompiledTransform();
compiledTransform.Load(type);

Должен ли я ReBase.exe библиотеки DLL в каталоге и / или NGEN.exe их? ReBase занимает около 5 минут, а NGEN.exe с / queue - около 10 минут, в течение которых процессор сильно ударился, что может повлиять на функцию обслуживания трафика веб-сервера. Учитывая то, как я загружаю сборку, читая байты из сборки, будет ли ссылка на родное изображение NGEN или JIT все равно будет запущен?

Любое / все понимание этого будет ЦЕННО оценено!

Малкольм

1 Ответ

0 голосов
/ 11 апреля 2012

Wow!

Assembly.Load (строка) разрешает разрешать загрузку собственных изображений.Однако я подозреваю, что перегрузка, которая принимает массив байтов, может не использовать его.Я не могу найти ссылку на это, но, возможно, некоторые эксперименты с использованием Просмотр журнала привязки сборки в тестовом проекте могут оказаться в любом случае.

Вы также должны убедиться, что ваши сборкистрого названы по имени собственного образа, который будет использоваться.

Что касается перебазирования, этот блог предполагает, что он не требуется в ОС Vista или более поздних версий.

...