Впервые среда разработки Visual Studio 2010 была представлена широкой публике в сентябре 2008 года. Специалисты получили возможность познакомиться с новыми функциями благодаря доступной для загрузки предварительной версии. За время, прошедшее с момента выхода Visual Studio 2008, отрасль не стояла на месте (повышение тактовой частоты процессоров, увеличение количества вычислительных ядер, вычисления в облаке, новые операционные системы и т.п.), и Visual Studio 2010 не просто получила поддержку этих технологий – она создавалась под них. Система была почти полностью переделана, начиная с редактора кода и заканчивая инструментами создания инсталляционных пакетов.
Вся система ввода кода и разработки визуальных элементов была полностью переработана с использованием технологии Windows Presentation Foundation (WPF), что сделало работу в среде Visual Studio более гибкой (рис. 1). Теперь можно, например, плавно масштабировать любые открытые окна, включая дизайнеры форм и редактор кода, а также работать с несколькими мониторами. Сегодня разработчику уже не хватает одного экрана, даже с очень высоким разрешением, поэтому в предыдущих версиях Visual Studio появились скрываемые панели, которые можно сдвинуть за пределы экрана, пока они не нужны. В Visual Studio 2010 любое окно можно вообще отстыковать от среды разработки и перетащить на другой монитор. Разработчику уже не придется тратить время на постоянное переключение между десятком одновременно открытых окон.
Любой программист знает, как трудно разбираться в чужом коде, ища точки вызова конкретной функции или выявляя пользователя определенного кода. Теперь найти ответы на эти вопросы проще – надо выделить интересующую функцию и открыть окно Call Hierarchy, в котором в виде дерева вызовов представлены все функции, обращающиеся к вашему коду. Эта возможность будет полезна при организации работ над программными системами, объединяющими несколько больших взаимосвязанных проектов. В таких случаях всякий раз, когда возникает необходимость внести изменения в свой класс или функцию, появляется риск, что другие проекты, использующие этот код, перестанут работать. Использование Call Hierarchy позволит не только сэкономить время на поиски мест взаимных вызовов, но и повысит надежность разрабатываемых систем.
Пользователи предыдущих версий Visual Studio неоднократно указывали на сложность поиска конкретного класса в масштабных решениях, содержащих множество проектов. Так появилась идея нового диалогового окна Quick Searching (рис. 2), позволяющего искать классы как внутри решения, так и за его пределами, включая внешние сборки.
Еще одна полезная функция редактора – возможность выделения в программе всех мест, где встречается какая-либо переменная. Улучшены функции рефакторинга – если раньше разработчик в процессе создания программы вдруг понимал, что код, который он собирается написать, лучше оформить в отдельный класс, ему приходилось прерывать работу в этом месте программы, теперь же можно немедленно начать работу с этим классом, как будто он уже существует. Среда разработки создает класс сама, вместе со всеми необходимыми переменными и методами.
Среда разработки Visual Studio 2010 включает в себя поддержку технологий, которые станут доступны в новой операционной системе Windows 7. Самая интересная из них – это работа с сенсорными дисплеями, имеющими функцию multi-touch, которыми можно управлять при помощи прикосновений, причем сразу в нескольких точках экрана одновременно. Для создания современных и удобных программ, в набор компонентов пользовательского интерфейса был добавлен новый элемент – Ribbon («Лента»), пришедший на замену традиционным меню и панелям инструментов и хорошо знакомый пользователям Microsoft Word 2007. Разработчики приложений для Win32 оценят поддержку IntelliSense – технологии, ускоряющей ввод исходного кода при помощи динамического списка подсказок, появляющегося рядом с курсором ввода.
Разработка для SharePoint и Office
Новый интерфейс Visual Studio 10 дает возможность программистам редактировать существующие или создавать собственные шаблоны проектов или элементов SharePoint. Инструментарий разработчика SharePoint теперь не ограничивается лишь наличием соответствующих шаблонов проектов, которые позволяют создавать такие элементы, как описание сайтов и списков, обработчики событий, наборы серверных элементов управления, пользовательские элементы управления, потоки и модели бизнес-каталогов BDC (Business Data Catalog).
Обозреватель серверов (Server Explorer), который в предыдущих версиях использовался в основном для работы с базами данных, теперь взаимодействует и с серверами SharePoint. Для уже существующих сайтов SharePoint предусмотрена возможность импорта их кодов в среду Visual Studio при помощи WSP Importer, вне зависимости от инструментария, который использовался при их создании.
Специальные средства Visual Studio 2010 позволят разработчикам решить, будут ли контейнеры приложений SharePoint собраны в одну сборку или разделены на несколько независимых. Такая возможность позволяет планировать, как будет развернуто то или иное приложение без создания вручную XML-сценария для контейнеров WSP.
Для разработки офисных приложений добавлена возможность создания решений под 32- и 64-разрядные версии одновременно с созданием общего файла установки, использующего технологию динамического развертывания приложений ClickOnce, установку через Web или диск. Появились средства проектирования пользовательских интерфейсов с применением WPF или библиотек интерфейса Microsoft Office (Fluent). Упрощен доступ к внешним источникам данных посредством языка исполнения запросов LINQ, а также доступ к BDC.
Разработка для многоядерных процессоров и «облаков»
Поддержка многопоточности – необходимая характеристика высокопроизводительных приложений, однако инструментальные средства не позволяли создавать эффективные многопоточные приложения и разработчикам приходилось тратить много времени на распараллеливание вручную. Новые версии Visual Studio, .Net Framework и библиотек C++ создавались с учетом необходимости разработки приложений для параллельных систем. Разработчики должны меньше думать о потоках и больше – о бизнес-логике. Эта новая технология .Net Framework получила название «Параллельные расширения» (Parallel Extensions).
Библиотека Task Parallel Library содержит два новых класса – Task и Parallel. Работа с первым из них похожа на работу с известным классом Thread с той лишь разницей, что класс сам позаботится об оптимальной загрузке всех доступных ядер процессора. Статический класс Parallel предназначен для распределения нагрузки при вычислениях в циклах типа for, foreach и др. Поддержка параллельной работы с данными вошла и в новую библиотеку PLINQ, причем освоение новой технологии не должно вызвать затруднений у разработчиков, знакомых с LINQ, – запросы к объектам почти полностью идентичны (LINQ-to-Objects и LINQ-to-XML).
При создании параллельных приложений разработчикам будет полезен координатор структур данных (Coordination Data Structures), поддерживающий простые в использовании, потокобезопасные структуры, стеки, семафоры и функции для работы с ними.
Для облегчения работы с новыми расширениями в Visual Studio 2010 имеется механизм, позволяющий отлаживать потоки раздельно на каждом ядре.
Наличие функционально полного набора средств для разработки облачных приложений позволит создавать решения для новой операционной системы Windows Azure, не приобретая какие-либо дополнительные инструменты. Разработка новых проектов осуществляется при помощи набора специальных шаблонов, а динамические подсказки IntelliSense, поддерживающие функции облачных вычислений, помогут быстро ввести исходный код сервиса. Встроенный отладчик и эмулятор среды Azure позволяют использовать привычные инструменты отладки: точки останова, просмотр текущих значений переменных и другие функции, доступные во всех типах проектов, поддерживаемых Visual Studio 2010. Несмотря на то что сервисы Azure напоминают уже привычные Web-сервисы, способы развертывания готовых приложений у них разные; для облегчения этой процедуры создан специальный мастер развертывания, предназначенный для работы именно с Windows Azure.
Программирование для Web
В Visual Studio 2010 появилась полная поддержка технологии MVC (Model-View-Controller), отделяющей процесс разработки интерфейса страниц ASP.Net от бизнес-логики, а также JQuery – библиотеки функций JavaScript, облегчающей создание интерактивных страниц с развитым интерфейсом.
Построение решений на основе MVC позволяет упростить тестирование, проводимое параллельно процессу разработки. Поддержка MVC в Visual Studio не ограничивается набором шаблонов, облегчающих разработку нового проекта, а также его элементов, а предусматривает создание тестовых заданий.
Улучшена поддержка разработки сценариев JavaScript, включая работу IntelliSense в режиме редактирования, что позволило сделать JQuery частью технологий ASP.Net.
Развертывание готовых решений на Web-серверах всегда было трудоемким процессом. В версии Visual Studio 2010 появился набор инструментов OneClick Deployment, облегчающих работу по сбору информации о необходимых компонентах приложения, которые должны быть развернуты вместе с ним. Этот набор непосредственно осуществляет весь процесс развертывания, вне зависимости от того, находится ли Web-сервер на локальном компьютере, в корпоративной сети или же у провайдера услуг. Кроме того, этот инструментарий берет на себя работу по автоматическому внесению изменений в настройки приложения при его развертывании на рабочем сервере. Данный сервис позволяет снизить риск развертывания готового приложения, которое, например, все еще настроено на работу с тестовым сервером данных или на вывод отладочной информации. Чтобы воспользоваться этой функцией, разработчику достаточно один раз создать сценарий изменений, которые OneClick должен вносить в файл web.config в процессе развертывания.
Поддержка создания проектов Silverlight 2.0 также стала частью среды Visual Studio. Разработчики получили возможность включать элементы Silverlight в различные типы проектов ASP.Net и отлаживать их в рамках единого решения.
Командная разработка
Сегодня лишь 20% вновь создаваемого кода приходится на новые приложения, а 80% представляют собой изменения и дополнения, вносимые в уже имеющиеся продукты. Работая с огромными массивами существующего кода, разработчики и архитекторы часто не обладают инструментами, которые облегчали бы понимание системы в целом, и не осознают влияния вносимых изменений. Инструменты моделирования Visual Studio Team System 2010 позволяют использовать моделирование для изучения существующих компонентов приложения. Обозреватель Architecture Explorer (рис. 3) предоставляет разработчикам и архитекторам механизм визуализации кода в виде графов, диаграмм и матриц зависимостей.
Некоторые ошибки, найденные в процессе тестирования, тем не менее оказываются в финальной версии – речь идет о так называемых «трудновоспроизводимых ошибках». Задачей инструмента Test Runner является подробное описание состояния процесса сборки, при котором была найдена та или иная ошибка, и сравнение с аналогичной информацией на машине разработчика в тот момент, когда он пытается воспроизвести эту ошибку (часто проблема воспроизведения ошибки разработчиком возникает именно из-за различий между средами разработки и тестирования). Принцип работы Test Runner заключается в создании тестового сценария, в процессе выполнения которого формируется набор данных, включающий в себя параметры среды исполнения (версия операционной системы и другая системная информация), а также снимки экранов или даже полноэкранное видео этапов прохождения теста. Найденные ошибки заносятся на сервер командной разработки Team Foundation Server вместе с описанием шагов, приведших к их возникновению, а также экранными снимками и видео, визуализирующими эти шаги. Данный инструмент обеспечивает более тесное взаимодействие между тестировщиками и разработчиками, что, в конечном итоге, уменьшает количество трудновоспроизводимых ошибок, проникающих в финальные версии.
Но на этом участие разработчиков в процессе улучшения кода не заканчивается – внесение изменений в код порождает риски появления новых ошибок и возврат уже исправленных. Инструмент Test Impact анализирует изменения и создает список тестов, которые необходимо пройти, чтобы уменьшить вероятность возникновения неожиданных сбоев в работе приложения. Этот инструмент позволяет разработчикам получить список последних изменений кода и набор тестов, проверяющих последние изменения.
Развертывание приложений
В состав Visual Studio 2010 вошел новый набор инструментов для создания инсталляционных пакетов Windows Installer XML toolset (WiX) версии 3. Данный инструментарий позволяет создавать инсталляционные пакеты для Microsoft Windows Installer (MSI), исходными сценариями для которых являются XML-документы.
Пакет WiX toolset представляет собой набор следующих утилит: Candle – компилятор, используемый для сборки исходных XML-документов в объектные файлы; Light – компоновщик, собирающий все файлы в единую сборку MSI или MSM; Dark – инструмент создания исходного XML-сценария на основе готового MSI-файла; Lit – средство объединения нескольких объектных файлов в один, доступный для синтаксического анализа при помощи Light. По сути, описание процесса развертывания приложений ничем не отличается от обычного программирования, только вместо исходного текста программы – готовые файлы, предназначенные для развертывания, а вместо make-файла – XML-сценарий.
Кроме перечисленных утилит, WiX toolset содержит еще один компонент, Votive – набор шаблонов для Visual Studio, при помощи которых разработчики могут создавать проекты WiX и собирать их в среде Visual Studio. Пакет Votive полностью поддерживается редактором, включая подсветку синтаксиса и IntelliSense. Для облегчения работы со сложными многоуровневыми приложениями предусмотрены многочисленные дополнения, облегчающие развертывание приложений, использующих, например, Microsoft Internet Information Server и SQL Server. В этот набор также входят локализованные информационные сообщения, выводимые пользователю в процессе развертывания, в том числе и на русском языке.
Пакет WiX toolset был разработан Microsoft как проект с открытым кодом. В 2004 году на сайте SourceForge была опубликована версия WiX 2.0.1605, которая с тех пор непрерывно развивалась: за четыре года было выпущено более 30 сборок пакета. Третья версия, которая и станет частью Visual Studio 2010, также доступна в виде бета версии.
Виталий Зайко (i-vizaik@microsoft.com) – менеджер по продуктам Microsoft для разработчиков (Москва).