Совершенно неудивительно, что Microsoft Visual Studio .NET — это многофункциональная и очень важная среда разработки. В центрах разработки во всем мире все еще продолжают изучать и оценивать Visual Studio .NET — даже те, кто начал использовать ее бета-версию более года назад. Во второй части обзора версии Enterprise Architect Edition среды Visual Studio .NET я продолжу свой анализ, рассмотрев некоторые из критически важных элементов и особенностей этого программного продукта.

Предыдущие версии Visual Studio в лучшем случае обеспечивали некоторые возможности интеграции. Visual Studio .NET — это по-настоящему интегрированная среда разработки (Integrated Development Environment, IDE), независимо от выбранного языка или типа создаваемого приложения, полностью объектно-ориентированная и построенная на единой платформе (это .NET Framework, рассмотренная в первой части обзора). Общий вид и логика работы с инструментальными средствами в Visual Studio .NET в основном сохранены, а огромное количество кода и большая часть инструментов разработки (в частности, средства проектирования, редактирования и отладки) могут использоваться совместно. Подобная интеграция — уже немалое достижение.

Сведения о программном продукте

Visual Studio .NET

Производитель: Microsoft Corp., http://www.microsoft.com

Минимальные требования: для разработки — Windows XP, 2000, 98 или Me

Цена: Professional Edition — 1079 долл.; Enterprise Developer Edition — 1799 долл.; Enterprise Architect Edition — 2499 долл.

Visual Studio .NET — это также попытка Microsoft повлиять (некоторые скажут: доминировать) на будущее Web-служб и всего рынка ПО для разработчиков. Компания предприняла все возможные усилия, чтобы предоставить обычному программисту инструментальные средства для создания Web-служб; в то же время не остались без внимания средства разработки серверных и Web-приложений, прикладных программ для работы на мобильных устройствах и в локальной сети. Для достижения нужного уровня интеграции и однородности многое в Visual Studio .NET создавалось «с нуля» на основе таких ключевых элементов, как XML, .NET Framework и библиотека классов .NET Framework Class Library. В этой среде есть подходы, которые напоминают Java, но Visual Studio .NET, несомненно, уникальна. Во многих отношениях это все еще версия 1.0, т. е. в ней много «шероховатостей», которые нужно устранить, и функций, которые следует добавить, но тем не менее это в высшей степени устойчивый и конкурентоспособный продукт.

Библиотека классов .NET Framework Class Library

Поскольку Visual Studio .NET — это объектно-ориентированная система, в ее основе лежит библиотека классов .NET Framework Class Library. Хотя корни ее лежат в классах Microsoft Foundation Classes, процедурах, связанных с COM/DCOM, и различных элементах Windows API, эта библиотека представляет собой переработанную, объединенную и расширенную систему классов. С одной стороны, .NET Framework Class Library представляет собой действительно ценное собрание функций, а с другой — она может показаться огромным стогом сена, в котором придется постоянно искать нужную иголку. Хотя библиотека хорошо организована и существует несколько способов доступа к ней, на знакомство с ней потребуется время и определенные усилия, особенно если Microsoft решит изменить или расширить классы. Для достижения настоящего мастерства в овладении любым языком семейства .NET, да и самой методологией .NET потребуется достаточно глубокое знание библиотеки, нынешняя версия которой содержит около 6,5 тыс. классов.

В некоторых отношениях библиотека классов — это настоящий кладезь функциональности, но в других отношениях это огромная копна сена, в которой приходится искать иголку.

Языки

В Visual Studio .NET четыре языка: Visual C# .NET — новый язык, в определенной мере представляющий собой комбинацию Java и C++; Visual J# .NET — новый и спорный подход к Java; Visual Basic (VB) .NET, который можно назвать новым языком, и Visual C++ .NET — во многом старый знакомый, хотя он и размещен в другом каркасе (буквально). Все языки базируются на общих классах Class Library, поддерживают ее общую систему типов данных (Common Type System) и объектно-ориентированные правила, например, правила наследования, пространства имен (новые в .NET, но уже давно известные в Java) и интерфейсы.

