Visual Studio .NET 2003: некоторые отличия и особенности

Вместе с Windows Server 2003 компания Microsoft официально представила широкой общественности и Visual Studio .NET 2003, наиболее мощное и функциональное средство разработки XML Web-сервисов и приложений для Windows (а также для Windows CE).

Введение


Основными источниками информации о новинках программного продукта обычно являются файлы "whatsnew" (в русском переводе "что нового...") и README, справочная система самого продукта и, конечно же, ресурс www.microsoft.com. Информация в них чаще всего избыточна, порой не структурирована. Ее использование в справочных целях, вообще говоря, затруднено. Изменение версии программы оборачивается для пользователя опасениями потерять какие-то из своих привычек, в угоду все более новым и мощным, и зачастую, более сложным возможностям. Появившиеся средства, в которых испытывалась острая необходимость - сразу же становятся неотъемлемой частью рабочего пространства, остальные возможности скромно остаются за кадром, ожидая своего часа.


Нет острой необходимости перечислять подряд все изменения в Visual Studio .NET 2003, по сравнению с предыдущей 2002 версией. Поверьте, все уже сделано до нас, и в значительно более строгих выражениях. Но, вы еще помните, в чем недостаток файла "что нового"? Поэтому мы постараемся остановиться лишь на некоторых сведениях, описать кое-какие отличия и нововведения, которые затрудняют или наоборот упрощают работу с программным продуктом.

Описывать достоинства вроде: "теперь в Visual Basic .NET при вводе оператора Try автоматически добавляются операторы Catch и End Try" - не имеет особого смысла, ведь при использовании VB вы все увидите сами, а при использовании других языков достаточно лишь знать, что система IntelliSense не остановилась в своем развитии. К основным улучшениям IntelliSense следует отнести: удаление методов, наследованных от интерфейса и запоминание наиболее часто используемых членов класса (автозаполнение наиболее часто используемых функций). Теперь технология IntelliSense используется и в отладчике, помогая программистам находить и исправлять ошибки.



Установка Visual Studio .NET 2003 и миграция с Visual Studio .NET 2002


Переход на Visual Studio .NET 2003 абсолютно не затруднит использование других версий Visual Studio. Создателями гарантируется совместимость с версиями 6.0 и 2002. Перенести настройки из Visual Studio .NET 2002 в 2003 можно с помощью ключа командной строки devenv /migratesettings. После запуска программы с этим ключом вы увидите диалоговое окно Options, в котором вам предложат осуществить операцию переноса. К сожалению, экспорт макросов, модулей add-in, панелей инструментов и настроек справочной системы не поддерживается. Текущие настройки можно посмотреть в меню Tools/Options. Допускается параллельное использование нескольких версий Visual Studio, с учетом некоторых ограничений на версии дополнительного программного обеспечения. В частности, использование Visual Studio Analyzer 6.0 (инструмента для анализа эффективности распределенных приложений) с Visual Studio .NET 2003 невозможно, а в случае разных версий Visual Studio Analyzer для Visual Studio .NET 2002 и 2003 одновременно может быть запущен только один из них. Для того чтобы переключиться на другую версию - следует запустить "RegisterAnalyzerv7.bat" из папки "\Program Files\Microsoft Visual Studio .NET 2003\Common7\Tools\Analyzer".

Если Visual Studio .NET 2002 была установлена вместе с Application Center Test (программой для нагрузочного тестирования web-серверов и приложений), вы не сможете установить его новую версию из Visual Studio .NET 2003. Для того, чтобы исправить это недоразумение (лишившись тем самым старой версии) следует проделать следующее:

Пуск/Панель управления / "Установка и удаление программ"
Visual Studio .NET 2002 / "Заменить/Удалить"
В окне установки Visual Studio .NET 2002 используйте возможность "Add or Remove Features" из второго пункта меню.
Уберите галочку с Application Center Test в разделе Enterprise Development Tools.
Нажмите "Update Now!"
Когда установка завершится - нажмите "Done".
Проделайте те же самые операции (п. 1-5) с Visual Studio .NET 2003, заменив операцию удаления галочки на установку.

