Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #135, МАРТ 2010 г.

Новые фишки Visual Studio 2010 из первых уст

Виталий Зайко i-vizaik@microsoft.com


Первая версия Visual Studio появилась еще 97 году. С тех пор Microsoft исправно каждые несколько лет выпускает новую версию, все больше и больше прокачивая функциональность своей среды разработки. На носу – релиз Visual Studio 2010. Поэтому мы попросили самих ребят из Microsoft рассказать, что же хорошего нас ждет в предстоящем релизе.

Через пару лет напряженной работы, проб и ошибок, массы задуманных и реализованных идей, Visual Studio 2010 получила официальную дату рождения – 12 апреля 2010. Запуск намечен как раз на день космонавтики :). Первая официальная бета версия была представлена на обсуждение еще в середине мая 2009 года. Затем, в октябре того же года была выпущена вторая бета, после чего компания Майкрософт объявила официальную дату выхода продукта. Однако, по итогам публичного тестирования, было принято беспрецедентное решение - продлить работу и даже перенести официальную дату релиза с целью улучшить производительностью. Что из этого получилось? Студия вполне комфортно себя чувствует даже на нетбуках с одним гигабайтом оперативки! За годы работы был наработан немалый объем новой функциональности, который едва ли можно уместить в рамках одной статьи. Поэтому мы сосредоточимся на области, напрямую связанной с разработкой – на работе программиста.

Переработанный UI

Даже беглого взгляда на интегрированную среду разработчика (IDE – Integrated Development Environment) достаточно, чтобы заметить, что она была серьезно переработана. Действительно: теперь интерфейс полностью выполнен с помощью технологии Windows Presentation Foundation (WPF). Верный способ показать, что с ее помощью можно создавать даже самые сложные и максимально гибкие интерфейсы. Впрочем, нам скорее интереснее разобраться, не как что реализовано, а что нового появилось. И это новое встречает нас с первых секунд после запуска.

Бьюсь об заклад, что ты всегда отключаешь назойливую стартовую страницу – я использую VS как основной инструмент для работы уже много лет, и отключить ее считал своим долгом сразу после установки IDE :). Видимо, подобных отзывов было очень много, поэтому в MS решили серьезно ее переработать и теперь это вполне пригодный для использования инструмент. Кроме очевидного списка последних активных проектов, новая страница содержит массу другой информации и ссылок на справочные материалы. Опция «закрывать при открытии проекта» позволяет автоматически удалять ее из главного окна, сокращая тем самым количество закладок, в которых, порой и так нелегко разобраться в больших проектах. А, поскольку сама она также выполнена на основе WPF, любой разработчик может с легкостью настроить ее под себя и свою команду.

Впрочем, неудобство от появления маленького окошка вначале – это цветочки по сравнению с тем, что становилось через несколько часов работы на большом проекте, когда все открытые окна и вкладки уже банально не влезали на экран. Мониторы с большим разрешением экрана лишь отчасти помогают решить данную проблему. Однако в Visual Studio 2010 было предложено более удобное решение: правильная поддержка работы на нескольких мониторах. Суть нововведения проста: практически все основные окна среды являются независимыми, «плавающими» по отношению к основному родительскому окну. Ты можешь легко «отстыковать» любое окно при помощи мышки, и перенести его на другой монитор для более комфортной работы.

Новые фишки редактора кода

Больше всего времени разработчик проводит с редактором кода, и даже несмотря на то, что в Visual Studio этот инструмент и без того чрезвычайно мощный, в 2010 версии он обзавелся несколькими очень полезными фишками. Например, при помощи нового инструмента Call Hierarchy (иерархия вызовов) теперь можно посмотреть зависимости вызовов ("кто вызывает ту или иную функцию?", "к каким методам она обращается в свою очередь") для любого метода, свойства или конструктора. Получается более продвинутая вариация известного инструмента Find All References.

Это позволяет быстрее и проще разобраться в структуре кода, особенно, когда имеешь дело с чужим кодом. Помимо этого, нередко бывает нужно просмотреть все участки кода, в которых используется определенная переменная, свойство или метод класса. До сих пор для этого приходилось выполнять поиск нужной информации по коду. В Visual Studio 2010 достаточно установить курсор на нужный элемент, и все ссылки на его будут подсвечены фоновым цветом везде, где он используется.

Впрочем, инкрементный поиск Navigate To («Перейти к…», вызывается при помощи CTRL+запятая) также получил свой level-up и теперь позволяет найти информацию, в правильности написания которой ты неуверен. Секрет в том, что поисковый механизм использует и нечеткую логину и поэтому вполне успешно справится со сложными случаями поиска. Например, с поиском слов, разделенных пробелами, в то время как в тексте программы они написаны без них – частая ситуация с составными именами классов. Поиск начинается одновременно с вводом запроса, и результаты уточняются по мере завершения ввода строки запроса. Таким образом, зачастую нет необходимости в воде полной строки запроса.