Требование «объектной ориентированности» к языкам в Visual Studio .NET привело к тому, что VB .NET стал намного более объектно-ориентированным, чем предыдущие версии этого языка, поэтому большую часть исходного кода на VB придется переписать, чтобы он соответствовал концепции .NET. Хуже того (или лучше — это с какой стороны посмотреть), VB-программистам придется быстро научиться более строгому языку, который, откровенно говоря, сильно похож на Java. Фактически сейчас, похоже, складывается общее мнение, что большинству программистов, пишущих на VB и C++, следует переходить на C#.

Если в Visual Studio .NET и есть «родной» язык, то это C#. Он создан специально для работы в среде .NET Framework и во многих отношениях воплощает в себе огромный опыт Microsoft в области языков программирования. В нем много от Java и C++, но программисты непременно найдут присущие только ему «особенности поведения» и черты, большинство из которых очень даже неплохи.

Язык J# добавили в Visual Studio .NET в последнюю очередь, и он стал чем-то вроде оливковой ветви мира, посланной в лагерь Java, хотя многие члены последнего увидели в этом нечто совершенно противоположное. Я же склонен считать J# первым из многих языков, адаптированных для работы в среде .NET. По заверениям Microsoft, сейчас в среду .NET переносится более 20 языков, большей частью поступивших от сторонних компаний. Каковы бы ни были достоинства языков в Visual Studio .NET (это слишком сложная для обсуждения здесь тема), весь пакет являет собой огромные изменения в практике программирования с далеко идущими последствиями для уже существующего кода, обучения программистов и даже организации ИТ-компаний, разрабатывающих ПО.

Визуальная среда разработки

Визуальная среда Visual Studio .NET напоминает Web-портал. Она предоставляет не только массу инструментальных окон (по моим подсчетам, их 13), но и подключение к многочисленным доступным через Web сервисам, таким, как Online Concierge и курсы MSDN. Онлайновые функции Visual Studio .NET правильнее назвать сообществом сервисов — или даже уступкой в пропагандистском гамбите. Вообще говоря, рабочее пространство Visual Studio .NET очень легко «перенаселить» лишними элементами, поэтому рекомендую вам использовать наибольшую из доступных плоскостей монитора.

Microsoft выполнила огромную работу по созданию инструментальных средств типа drag-and-drop (перетащить-и-отпустить) для создания стандартных приложений Windows (Windows Forms), Web-приложений (Web Forms), серверных приложений (Server Explorer и Component Designer) и Web-служб. Хотя разработчикам придется многому научиться, в центрах разработки интеграция этих инструментальных средств позволит сократить время на обучение. Это особенно верно в отношении жизненного цикла разработки корпоративного ПО, в котором большинство инструментальных средств Visual Studio .NET смогут работать независимо от языков, задач, решаемых приложениями, и в конечном счете от платформ.

Опытные пользователи найдут среду разработки Visual Studio .NET очень гибкой в настройке — впрочем, не без определенных сложностей. В целом пользовательский интерфейс и элементы поддержки ориентированы на программистов-новичков, а не на матерых профессионалов. Хотя это вопрос субъективных предпочтений и оценок, но среда IBM WebSphere Studio по контрасту с Visual Studio .NET более ориентирована на опытных программистов.

Редакторы

Одни средства редактирования программного кода прекрасно справляются с мельчайшими хитрыми манипуляциями со строками, другие предпочитают быть просто полезными. Редактор кода в Visual Studio .NET относится к последним. В частности, сомнительный код в нем подчеркивается волнистой красной линией (точно так же, как при проверке орфографии в Microsoft Word). Эта функция исключительно полезна для проверки всего файла и поиска изощренных синтаксических ошибок. Кроме того, редактор оснащен такими функциями IntelliSense, как Quick Info (при наведении мыши на переменную отображается ее описание), Word Completion (автозавершение ключевых слов) и автоматическая проверка фигурных скобок. Впрочем, некоторые опытные программисты, считающие все такие «навороты» надоедливой помехой, могут при желании их отключить. Аналогичным образом в XML-редакторе цвет применяется для настройки отображения XML-документов. Редактор поддерживает отображение XML-элементов в сетке, что сильно облегчает добавление новых данных. Кроме того, редактор может генерировать XML-схему на основании документа, хотя эта функция работает очень медленно и не всегда корректно.

ASP и подключения к данным

