вторник, 9 февраля 2010 г.

.Net Framework 4.0 beta 2

Небольшой пост про знакомство с новым фреймворком.
Бета 2 оказалась довольно юзабельной, потому RunServer теперь поддерживает и ее. Из явных преимуществ я увидел более корректную работу с ThreadPool - меньше спаунится потоков, меньше переключений; также заметно меньше стали потреблять потоки Server GC. Новые возможности C# 4.0 и в целом CLR 4.0 я не трогал - нам важнее совместимость с .Net Framework 2 и стабильность, чем украшательства кода и сомнительные бонусы вроде Parallels Extensions.
Немного расстроило, что в VS 2008 нельзя выбрать новый Target Framework. Надо пользоваться VS 2010 или собирать проект через MSBuild, в командной строке. Для своих целей я нашел достаточно простое решение этого вопроса - указание версии фреймворка через app.config и сборка с таргетингом обычного 2.0 фреймворка:


<?xml version="1.0"?>
<configuration>
<startup>
<supportedRuntime version="v4.0.21006"/>
<supportedRuntime version="v2.0.50727"/>
</startup>
</configuration>

С таким конфигом .exe файл сначала попробует запуститься с .Net 4.0 Runtime, а если его нет - с 2.0. Файлы получаюся немного больше по размеру, чем при "честной" 4.0 сборке, но в производительности я отличий не заметил.