1-го февраля в бельгийском городе Mechelen (20 км. от Брюсселя) была проведена юбилейная (1-го февраля группе исполнился ровно год) встреча Visual Studio User Group, главным и единственным докладчиком на которой был Microsoft General Manager Scott Guthrie.
Скотт - это человек, который непосредственно принимал участие в проектировании и разработке ASP.NET, вложил огромный вклад в развитие .NET в целом и CLR в частности. В настоящее время он руководит командами разработки CLR, ASP.NET, WinForms, Visual Studio. Кроме того, он замечательный докладчик, которого можно слушать, слушать и слушать...
Некоторые самые интересные факты я постараюсь описать тут (никогда не был на встречах UserGroup даже в России, а на бельгийскую занесло).
Итак, что же такое "Orcas"? "Orcas" - это следующее поколение Visual Studio и .NET Framework 3.5.
Нововведений в "Оркасе" очень много.
- "Оркас" будет поддерживать работу в проектами предыдущих версий .NET Framework (будут поддерживаться версии 2.0, 3.0 и 3.5). Компилироваться код, понятное дело, тоже будет под под указанную версию. В дальнейшем такая обратная совместимость предполагается для всех будущих версий Visual Studio.
- Новый HTML-дизайнер. Скорость его работы значительно улучшена, переключение из HTML в Design и обратно происходит мгновенно. Кроме того появился новый режим работы, в котором одна половина экрана отображает HTML-код, а вторая - Design View. Причем синхронизируются они в реальном времени в обе стороны, даже выделив что-то в одном из представлений мы можем наблюдать это выделение в другом.
- Добавлена поддержка CSS. Теперь можно видеть CSS-классы в стилях, привязывать их к элементам визуально. Что немаловажно, всегда можно понять, почему элемент выглядит так, а не иначе, даже с учетом вложенности элементов в другие элементы со стилями и т.д.
- Разработчик может работать над одним проектом вместе с дизайнером. Visual Studio и Expression Web имеют одинаковый дизайнер кода и умеют работать с одними и теми же исходными файлами и проектами. Больше не нужно импортировать в проект дизай, сделанный дизайнерами, потом импортировать изменения и т.д.
- Поддержка JavaScript!!! Об этом можно было только мечтать. Это не только подсветка синтаксиса, но и автокомплит. Visual Stusio самостоятельно определит тип объекта и покажет его свойства и методы. Кроме того, хотя JS - язык бестиповый, появится возможность специфицировать типы и проверять их соответствие в процессе компиляции. Для этого нужно просто делать XML-комментарии вроде тех, что мы делаем в C#, указывая в этом комментарии типы, скажем, параметров функций. При разработке это может здорово помочь, а при релизной сборке JavaScript будет оптимизироваться для минимального размера и комментарии будут автоматически исключены. Помимо всего этого автокомплит будет "знать" о структуре типов ASP.NET Ajax и будет подсказывать даже с собственными типами, в том числе и унаследованных, имплементирующих интерфейсы и т.д (!).
- Полная поддержка синтаксиса LINQ, который будет частью .NET Framework 3.5 и будет подключаться по умолчанию при создании проекта версии 3.5
О LINQ отдельно.
LINQ - это, как сказал Скотт, переход от парадигмы "как" к парадигме "что". Иными словами, разработчика должно мало занимать то, как именно будут получены данные, как работать с источником данных... Разработчик должен просто сказать, что ему надо.
Источники данных могут быть абсолютно разные, могут "джойниться" друг с другом (например, одна часть берется из XML-файла, другая - из БД).
В своих примерах Скотт показывал, как сделать запрос к Веб-сервису (!). Отметил, что ну нужно беспокоиться о параметрах, количестве вызовов для получения требуемого результата и т.д. - это работа LINQ'а. Нужно только сказать, что тебе требуется.
Кстати, о количестве запросов.
LINQ будет поддерживать параллельные операции (!!!). Пример для простоты понимания: если имеется коллекция, над каждым элементом которой нужно что-то сделать, то циклом foreach это будет перебираться один-за-одним и даже если на машине 2 или 4 процессора, это не поможет увеличить быстродействие. LINQ-выражение же, напротив, задействует все имеющиеся мощности, дождется завершения всех операций и тогда вернет управление. Естественно, это будет намного быстрее.
Кроме того были продемонстрированы возможности релизнувшегося на прошлой неделе ASP.NET Ajax Framework, о которых я рассказывать не буду - примеры есть на сайте http://ajax.asp.net, а про идеологию говорить слишком долго.
В перерыве, как это обычно принято, буттерброды (4-5 видов) и напитки (сок и кока-кола).
Кушать не хотелось до ужина :)
Вторая часть была посвящена TIps & Tricks в отношении Visual Studio и ASP.NET.
В этой части интересного было уже меньше, за исключением того, что Скотт чуть ли не просил никогда не деплоить на сервер дебаговый билд и не включать debug=true в web.config.
В принципе, про быстродействие и память было и так понятно, но вот того, что при этом на стороне клиента не кешируются сгенерированные WebResource'м javascript-файлы и клиентам приходится тянуть их (а серверу - генерировать) при каждом клике - я не знал.
Кроме того, Скотт сказал, что 90% проблем с производительностью ASP.NET решается саппортом Майкрософт просьбой отключить дебаг на сервере.
Удивило то, что когда Скотт спросил разработчиков, знают ли они, что означает тильда в путях в ASP.NET, зал ответил гробовым молчанием, хотя до этого весьма активно отвечал поднятием рук. Впрочем, может быть этот вопрос просто проигнорировали. Я ведь тоже руки не поднял, хотя что такое тильда знаю :)
Впрочем, сей факт остается фактом.