Предыдущие версии Visual Studio содержали сделанный на скорую руку пакет Visual InterDev, в котором была предпринята попытка связать HTML, Active Server Pages (ASP) и создание сценариев. Новая комбинация ASP.NET и Web-форм существенно улучшена. В частности, вместо объединения HTML, ASP-кода и текста сценариев в единый файл Web-формы позволяют разнести HTML и код программной логики в различные файлы, которые затем можно успешно скомпилировать. Как показали мои эксперименты, компиляция позволяет сократить время отображения большинства динамических Web-страниц на 15—25%.

В Visual Studio .NET управление данными и подключение к ним радикально изменились, чтобы соответствовать более ориентированной на Интернет среде. В частности, практически полностью переписана технология ADO, и в новой версии, которая называется ADO.NET, поддерживается XML и существенно расширены функциональные возможности работы с данными в условиях отключения от источников данных. Эти изменения влекут за собой далеко идущие последствия, что заставит администраторов баз данных и программистов приложить определенные усилия для обновления инфраструктуры и приложений.

Web-службы

Наиболее заметная особенность Visual Studio .NET — это, конечно же, поддержка Web-служб. Для представления данных в .NET Framework по умолчанию используется язык XML, который к тому же прекрасно увязан с протоколом SOAP. Классы Web-служб в библиотеке Framework Library позволяют преобразовывать обычный метод в Web-службу простым добавлением к описанию метода слова WebMethod. Visual Studio .NET автоматически генерирует на языке WSDL соответствующий документ, описывающий Web-службу. Чтобы опубликовать службу (скорее всего в UDDI-совместимом каталоге), достаточно внести небольшие изменения в пространство имен XML и, возможно, в SOAP-код. Клиентская программа, использующая Web-службу, может работать с ней, как с Web-ссылкой (при условии, конечно, что у этой программы есть доступ к нужным классам Web-служб).

Microsoft автоматизировала практически все этапы создания и использования Web-служб. А инструментальные средства проектирования, тестирования и поддержки UDDI в Visual Studio .NET — одни из лучших в своем роде. Программист может практически ничего не знать о SOAP, WSDL и UDDI и при этом создавать работающие Web-службы. Однако в проектах масштаба предприятия, которые предусматривают знание сложных служб, вам потребуется значительный опыт активного использования средств автоматизации в Visual Studio .NET.

Разработка мобильных приложений

Новая грань Visual Studio .NET, которая заслуживает отдельного раздела, — разработка приложений для мобильных устройств. В комплекте разработчика Microsoft Mobile Internet Toolkit есть элементы управления, дополняющие Web-формы, — модули Mobile Internet Designer и Browser Capabilities Module. При помощи этого расширения ASP.NET удается создавать Web-приложения, которые генерируют HTML, компактный HTML или WML (Wireless Markup Language), автоматически определяя целевое устройство. Благодаря возможностям, уже присутствующим в Visual Studio .NET, этот относительно небольшой комплект фактически представляет собой одну из лучших систем разработки программ для мобильных устройств.

Фундаментальные перемены в процессе компиляции

В Visual Studio .NET все дороги ведут к общеязыковой среде исполнения (Common Language Runtime, CLR). Независимо от используемого языка — C++, C#, VB или J# — в конце концов программа преобразуется в формат языка MSIL (Microsoft Intermediate Language — промежуточный язык Microsoft), который интерпретируется CLR-компилятором. MSIL — это объектный код, идея которого в свое время стала популярной благодаря Java. Большинство используемых программных компонентов берутся из библиотеки .NET Framework, которая сама по себе состоит из MSIL-кода. Этот объектный код — после процедур стандартизации и оптимизации — передается для исполнения JIT-компиляторам (just-in-time), которые создаются для конкретных платформ. Таким образом достигается заявленная корпорацией Microsoft поддержка многих языков и платформ. Это разумная стратегия, а время покажет ее жизнеспособность по сравнению с многоплатформностью Java.

Заявления Microsoft о многоязычности и многоплатформности внушают доверие; но время покажет, сможет ли новый продукт по эффективности сравняться с Java.

Плюсы и минусы