Некоторые проблемы могут возникнуть при удалении Visual Studio с компьютера. Установленный Visual InterDev 6.0 (инструмент для управления web-ориентированными проектами) не сможет создавать новые "Web project". Решением проблемы является только переустановка InterDev 6.0.

Конфигурирование


К сожалению, совместимость кода и среды разработки с Visual Studio .NET 2002 все же не является полной. При открытии "старого" проекта вы будете проинформированы о возможности преобразовать проект к новому формату. Работа с проектами Visual Studio .NET 2003 в Visual Studio .NET 2002 невозможна.

Несомненно, к технологиям будущего можно отнести поддержку протокола IPv6, которая была включена в .NET Framework 1.1 - платформу, входящую по умолчанию в поставку Visual Studio .NET 2003 и Windows Server 2003. Использование поддержки этого протокола тоже требует дополнительных манипуляций по настройке. Во-первых, его применение невозможно без Windows Server 2003 или Windows XP с установленным Service Pack 1.

Последнее обновление для Windows XP может быть получено по адресу: линк

Следует знать, что по умолчанию IPv6 не устанавливается в Windows XP SP1 или в Windows Server 2003, так как его практическое использование затруднено отсутствием необходимой инфраструктуры. Более подробно об этом смотрите "Checklist: Installing and Configuring IPv6" в Windows Help.

Для того, чтобы включить поддержку IPv6 в ваших .NET-приложениях необходимо внести следующие изменения в файл "app.config" или файл конфигурации Web "web.config":

<configuration>
<system.net>
<settings>
<!-- The following entry enables IPv6 support in the System.Net classes. IPv6 support is
predicated on availability of an IPv6 WinSock provider. -->
<ipv6 enabled="true" />
</settings>
</system.net>
</configuration>

Если потребуется разрешить использование IPv6 для всех .NET-приложений на компьютере, отредактируйте файл machine.config в каталоге .NET Framework 1.1. Общий вид пути к этому файлу: "\Microsoft.NET\Framework\<version>\config". Раскомментируйте строчку, отвечающую за IPv6 и измените соответствующее ей значение с false на true. Следует помнить, что изменения затронут все .NET-приложения на компьютере. Рекомендуется сразу же проверить их корректную работу, для того чтобы избежать проблем в будущем.

<configuration>
<system.net>
<settings>
<!-- The following entry enables IPv6 support in the System.Net classes. IPv6 support is
predicated on availability of an IPv6 WinSock provider, use of a supporting operating system,
and the switch below being set to "true". -->
<!-- <ipv6 enabled="false"/> -->
</settings>
</system.net>
</configuration>

Дополнительная информация о поддержке протокола IPv6 в рамках .NET Framework может быть найдена в MICROSOFTDN, в разделах "Internet Protocol Version 6" и "IPv6 Addressing".

Начало работы


Внешний вид среды разработки не претерпел значительных изменений, так что отказываться от уже полюбившихся раскладок окон или визуальных компонентов не потребуется. К основным новшествам можно отнести расширенный диалог "Добавление web-ссылки", модифицированную начальную страницу с обширными возможностями для настройки, улучшения в редакторе кода. Раздел "The Online Resources" пополнился ссылками на онлайновые ресурсы для разработчиков. Система стала значительно быстрее, были оптимизированы операции поиска объектов, динамическая система справки и процедура начальной загрузки. Приятным сюрпризом для разработчиков, чьи файлы содержат много объектов или методов, покажутся быстрые раскрывающиеся меню редактора кода.

Использование


