Смешивание.Net 2.0 с.Net 4.0 на сайте ASP.NET
Вот мой сценарий:
В настоящее время я обновляю свой веб-сайт с.Net Framework 3.5 до 4.0. Все мои сборки с моим кодом, на которых я изменил целевой фреймворк, скомпилированы нормально, и сайт работает.
Вот моя проблема / вопрос. Я использую Crystal Reports 2010, предоставленный SAP. Их библиотека называется "Crystal Reports для.Net Framework 4.0", но эта библиотека на самом деле нацелена на среду выполнения 2.0 (и что делает меня еще более ворчливым, так это то, что клиентские элементы управления имеют 1.1 зависимости... серьезно).
Я буду использовать 3.5 (2.0 CLR) и 4.0 (CLR) вместе, потому что у меня должны быть Crystal Reports, но я хочу понять эти проблемы:
- Как влияет на производительность, если таковая имеется, включая сборку 2.0 на сайте ASP.NET 4.0 (стоит ли это загружать дополнительные издержки)?
- Я что-то полностью пропустил и есть ли актуальные сборки CR2010 4.0, предназначенные для 4.0?
- Если бы я изолировал свой класс-оболочку от основной библиотеки бизнес-логики, 2.0 был бы загружен / использован только тогда, когда он был вызван (или сайт загрузил бы сборку, когда веб-сайт был загружен в память, что привело к загрузке их обоих) тем не мение)? Частично это мое незнание того, как разные CLR загружаются / взаимодействуют друг с другом.
1 ответ
Начиная с.net 4 и выпуска DLR, .net устанавливает несколько версий для одновременного запуска. Когда v4 получает сборку pre v4, он делегирует выполнение в среду pre v4 (все платформы pre v4 полностью обратно совместимы)
- Я предполагаю, что будет падение производительности, однако это должно быть достаточно тривиально, чтобы игнорировать.
- Без понятия:)
- Компоненты каркаса в основном загружаются по требованию, и они будут загружаться только по мере необходимости (некоторые, когда сборка загружается, больше, когда JIT компилирует различные сегменты кода). Короче говоря, большая часть кода v2 будет загружена, скомпилирована (в нативный) и выполнена только тогда, когда она вызывается в вашем коде.