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

В предыдущих версиях Visual Studio несколько независимых языков программирования объединялись в едином пакете с небольшим числом общих характеристик. Visual Studio .NET обеспечивает каркас общей среды, на которой базируются несколько языков. Для объектно-ориентированных программистов перемена очевидна: независимо от выбора языка программирования и вспомогательных инструментальных средств вы получаете программу, скомпилированную в стандартный объектный код, основанный на огромной библиотеке классов каркаса .NET Framework. Среда Visual Studio .NET также больше, чем предыдущие версии, ориентирована на работу в Интернете — серьезное внимание уделено в ней Web-службам, XML и распределенным приложениям. Как и было обещано, эта версия Visual Studio коренным образом отличается от предшественников, и на осознание последствий всех перемен программистам придется потратить немало времени.

Одно можно сказать наверняка: Visual Studio .NET действительно работает. Она позволяет создавать приложения и Web-службы, которые поддерживают множество функций и легко масштабируются. Что разработчикам пока неизвестно, так это границы возможностей и масштабируемости. Visual Studio .NET позволяет действительно качественно делать многие вещи, например, динамические Web-страницы и распределенные приложения — в этой среде они создаются намного проще и получаются более надежными. Естественно, ключевым остается вопрос: по сравнению с чем? С предыдущими версиями Visual Studio? С Java? Можно сформулировать вопрос и посложнее: более надежные по сравнению с основной целью Visual Studio — новым миром Web-служб?

Однако прежде, чем перейти к изучению новинок Visual Studio .NET, позвольте мне еще раз подчеркнуть, что Visual Studio остается набором универсальных инструментальных средств разработки ПО — клиент-серверных приложений, автономных Windows-приложений, даже низкоуровневых программ, а также Web-служб и Web-приложений. Visual Studio продолжает обеспечивать все возможности, которые были доступны в предыдущих «инкарнациях», но основной вектор изменился, и заметно.

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

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 поддерживает Visual Basic .NET (VB.NET), C# (C-sharp), C++ и J# (J-sharp). C# — совершенно новый язык, а J# представляет собой промежуточный язык, пришедшей на смену версии языка Java корпорации Microsoft (J++). VB.NET настолько изменился, что его можно считать практически новым языком. По большей части языки Visual Studio используют обновленную IDE-среду, а для создания программных компонентов и элементов пользовательского интерфейса применяются один или несколько из трех форматов: Windows-формы (базовые Windows-окна), Web-формы (Web-страницы с поддержкой ASP.NET) и Web-службы. Во всех языках применяется .NET Framework Classes — огромная библиотека приблизительно из 6500 классов, которые обеспечивают поддержку «родных» для среды Visual Studio функций. Независимо от языка весь исходный код в Visual Studio .NET пропускается через компилятор, который генерирует объектный код общеязыковой среды исполнения (Common Language Runtime, CLR). Среда CLR поддерживает и такие функции, как управление памятью (например, «сборка мусора»), отладка, управление общими типами данных и JIT-компиляторы (just-in-time), которые генерируют двоичный код для конкретной платформы.

Можно, как это сделал я, суммировать возможности Visual Studio в одном абзаце, но вы упустите некоторые очень важные моменты. Вы вправе выбрать язык, целевую среду (локальная сеть, интрасеть, Интернет, персональный компьютер или мобильное устройство), даже платформу (UNIX, Linux или Windows), а Visual Studio .NET должна создать соответствующий код. Я сказал «должна», потому что пока еще она этого не умеет.

Глобальная сеть .NET

С точки зрения предприятия многое из того, что делает Visual Studio .NET и всю идею .NET привлекательной, пока не готово. Visual Studio .NET — компонент для программирования в .NET Framework, инструмент разработчика, который во многих отношениях представляет собой версию 1.0. Она нуждается в исправлении и расширении; в частности, для разработки корпоративных приложений нужна поддержка других языков и производительных компиляторов для платформ, отличных от Windows. Кроме того, требуется обеспечить поддержку других уже объявленных компонентов .NET Framework, прежде всего серверных продуктов: недавно выпущенного Commerce Server 2002, .NET Server (серверная версия Windows XP, должна выйти позже в этом году), .NET Biz Talk Server (.NET SDK уже выпущен), Host Integration Server, Exchange Server и SQL Server 2003 (в настоящее время находится на стадии бета-тестирования).

Нынешняя и будущая интеграция этих серверов с .NET Framework очень важна. Я уже понял это, поработав с Commerce Server 2002, который (наконец-то!) предоставляет доступ к самым «потаенным» процедурам Pipeline Manager посредством классов .NET Framework. А тем временем доступ с применением инструментов Visual Studio .NET позволил бы собрать «под одной крышей» множество серверных функций (например, базу данных и бизнес-правила), не прибегая к услугам целой армии приглашенных специалистов.

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

XML и Web-службы

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

Другие ключевые для Microsoft стандарты уже довольно популярны — это протокол SOAP (Simple Object Access Protocol), UDDI (Universal Description, Discovery and Integration) и язык описания Web-служб WSDL (Web Services Description Language). Я знаю, для многих поддержка корпорацией Microsoft этих «открытых стандартов» покажется очень подозрительной, и это неудивительно — Microsoft умеет манипулировать стандартами (кстати, сейчас очень интересно наблюдать «танцы с бубнами» вокруг комиссии по обеспечению взаимодействия Web-служб —Web Services Interoperability Organization (WS-I). Microsoft полагает, что комбинация ее частных Windows-служб и стандартов Web-служб станет средством достижения совместимости слабо связанных между собой платформ. Это конкурентная позиция корпорации, и она противопоставляется заявлениям Sun о «мобильности» Java.

Пусть победит сильнейший

Все задаются вопросом, действительно ли .NET лучше, чем Java (J2EE). Для многих предприятий это вопрос философии, ресурсов и выбора оптимального времени использования технологий (если эти предприятия не настолько огромны, чтобы без проблем использовать обе технологии). У этих подходов есть как фундаментальные различия, так и сходство, и я думаю, что многие разработчики станут взвешивать, что важнее в многоплатформной среде предприятия — мобильность (Java-код) или совместимость (XML-данные и поддержка многих языков). Казалось бы, стоит ожидать жесткой конкуренции, которая на руку разработчикам, хотя в аргументах за и против очень легко запутаться. Наверняка борьба развернется и на поле выбора стандартов, и если одному из наборов стандартов удастся выжить, это будет победой всего сообщества разработчиков соответствующего ПО. А вот на вопрос, какая из технологий в итоге победит, ответ мы получим нескоро.

Microsoft Visual Studio .NET и .NET Framework хорошо продуманны и тщательно сконструированы. Разработчики ПО оценят доступность классов .NET Framework (хотя придется еще очень многому учиться) и разумность разработки программ в .NET Framework. Однако .NET пока не закончена, несовершенна и не решает всех задач. Собака зарыта в деталях, о которых я расскажу во второй части обзора версии Enterprise Architect Edition среды Visual Studio .NET.

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