Visual Basic .NET 2003 по-прежнему остается одним из лучших средств для быстрой разработки приложений, чему сильно способствуют его новые возможности. Так, использование элементов управления Visual Basic 6.0 в Windows Forms позволит вам без проблем перекомпилировать старые приложения (до 95% приложений не потребуют никаких корректив), добавление поддержки IntelliSense в отладчик облегчит устранение ошибок, а поддержка стандартов WS-Routing, WS-Security, WS-Attachments, и Direct Internet Message Encapsulation (DIME) сделает ваши web-сервисами более функциональными. Разработчики приложений для мобильных устройств смогут воспользоваться встроенной поддержкой .NET Compact Framework, работать со стандартом WML 1.1, и использовать Compact HTML.

Однако не следует считать, что все изменения коснулись только визуальных и технических сторон создания кода. Помимо уже упомянутой автоподстановки для "Try", существует возможность автоматического создания интерфейсов, для использования которой достаточно использовать оператор Implements и нажать Enter. Возможность объявления переменных в циклах еще больше сглаживает отличия Visual Basic от других языков платформы .NET и позволяет писать более компактный и красивый код. Нельзя пройти мимо появления операторов побитового сдвига (>> и <<) которых сильно не хватало при интенсивных вычислениях и работе с графикой. Внесены изменения в развертывание приложений и создание инсталляторов. Остановимся на двух из них:

Xcopy-развертывание: осуществление развертывания папки приложения на компьютер конечного пользователя с использованием стандартной команды XCOPY. Если приложение на языке Visual Basic состоит из исполняемого файла, нескольких библиотек классов (DLL) и пользовательских элементов управления, то этот простой способ - наиболее быстр и эффективен. Для более сложных приложений, требующих установки базы данных или очереди сообщений, Visual Basic .NET предлагает полную поддержку технологии Windows Installer для профессиональной установки.

Бесконтактное развертывание: достаточно скопировать части приложения на web-сервер. Конечные пользователи смогут открыть Internet Explorer и перейти по адресу URL в месторасположение исполняемого файла. Приложение будет автоматически загружено на компьютер-клиент в область, которая носит название "глобальный кэш сборок", а затем - запущено. Используйте метод System.Reflection.Assembly.LoadFrom() класса Reflections, чтобы загрузить сборки с сервера автоматически (зависимость прописана в манифесте каждой сборки). Данный метод является альтернативой автоматической загрузке приложения через браузер. С помощью упомянутого класса можно получить параметр, указывающий на расположение библиотеки DLL из адреса URL, и также загрузить ее в глобальный кэш сборок при первой необходимости. Такая загрузка называется струйной ("Trickle"), она происходит только при обращении к библиотеке DLL. В следующий раз при запуске приложения общеязыковая среда исполнения проверит, существует ли на удаленном web-сервере обновленная версия библиотеки. Если существует обновление, произойдет загрузка и запуск обновленных частей. В противном случае будет продолжена работа с локальной копией в кэше. Компьютеру-клиенту не потребуется отправлять бесполезные сетевые запросы.

Visual C++ .NET является, пожалуй, самым функциональным языком платформы .NET Framework, и в версии Visual Studio .NET 2003 его развитию было уделено очень большое внимание. Наиболее важным, на мой взгляд, является улучшенное соответствие стандартам, ведь если в Visual C++ 6.0 было реализовано почти 81% определенных стандартом возможностей, в Visual C++ .NET 2002 87%, то в Visual C++ .NET 2003 эта цифра возросла до 98 процентов. Вот, что сказал Алексей Федоров, эксперт из отдела стратегических платформ .NET компании Microsoft: "Не существует ни одного промышленного стандартного набора тестов для сравнения или измерения возможностей структуры данных компилятора C++. Однако существуют три общедоступных набора тестов, каждый из которых показывает для отдельного компилятора различные результаты. В ходе создания Visual C++ .NET 2003 компания Microsoft приложила все усилия для достижения наивысших показателей во всех трех тестах: Dinkumware, Perennial и Plum Hall. Помимо этого, команда разработчиков Visual C++ усиленно работала над тем, чтобы с помощью Visual C++ .NET 2003 было возможно компилировать современные библиотеки C++, включая LOKI, BOOST и BLITZ++, без изменения исходного кода библиотек. Эта возможность представлена в малом числе компиляторов (если вообще существует), но в итоге реализована в Visual C++ .NET 2003".