Другая новая интересная функция — редактирование целого блока кода одновременно. Представь себе ситуацию: у тебя есть выровненный по вертикали блок объявления полей некоторого класса и все поля помечены, как скрытые (private). До сих пор, если вдруг тебе понадобилось изменить область видимости у всех полей одновременно, приходилось, тем или иным способом, строчка за строчкой менять их значения на нужные. Теперь же, при помощи клавиш SHIFT+ALT и стрелок (или мышки) ты можешь выделить блок, содержащий только модификатор, который хочешь изменить, и вводить нужный. При этом информация во всем блоке будет заменена одновременно. Этим же способом очень удобно вставлять любой символ или набор символов в любое место кода, например, комментировать код при помощи символов “\\”.

Разработчики веб-приложений теперь могут пользоваться шаблонами кода (так называемые code snippets) в файлах HTML и при работе с JavaScript.

Новые инструменты для отладки

Едва ли кто-нибудь будет спорить с утверждением, что возможности отладчика, наравне с компилятором – ключ к успеху среды разработки. И Visual Studio 2010 есть чем порадовать разработчиков.

В этой версии были существенно расширены функции работы с точками останова и всплывающими подсказками. Все мы миллион раз пользовались подсказками для проверки текущего значения той или иной переменной. Не всегда есть необходимость добавлять интересующую переменную в специальное окно типа Watch: зачастую достаточно лишь навести курсор на нее, чтобы получить текущее значение в режиме отладки. В новой версии окошко подсказки можно закрепить в удобном месте основного окна редактора с тем, чтобы оно не исчезало после того, как ты переместишь мышку, и даже снабдить его комментарием. Настройки этого окна-подсказки сохраняются даже после перезапуска отладчика.

Сами точки останова теперь можно группировать, именовать и, соответственно, сортировать по имени. Ими также можно обмениваться, так как списки точек останова поддерживают экспорт и импорт во внешние файлы.

Принципиально новый инструмент отладки – IntelliTrace, который можно условно назвать «исторический отладчик». Это имя достаточно точно передает суть его работы: отладочная информация накапливается в процессе отладки от итерации к итерации. Представим себе типичный сценарий: ты активно работаешь над проектом, вносишь изменения, компилируешь, запускаешь его и вдруг: код, который в предыдущей сессии отладки работал, как надо, выбрасывает ошибку! До сих пор самым распространенным действием был возврат к пошаговой отладке: ты устанавливал точку останова до сбойного места и шаг за шагом двигался по коду, проверяя переменные, значения которых могли привести к сбою. Теперь же, вместо кропотливой повторной отладки кода, ты можешь передвигаться по истории отладки, собранной в специальном окне, сравнивая текущие значения переменных, которые и привели к сбою, с ними же, но из сессий отладки, закончившихся успешно.

Любой разработчик знает, насколько сложно отлаживать многопоточные приложения по сравнению с выполняющимися в одном потоке. А если при этом твое приложение выполняется в системе с несколькими процессорными ядрами или даже физическими процессорами? А ведь от этого уже никуда не деться: даже бюджетные ноутбуки имеют минимум по паре ядер. Учитывая, что поддержка параллельного выполнения в полной мере была реализована на уровне .NET Framework 4, который будет доступен одновременно с выходом Visual Studio 2010, было бы странно, если бы отладчик среды разработки не предоставлял бы удобный инструментарий для потоковой отладки. И такой инструментарий был создан.

Для поддержки отладки параллельных вычислений в Visual Studio 2010 появились два новых окна отладчика: состояния стеков (Parallel Stacks) и состояния задач (Parallel Tasks). Как следует из названий, первое окно предоставляет информацию о реальном состоянии стеков на каждом из ядер. Для удобства работы сегменты стека, общие для нескольких потоков, объединяются в общие группы, при этом поддерживаются различные режимы отображения: на уровне потока или задачи. Окно задач в свою очередь представляет собой список задач с подробной информацией об их статусе: какая задача выполняется, а какая только стоит в очереди на выполнение. Тут же отображается идентификатор и информация о потоке, закрепленном за этой задачей, а также масса другой полезной отладочной информации. Эта информация позволяет быстро выявить потенциальные проблемы, связанные с выполнением в потоках, например, блокировки процессов (deadlock). Но функциональность данного окна не ограничивается лишь отображением: ты можешь переключаться между задачами, устанавливать метки (флажки), приостанавливать и разрешать выполнение потоков.

Профайлер и возможности для тестирования