Одно из преимуществ использования компилятора времени исполнения — возможность защитить базовые адреса памяти и операционную систему от ошибок и вторжения извне. В Visual Studio .NET такой код называется управляемым (managed code), и его поддерживают C# и VB.NET. Эта концепция похожа на методику «песочниц» в Java, однако в C# существует возможность программировать «незащищенный» код, в котором используются все основные функциональные возможности, точно так же, как в C++. Все это иллюстрирует различия между поддерживаемыми языками и наводит на мысли о потенциальных проблемах версий JIT-компиляторов и библиотек классов — то, от чего так страдает Java.

Объектный код и компиляторы времени исполнения обеспечивают стандартизацию, непротиворечивость, более простое распространение и техническую поддержку, безопасность и переносимость. С другой стороны, такой подход чреват нивелированием функций, ограничением специализации и неудовлетворительной производительностью. Для общих задач разработки приложений эти компромиссы могут быть несущественными. Однако вспомните, к примеру, о Microsoft Visual FoxPro — языке программирования, специально разработанном для создания приложений, работающих с базами данных, и сильно оптимизированным для работы с ядром собственной БД. Эти особенности работы с БД четко отделяют Visual FoxPro от других языков Microsoft. Включение его в .NET Framework потребовало бы перегрузить Framework Library многими классами, не поддерживаемыми в других языках. Поэтому Visual FoxPro 7.0 — это специализированная система разработки программ, которая использует много особенностей .NET, но больше не входит в состав Visual Studio. Аналогичным образом компаниям-разработчикам иногда придется выходить за рамки среды Visual Studio .NET, чтобы добиться нужной узкой специализации.

Тестирование и отладка

Учитывая огромный размер и масштаб Visual Studio .NET, можно было бы ожидать, что отладка и тестирование станут кошмаром, но это не так — за что следует благодарить грамотно созданные интегрированные средства отладки, которые обеспечивают однотипную поддержку приложений всех типов. Хотя настройка тестирования в Web-среде может вызвать определенные затруднения, зато в вознаграждение вы получите тщательно проверенное приложение, что особенно верно по отношению к Web-службам.

Инструментальные средства разработки корпоративных приложений

В дополнение к присутствующим в Visual Studio .NET возможностям уровня предприятия, например, надежной системе отладки, версия Enterprise Architect содержит инструментальные средства поддержки групповой разработки проектов, а также Enterprise Templates (шаблоны предприятий) и систему моделирования Visio. Enterprise Templates значительно улучшены по сравнению с шаблонами в более ранних версиях Visual Studio. Они позволяют автоматизировать работу над стандартными корпоративными проектами и поддерживают наилучшие методы создания архитектур, в том числе подключения к базам данных, свойства форм и корпоративные политики.

Если вы знакомы с Microsoft Visio, вам понравятся инструменты конструирования и моделирования Visual Studio .NET, которые предусматривают использование диаграмм и программирования в Visio. Предоставляется также полная поддержка языка UML (Unified Modeling Language) с применением восьми типов диаграмм и свободной формы. Гибкость Visio-среды подчас вызывает у некоторых дизайнеров желание изменить UML-диаграммы, однако это работа для специалистов — впрочем, как и создание новых шаблонов Enterprise Templates. Я также обнаружил, что инструментальные средства моделирования сравнительно легко «сломать», т. е. нарушить нормальный вид диаграммы.

Хотя некоторые особенности .NET спорны, в большинстве отзывов, даже со стороны конкурентов, отмечается, что над Visual Studio .NET проведена огромная работа. Языки и среда разработки всегда были сильной стороной Microsoft (если хотите, «козырем в рукаве»), и Visual Studio .NET продолжает эту традицию. Коротко говоря, нет никаких технических причин не рассматривать Visual Studio .NET в качестве основной среды разработки корпоративных приложений. В мире найдется очень немного компаний, которые смогут взять от Visual Studio .NET все, на что она способна, — IDE-среду, языки и серверы. IBM, Oracle и Sun Microsystems — каждая из этих компаний предлагает свою систему разработки программ на Java, которая будет достойно конкурировать с Visual Studio .NET. И, конечно же, более мелкие компании станут расширять или устранять недостатки тех или иных элементов Visual Studio .NET.

Нельсон Кинг (Nelson King) — автор девяти книг по программированию приложений баз данных, с 1981 года — профессиональный обозреватель инструментов разработки ПО. Большую часть своего времени он посвящает практической разработке корпоративного ПО. С ним можно связаться по e-mail: nelsonking@earthlink.net.