Прежде компилятор Visual C++ не соответствовал следующим пунктам стандарта:

UNICODE-идентификаторы;
Инициализация пустого множества;
Поиск символов для функций локального члена;
Дружественные шаблоны классов;
Неявный вызов преобразований "ptr-to-func";
Классификация преобразований объекта производного класса в объект основного класса;
Нестандартные параметры шаблона;
Шаблоны преобразований, определенные пользователем;
Неполное указание шаблонов класса;
Частичное упорядочение шаблонов функции;
Вложенные классы в шаблонах классов;
Явное указание шаблонов членов;
Функция unexpected().

Сейчас на практике реализована каждая возможность, регламентированная стандартом ISO (C++ Language Standard ISO/IEC 14882:1998(E)).

Внесение подобных изменений в компилятор не могло пройти бесследно: чтобы избежать негативных последствий? связанных с производительностью, были переработаны схемы оптимизации. Сейчас ситуация выглядит следующим образом: в компилятор добавлено два основных ключа, влияющих на производительность. Это /G7, с помощью которого можно оптимизировать код для процессоров класса Intel Pentium 4 и AMD Athlon, и ключ /arch:SSE (/arch:SSE2), позволяющий компилятору использовать возможности инструкций Streaming SIMD Extensions (SSE) и Streaming SIMD Extensions 2 (SSE2) наряду с остальными новыми инструкциями, доступными для поддерживаемых процессоров. Средний рост производительности при использовании первого ключа составляет 5-10%. Минимальный прирост производительности при компиляции со вторым ключом: 2-3%.

Не была забыта и политика ужесточения безопасности. Новый ключ компилятора /GS обеспечит защиту Вашего приложения от наиболее распространенных уязвимостей. Среди наиболее распространенных способов атаки на приложение можно отметить переполнение стека и перезапись адреса возврата функции. При использовании новой опции компилятора, локальным переменным (хранящимся в стеке) выделяются буферы, а целостность адреса возврата - отслеживается. Предупреждаются атаки на обработчик исключений, за счет проверки созданной компилятором таблицы перед вызовом обработчика (согласно замечаниям специалистов Microsoft - эта возможность реализована для Windows Server 2003). Соблюден баланс между скоростью и безопасностью, для каждой успешной проверки достаточно девяти инструкций. В худшем случае потери производительности составят не более 2%.

Если предыдущие изменения коснулись самого сердца программы - исполняемого кода, то изменения в Windows Forms не оставят равнодушными поклонников быстрого создания приложений. Редактор форм Windows Foms Designer, ранее доступный только для Visual Basic и Visual C#, сейчас в реальном времени создает для спроектированной формы код на языке C++. Диалоговое окно редактора меню заменено редактированием "на месте", что позволяет значительно сократить время на работу с пунктами меню, и вообще сильно упростить этот аспект рабочего процесса. Для Windows Forms организована встроенная поддержка локализации. Достаточно задать в форме значение "Истина" для свойства "Localizable", установить необходимый язык для свойства "Language" и обновить текст и изображения. Все настройки сохраняются в едином файле ресурса.

Visual C# не претерпел больших изменений. Его коснулись общие улучшения Visual Studio .NET 2003 и .NET Framework 1.1: усовершенствована технология IntelliSense, появилась возможность выполнять сценарии и команды, как перед сборкой, так и после нее. Теперь вставка кода происходит в момент связывания событий и внедрения интерфейсов. Visual C# также полностью поддерживает новые типы мобильных проектов и приложений.