Впрочем, код, свободный от дефектов – это лишь половина успеха проекта. Раздражающая медлительность программы сродни с критической ошибкой, и помочь с ее исправлением предназначен обновленный профайлер Visual Studio 2010 – средство для анализа производительности отдельных участков кода. Так, поддержка параллельной разработки не могла обойти стороной и встроенный профайлер: к списку поддерживаемых опций была добавлена новая – конкурентное профилирование (Concurrency Profiling), делающая профилирование многопоточных приложений столь же интуитивно понятным и простым, как однопоточных.

Практически любое современное приложение, так или иначе, связано с данными. Для профилирования многоуровневых приложений предназначен новый инструмент – Tier Interaction Profiler. С его помощью ты можешь собрать и проанализировать количество обращений к данным и время, затраченное на их выполнение. А если ты разрабатываешь веб-приложение, то этот инструмент представит отчет о количестве вызовов той или иной страницы и времени, затраченного на ее обработку. Кроме того, для ASP.NET появилась возможность профилирования сценариев JavaScript в контексте их выполнения движком Internet Explorer 8.

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

Для разработки высокопроизводительных приложений, кроме обновленного профайлера, были созданы специальные средства нагрузочного тестирования и тестирования производительности, что будет особенно интересно разработчикам веб-приложений. Используя эти средства, ты можешь создавать группы тестовых компьютеров для эмуляции повышенной нагрузки на ваши приложения, а также имитировать пониженную пропускную способность сети.

К уже имеющимся функциям для тестирования приложения добавился ряд новых, самой интересной из которых является автоматическое тестирование пользовательского интерфейса. Работать с такими тестами легко и приятно: разработчик создает новый тестовый проект, а затем запускает автоматическую запись действий над интерфейсом при помощи специального диалога и производит предусмотренные тестовым заданием действия. Результат работы – тестовый проект на C# или VB по выбору разработчика, в который можно легко вносить дополнения и изменения в точности, как в обычный проект. Этот процесс чем-то напоминает запись макрокоманд в Microsoft Excel, в результате которого получается код на Basic, повторяющий выполненные действия.

Express-версии быть!

Состав и названия редакций Visual Studio 2010 также претерпел некоторые изменения. Теперь будут доступны следующие редакции: Ultimate, Premium, Professional и Express. Описанная выше функциональность доступна не во всех редакциях Visual Studio 2010, поэтому при переходе надо уточнить: поддерживает ли выбранная редакция нужные функции или нет. Но самое главное, что у всех по-прежнему остается возможность использовать бесплатную версию VS! Если не требуются функции управления жизненным циклом продукта, а проект рассчитан на одного-двух разработчиков, установи себе свободную Express-версию Visual Studio 2010 – и тебе ее совершенно точно будет достаточно.

Стоит ли переходить на новую версию? Конечно! Если бета-версия еще грешила некоторыми багами, то уже в RC все работало совершенно стабильно. Единственное, что может пока остановить – это отсутствие для новой версии Visual Studio обновленных версий расширений, которые ты возможно используешь. Но это лишь вопрос времени. А сейчас стоит хотя бы раз попробовать новую версию и возвращаться к старой, пусть даже и более привычной версии IDE, не будет ни малейшего желания.

.NET Framework 4

Обсуждая новые возможности Visual Studio 2010 нельзя не вспомнить о .NET Framework 4, который традиционно выходит одновременно со средой разработки и тесно с ней интегрирован. Ниже перечислены лишь некоторые, на мой взгляд, наиболее важные функции новой версии:

  • Новый сборщик мусора обладает повышенным быстродействием благодаря выполнению сборки в старших поколениях без необходимости останавливать работу приложений в безопасных точках.
  • Введены новые типы: BigInteger и Complex. Суть их использования следует из их названий. Отмечу только, что новый тип целого может хранить и выполнять обычные числовые операции над величинами, фактически ограничиваемыми лишь размером доступной оперативной памяти.
  • Новый модуль .NET Framework - Managed Extensibility Framework (MEF) – отвечает за расширение функциональности готовых приложений при помощи подключаемых модулей (плагинов). Разработчику нужно лишь при создании программы указать точки, в которых возможно такое расширение. Такое приложение сможет самостоятельно находить и подключать расширения, выполненные с использованием MEF. Эту технологию можно также использовать и при создании расширений самой Visual Studio 2010.
  • Как указывалось выше, .NET Framework 4 получил поддержку параллельного выполнения приложений на многоядерных системах. Для этого была создана новая библиотека System.Threading.
  • Разработчики, работающие на WPF получили три новых элемента управления: DataGrid, Calendar и DataPicker, поддержку разработки для мультисенсорных экранов, полностью переработанную систему визуализации текста и улучшенное взаимодействие с данными.

INFO

Автор статьи занимается развитием средств разработки Microsoft в России и с радостью ответит на твои вопросы по мейлу i-vizaik@microsoft.com

Содержание