Visual J#++ .NET 2003 - управляемая версия языка Java теперь входит и в состав Visual Studio .NET 2003. Возможность преобразовывать байт-код на языке Java в сборки платформы .NET Framework позволит перенести некоторые приложения даже без наличия исходного кода (для большинства библиотек и приложений уровня Java Development Kit 1.1.4). С помощью помощника для преобразования языков Java можно конвертировать проекты Visual J++ и группы исходных файлов на языке Java в код на C#. Разработчики получают возможность использования большинства средств защиты и развертывания (в частности технологии Xcopy, упомянутой в разделе про Visual Basic .NET 2003), а также разработки приложения на нескольких языках.
Полное описание возможностей J# занимает слишком много места, и выходит за рамки данной статьи. Несмотря на это, нельзя не упомянуть возможность создания приложений под Windows, web-приложений, мобильных web-приложений и web-служб.

Можно отметить, что очень большое число нововведений в Visual Studio .NET 2003 связано с переходом на .NET Framework 1.1. Что же входит в перечень основных возможностей этой платформы?

Увеличение масштабируемости и производительности.

Усовершенствованные способы распределения и управления памятью, а также потоковая обработка приводят к все увеличивающейся эффективности приложений для платформы .NET Framework. С платформой версии 1.1 может быть использовано до 32 процессоров (напомним, в 1.0 их количество ограничивалось 8-ю.)

Включение зоны Интернета.

На платформе .NET Framework версии 1.1 уже существуют настройки по умолчанию, обеспечивающие работу приложений, полученных из зоны Интернета, в безопасной изолированной программной среде. Система Authenticode предоставляет приложению, загруженному из Интернет, привилегии текущего пользователя, но только в том случае, если пользователь дал разрешение на запуск программы.

Возможность подключения к данным ODBC и Oracle.

Появилась возможность работы с новыми типами источников данных (Managed Providers) для совместимости баз данных Oracle и ODBC. Это позволяет воспользоваться преимуществами технологии ADO.NET при связи с источниками данных.



Платформа .NET Framework 1.1 позволяет создавать приложения для мобильных устройств, используя одну и ту же интегрированную среду разработки. Пакет ASP.NET Mobile Controls расширяет возможности среды Visual Studio .NET и языка ASP.NET для разработки мобильных приложений. Он обеспечивает полное представление о возможностях устройств и предлагает разработчикам рациональный способ создания мобильных web-приложений, охватывающий практически все выпускаемые мобильные устройства. Для разработки клиентских приложений Microsoft предоставляет платформу .NET Compact Framework, которая является связующим звеном между программным кодом и устройствами операционной системы.

Вообще, .NET Compact Framework позволяет абстрагироваться от типа того мобильного устройства, под которое вы создаете приложение. Разработка приложений для платформы .NET Compact Framework стала проще: Smart Device Programmability для Visual Studio .NET позволяет разработчикам использовать те же инструменты, что и для создания настольных приложений. В состав Visual Studio .NET 2003 включен эмулятор, позволяющей запускать на виртуальном устройстве образ операционной системы Windows CE .NET. Программирование интеллектуальных устройств предоставляет также возможность удаленной отладки, то есть возможность отладки приложений в процессе их работы на физическом устройстве.

Заключение


Для того чтобы принять решение о переходе на Visual Studio .NET 2003, приведенной в статье информации, конечно же, явно недостаточно. Каждый разработчик выбирает сам, исходя из собственных ожиданий, требований и потребностей. Однако, факты - упрямая вещь, и нельзя не отметить, что разработка мобильных приложений теперь возможна более чем для 200 типов карманных устройств, платформа .NET Framework 1.1 отличается повышенной безопасностью и надежностью, поддержка XML web-сервисов существенно расширена и, наконец, сама среда разработки стала быстрее и приятнее в использовании. Переход на Visual Studio .NET 2003 не заставляет Вас отказываться от привычных средств разработки, и на одном компьютере могут мирно сосуществовать Visual Basic 6.0, Visual C# и новейший Visual C++ .NET 2003. В конечном итоге, основным звеном всех систем является человек, и только удовлетворение его потребностей может поставить точку в извечном споре хорошего и лучшего...