Обзоры
Microsoft Visual Studio .NET 7.0
0

Microsoft Visual Studio .NET 7.0


О намерении создать новую платформу для Internet-приложений компания Microsoft объявила более полутора лет назад. И вот приходит время, когда до завершения работ над первой версией .NET Platform остаются считанные недели. А вместе с ней увидит свет и новая среда программирования Microsoft Visual Studio .NET 7.0.


Успех идеи зависит от числа ее сторонников. Успех новой платформы во многом определяется числом решений, построенных на ее основе. Популярность ОС Windows получила в немалой степени благодаря тому, что Microsoft сумела заинтересовать разработчиков ПО в создании Windows-приложений. Поэтому, предлагая платформу .NET, Microsoft одновременно дает и инструмент для построения .NET-приложений — Visual Studio.NET. Презентация VSLive!, на которой будет официально представлена финальная версия Visual Studio.NET, состоится в Сан-Франциско только 13 февраля 2002 г., однако фактически работы по проекту должны быть завершены еще в этом году.

Пока что последней версией Enterprise-редакции пакета является Beta 2, но это практически готовый продукт (RC не предполагаются), отсутствуют лишь некоторые разделы документации, да иногда возникают ошибки, что, впрочем, не помешало журналу "PC Magazine" присудить Visual Studio.NET приз Technical Excellence Award за 2001 г. в категории средств для разработки ПО. Давайте попробуем и мы разобраться, что же собой представляет это новое творение Microsoft.

VS 5/6 —> VS.NET

Несмотря на то что VS.NET предназначена в первую очередь для разработки ПО нового типа (т. е. Internet-ориентированного), большинство ее пользователей наверняка будут составлять программисты, ранее работавшие с Visual Studio предыдущих версий — пятой и шестой. Поэтому рассмотрим сначала, как переход на VS.NET согласуется с сохранением приобретенных до этого опыта и наработок. В этом смысле интересны, по крайней мере, два вопроса — как перенести в VS.NET проекты VS 6 и можно ли создавать новое ПО, пользуясь навыками программирования в VS 6, или все же придется переучиваться.

Те, кто переходил с VS 5 на VS 6, наверное, помнят, что эта процедура довольно проста. В большинстве случаев достаточно было только открыть старый проект в новой среде разработки и выполнить перекомпиляцию. Перенести существующие проекты в VS.NET далеко не так легко, причем для каждого языка программирования приходится решать свои специфические проблемы.

Платформа .NET

Microsoft .NET — это универсальная программная платформа. В первую очередь она предназначена для программ, ориентированных на Internet: Web-приложений и Web-служб (Web Services). Первые обеспечивают доступ к ресурсам Web-серверов для пользователей (через Internet-броузер), а вторые — для программ (в формате XML по протоколу SOAP).

Исходные тексты .NET-приложений компилируются в специальный промежуточный код на языке Microsoft Intermediate Language (MSIL) и выполняются в среде .NET Framework, состоящей из виртуальной машины Common Language Runtime (CLR) и библиотеки классов .NET Framework Class Library. .NET Framework скрывает все особенности конкретной операционной системы и, таким образом, позволяет разрабатывать кросс-платформенные (до определенной степени) приложения. Сегодня уже почти готовы версии .NET Framework для FreeBSD и Linux. А компания Halcyon реализовала .NET Framework на Java!

CLR обеспечивает верификацию и компиляцию кода "на лету" из MSIL в команды процессора, управляет памятью (включая автоматическую "сборку мусора"), процессами и потоками, решает проблемы безопасности. Библиотека классов .NET Framework является языконезависимой, т. е. ее могут использовать все .NET-приложения вне зависимости от применяемого языка программирования. В ней содержатся классы Windows Forms для разработки графического пользовательского интерфейса, Web Forms для создания Web-приложений и Web-служб на основе ASP.NET, библиотека ADO.NET для доступа к базам данных, классы для работы с XML, Internet-протоколами FTP, HTTP, SMTP, SOAP и многое другое.

В .NET Framework используется собственная компонентная модель, элементами которой выступают сборки (assembly). Для прямой и обратной совместимости с моделью COM/COM+ в CLR имеется ряд механизмов под общим названием COM Interop, обеспечивающих доступ к COM-объектам по правилам .NET и к .NET-сборкам — по правилам COM. Модель .NET не требует регистрации компонентов в системном реестре Windows. Для работы .NET-приложения достаточно поместить все относящиеся к нему сборки в один каталог. Если же какую-то сборку необходимо использовать в нескольких приложениях, то ее можно зарегистрировать в общем кэше Global Assembly Cache (GAC) с помощью специальной утилиты.

.NET Framework распространяется бесплатно вместе с SDK, в состав которого, помимо уже упомянутых компонентов, входят компиляторы командной строки для новых языков программирования — Visual Basic.NET и C# ("Компьютерное Обозрение", # 39, 2000), а также полная документация по всей платформе с примерами. Загрузить последнюю версию .NET Framework SDK можно с сайта Microsoft.


Visual C++ 6 —> Visual C++.NET

Это наиболее безболезненный переход, поскольку на самом деле Visual C++.NET — не вполне .NET-язык. Он отличается от Visual C++ 6 только поддержкой специальных расширений Managed Extensions. Если их не использовать, то компилятор VC++.NET будет создавать обычные "старые" исполняемые модули, для запуска которых никакой необходимости в .NET Framework нет. Поэтому практически все проверяемые нами проекты (основанные на STL, ATL, MFC) переносились в VS.NET очень просто, без каких-либо затруднений.

Microsoft намеренно сделала Visual C++.NET таким "гибридным" языком именно для поддержки ранее созданного ПО. Его перевод на платформу .NET может выполняться постепенно. Применение Managed Extensions позволяет внутри одного приложения смешивать код, компилируемый в команды процессора, с .NET-кодом, транслируемым в MSIL. Таким образом, можно сравнительно легко добавить к старой программе классы, которые позволят обращаться к ней из .NET-приложений, а уже затем, при необходимости, переделать все остальное.


Visual Basic 6 —> Visual Basic.NET

Этот вариант самый интересный. Язык Visual Basic в мире используют около 12 млн. разработчиков, и программ на нем написано немало. Наверняка многие из них будут адаптироваться для платформы .NET. Предвидя это, Microsoft еще осенью прошлого года составила инструкции, в которых описано, какие изменения необходимо внести в VB 6-проекты, дабы облегчить их дальнейший перенос на VB.NET. Эти инструкции составляют десятки страниц, и выполнить их бывает очень непросто. Все это следствие того, что Microsoft отказалась от 100%-ной совместимости с предыдущей версией, чтобы разработчики на VB.NET могли воспользоваться всеми преимуществами новой платформы. В результате получилась такая картина:

  • Все Web-проекты, а это DHTML-приложения, документы ActiveX и Web-классы, необходимо либо оставить в VB 6, либо переделывать на базе ASP.NET.
  • В VB 6-приложениях для доступа к базам данных могли применяться три технологии — ADO, RDO и DAO. В VB.NET полностью поддерживается только ADO.NET. RDO и DAO можно использовать просто как COM-объекты, но при этом привязку полей базы данных к элементам пользовательского интерфейса придется выполнять вручную.
  • Перенос пользовательского интерфейса также затруднен. В VB 6 для позиционирования объектов на экране и установки их размеров можно работать в логических единицах (twips), физических точках экрана (pixels) или метрических величинах. В VB.NET применяются исключительно pixels, причем правильно конвертируются только VB 6-формы, использующие twips. Не поддерживается функция печати Form.PrintForm. Все операции с буфером обмена требуют полной переделки. Команды рисования Circle, Line и др. также необходимо вручную заменять новыми. В VB.NET отсутствует элемент управления OLE Container, позволявший, например, интегрировать в свои формы такие приложения, как Word и Excel. Желающим иметь такую функциональность придется придумывать другое решение.
  • Автоматическому переносу не поддаются также исходные тексты, использующие позднее связывание (ad hoc-полиморфизм на основе переменных типа Object).
  • Кроме того, множество проблем возникает из-за изменений в архитектуре и синтаксисе самого языка (см. вставку).

В итоге, взвешивая все за и против, приходится сделать неутешительный вывод: большинство проектов, реализованных на VB 6, проще не переносить на новую платформу, а либо оставить как есть, либо перепроектировать и переписать на VB.NET с самого начала.

Отличия языков Visual Basic и Visual Basic.NET

Для того чтобы на Visual Basic можно было создавать полноценные .NET-приложения, его необходимо было изменить. Microsoft воспользовалась подходящим случаем, чтобы кардинально переработать язык, избавиться от устаревших и неоднозначных конструкций, сделать его более стройным и приблизить к другим .NET-языкам. В результате получился Visual Basic.NET (VB.NET), несовместимый с Visual Basic. Перечень всех нововведений занимает десятки страниц, поэтому мы приведем лишь основные.

Добавлено наследование классов, что делает VB.NET по-настоящему объектно-ориентированным языком. Базовый класс может быть только один, зато в качестве такового могут выступать как .NET-, так и COM-классы.

Введена конструкция Try…Catch…Finally для обработки структурированных исключений, хотя почему-то оставлена On Error GoTo.

Классы VB.NET допускают перегрузку методов и свойств (существование одноименных функций с разными аргументами) и их переопределение в производных классах. Добавлены привычные по другим языкам конструкторы и деструкторы.

VB.NET поддерживает работу с интерфейсами. Каждый класс может реализовывать один или несколько интерфейсов.

Появилось понятие делегатов (Delegates) — специальных объектов, хранящих указатель на метод любого класса. Механизм делегирования используется для вызова обработчиков событий и синхронизации многопоточных программ. В COM аналогами делегатов являются Connection Points.

Классы могут иметь свойства и методы, общие для всех экземпляров (в C++ они называются статическими).

Добавлено понятие пространства имен (Namespace).

Серьезным изменениям подверглись типы данных. В качестве всеобъемлющего типа в VB.NET выступает Object (вместо Variant в VB). Целочисленные типы стали более емкими (Integer — 32-битовый, Long — 64-битовый, новый тип Decimal — 96-битовый). Массивы индексируются только с нуля, строки автоматически изменяют свою длину при присваивании им новых значений.

Удалены многие морально устаревшие конструкции, такие, как GoSub, On … GoTo, директивы Def* (DefInt, DefStr и т. п.), Equ, Imp. Wend заменен на End While.

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

Изменились правила описания переменных. В VB. NET конструкция Dim a, b As T эквивалентна Dim a As T, b As T (в VB это не так). Появилась возможность присваивать переменным начальные значения:

Dim a As T = v.

Исчезла директива Set, в связи с чем перестали поддерживаться свойства по умолчанию, не имеющие параметров. В VB 6, например, у объекта Label было свойство по умолчанию Caption, и допустимыми были такие конструкции:

Dim l1 As Label, _
l2 As Label
l1 = "Caption"
Set l1 = l2

На VB.NET аналогичный текст будет выглядеть так (с учетом того, что свойство Caption класса Label в .NET переименовано в Text):

Dim l1, l2 As Label
l1.Text = "Caption"
l1 = l2

В VB 6 операнды бинарных операций And и Or всегда вычислялись, даже если значение первого операнда And равно False, а значение первого операнда Or равно True. Правила вычисления логических выражений стали такими, как и в других языках (C++, C#, J#).

Visual J++ —> Visual J# и Java User Migration Path

Для программистов, разрабатывающих ПО на Java и Visual J++, Microsoft сначала предложила только один вариант перехода на платформу .NET (Java User Migration Path (JUMP) to .NET). Он заключается в переводе приложений на язык C#. Путь довольно-таки трудоемкий, хотя в некоторых случаях упростить его помогают созданные Microsoft специальные программы-трансляторы, позволяющие преобразовывать Java-тексты в C# и байт-код Java Virtual Machine (JVM) в MSIL.

По всей видимости, С# был воспринят пользователями Visual J++ недостаточно горячо (разумеется, официально Microsoft эту информацию не подтверждает), и сравнительно недавно — в начале октября — она выпустила первую бета-версию нового языка программирования Visual J#, преемника Visual J++. Соответствующие добавки были сделаны и в документы по JUMP. Visual J# полностью использует синтаксис языка Java, однако не позволяет создавать программы для JVM. Входящие в поставку компоненты обеспечивают автоматический перенос кода, соответствующего JDK 1.1.4 (как тексты, так и байт-код) на платформу .NET. Поддерживаются также расширения, имеющиеся в Visual J++ (WFC и некоторые классы из com.ms). С Java-апплетами, к сожалению, сделать ничего нельзя, поскольку эта технология пока в .NET отсутствует (Web-приложения могут выполняться только на сервере), но остальные Java-проекты переносятся относительно легко.


Visual InterDev —> Visual Studio.NET

Среда разработки Visual Studio.NET

Преемником Visual InterDev из состава VS 6 является фактически вся VS.NET, поскольку с ASP-страницами можно работать в Web-приложениях и Web-службах, создаваемых на любом из языков — VB.NET, C#, J# или JScript. Проекты Visual InterDev переносятся только постранично, путем добавления в новый VS.NET-проект. Затруднений это не вызывает, но все же ASP-страницы выглядят в VS.NET явным архаизмом. Редактировать код внутри них неудобно, а если это не требуется, то не понятен сам смысл переноса — лучше работать с Visual InterDev.

В целом, если Web-приложение на ASP разрабатывалось исключительно как пользовательский интерфейс для броузера, а вся бизнес-логика была вынесена в отдельный уровень (например, хранимые процедуры SQL Server), то лучшей рекомендацией для перевода такого приложения на .NET будет его полное переписывание, страница за страницей. Благодаря удобным средствам дизайна Web-страниц и отделению серверного кода от HTML-тегов, процесс создания интерфейса существенно ускоряется, поэтому даже весьма объемные сайты удается переделать за короткое время.


Visual FoxPro —> ?

В VS 6 входила также среда Visual FoxPro 6. В первой бета-версии VS.NET присутствовала Visual FoxPro 7, однако затем Microsoft решила разделить эти два продукта. Сейчас финальная версия Visual FoxPro 7 уже готова, подписчики MSDN могут получить ее на CD или загрузить с сайта Microsoft.

Создание новых проектов

Кардинально перестроив базовую архитектуру самой VS.NET и изменив целевую платформу разрабатываемых в ней приложений, Microsoft постаралась сделать так, чтобы пользователи предыдущих версий VS смогли применить свои навыки и опыт, приобретенные ранее.

Доступных проектов стало заметно больше

Во-первых, сохранился все тот же удобный визуальный подход к созданию приложений — Drag & Drop & Double Click: чтобы расширить функциональность программы (добавить элемент управления, запрос к базе данных и др.), достаточно выбрать соответствующий компонент в инструментальной панели, перетянуть его на форму, а затем дважды щелкнуть на нем мышью, чтобы оформить обработчик события. При этом поддерживаются как "родные" компоненты .NET, так и элементы управления ActiveX.

Получается так, что программист, знакомый с VB 6, может создавать Windows-приложения в VS.NET аналогично тому, как он это делал в VS 6: открыть новый проект, нарисовать формы пользовательского интерфейса, написать обработчики (здесь он, естественно, заметит некоторые языковые отличия, но с ними легко справиться, см. вставку), скомпилировать, отладить и создать инсталляционный пакет, куда автоматически вместо 5-мегабайтового VB 6 Runtime войдут 15-мегабайтовый CLR и все необходимые классы. Останется установить приложение на компьютер пользователя (потребуется, правда, Microsoft Installer версии 2.0 или выше, но он распространяется бесплатно). Кроме увеличения размера дистрибутива, никаких видимых отличий не будет заметно. Ни программист, ни пользователь могут даже не задумываться над тем, что они используют платформу .NET. Зато впоследствии, когда возникнет необходимость обратиться к Web-службе или взаимодействовать с другими .NET-приложениями, доработать программы будет совсем несложно.

Во-вторых, указанный подход теперь можно применять как при построении оконных форм Windows-приложений, так и при разработке Web-приложений. Причем язык программирования может быть любым — VB.NET, С# или J#. Это одна из ключевых возможностей VS.NET. Благодаря ей разработка Web-приложений стала значительно проще и нагляднее. Все сложности, связанные с обменом данными между клиентским броузером и Web-сервером, на котором выполняется обработка запросов, берет на себя среда разработки. Программист же может сосредоточиться на дизайне страниц и функциональности приложения.

Появились и новые типы проектов, ранее недоступные для VB-разработчиков. Это консольные приложения и службы для Windows NT/2000/XP. Добавились средства удобного редактирования HTML-, XML- и CSS-файлов. Имеется также возможность разработки Web-приложений для мобильных устройств на языке WML 1.1. Для этого необходимо установить дополнительный бесплатный пакет Microsoft Mobile Internet Toolkit.

Безусловно, самым важным новым типом проектов, которые позволяет создавать VS.NET, являются Web-службы (Web Services). С точки зрения программирования, Web-службы представляют собой весьма специфические объекты, которые должны удовлетворять достаточно сложным требованиям — регистрироваться в базе Web-служб сайта (DISCO), выдавать спецификацию на языке WSDL, принимать запросы из Web в формате HTTP GET, HTTP POST, а также на языке XML по протоколу SOAP, должным образом форматировать возвращаемые значения и т. п. При всем при этом, желая описать процесс разработки Web-служб с помощью VS.NET, как-то не понятно, о чем говорить. VS.NET полностью скрывает от программиста все упомянутые нюансы, так что Web-службы выглядят, как совершенно обычные классы, просто перед методами, доступными для обращения через Web, должен стоять атрибут WebMethod.

Очень удобно, что для отладки Web-службы не обязательно писать программу-клиент — автоматически генерируемая Web-страница дает возможность вызывать методы и видеть возвращаемые ими значения (правда, это заслуга .NET Framework, а не VS.NET). Использование Web-служб в разрабатываемых в VS.NET приложениях также не вызывает никаких затруднений. Их подключение выполняется посредством команды Add Web Reference, которая позволяет выбрать Web-службу из зарегистрированных на локальном компьютере, найти ее в глобальном реестре UDDI (Universal Description, Discovery and Integration) или явно указать ее URL. После этого работать с Web-службой можно точно так же, как и с любым другим объектом, причем со всеми удобствами Intellisense — автоматическим показом списка доступных методов, описаниями параметров и т. д.

Что касается VC++.NET, то в целом для него остается в силе старая технология разработки. Правда, появилась возможность создавать Web-службы (на базе новой библиотеки ATL Server Library или с помощью Managed Extensions), но все же C++-программистам Microsoft рекомендует при разработке .NET-приложений использовать язык C#, а к C++ прибегать только в случаях, когда необходима состыковка со старыми программами.

Удобства и расширения

Собственно, как среда разработки Visual Studio.NET похожа на предыдущую версию, но в ней имеется ряд нововведений и усовершенствований.

  • Наконец-то вместо отдельных оболочек для VB и VC++, которые существовали до VS 6 включительно, а также IDE для VBA Microsoft создала единую интегрированную среду разработки, не зависящую от языков программирования. Благодаря такой архитектуре на сегодняшний день возможности интеграции в VS.NET реализованы уже более чем для 20 языков. Причем одновременно можно работать с проектами, использующими разные языки.
  • Для C# реализована возможность автоматического документирования, создающая на основе определенным образом сформированных комментариев Web-сайт с описанием всех классов, их методов и свойств. К сожалению, для других языков такая функциональность пока недоступна.
  • Интересной функцией является динамическая подсказка (Dynamic Help), которая в процессе работы с исходным текстом автоматически предлагает наиболее подходящие разделы справочника, сортируя их по убыванию релевантности.
  • Опечатка — двоеточие вместо точки с запятой

    При редактировании текста программы может также выполняться фоновая проверка синтаксиса. Фрагмент, в котором допущена ошибка, подчеркивается волнистой линией (как в Microsoft Word).

  • Если компьютер подключен к Internet, VS.NET интегрируется с MSDN Online и выполняет поиск справочной информации прямо на сайте Microsoft. Автоматически обнаруживаются, загружаются и устанавливаются все обновления продукта.
  • Встроенный отладчик позволяет "входить" в SOAP-вызовы, свободно перемещаться между проектами, реализованными на разных .NET-языках, и не-.NET-кодом. К сожалению, в VS.NET недоступна функция Edit & Continue, имеющаяся в VB 6 и VC++ 6 (она позволяет в процессе отладки отредактировать программу, перекомпилировать ее и продолжать отладку).


Поставка

Visual Studio.NET будет распространяться в трех редакциях — Professional, Enterprise Developer и Enterprise Architect. В Enterprise-версии войдут средства для моделирования, проектирования баз данных и интеграции с продуктами семейства .NET Enterprise Servers (Developer — частично, а Architect — полностью). Комплект VS.NET Enterprise Architect (наиболее полная редакция) состоит из пяти CD. Установка проблем не вызывает (кстати, VS.NET не замещает VS более старых версий, поэтому на одном компьютере можно установить, скажем, VS 6 и VS.NET и пользоваться ими одновременно), но для нормальной работы нужны приличный процессор и много памяти (конфигурация Athlon 1200 MHz с 512 МB ОЗУ вполне подходит). Правда, в окончательной версии Microsoft обещает существенно увеличить производительность.

Из VS.NET исключен Visual Modeler. Теперь для работы с UML-диаграммами в комплект поставки входит Microsoft Visio 2002. Появился инструмент для автоматического тестирования приложений Application Center Test. Его, в частности, можно использовать для оценки производительности Web-приложений и Web-служб.

Для приобретения VS.NET Microsoft рекомендует подписаться на MSDN. Специально для новых редакций VS. NET добавлены два пакета — MSDN Professional и MSDN Enterprise. Подписчики смогут получить VS.NET намного раньше ее официального выпуска. Цена и состав вариантов MSDN Subscription можно узнать по адресу msdn. microsoft.com/subscription. Годовая подписка на самый полный вариант — MSDN Universal, включающий VS.NET и Visual FoxPro, все операционные системы и серверные продукты, все SDK и DDK, Office XP, Project, Visio, всю документацию и доступ к онлайновым техническим ресурсам (всего порядка 500 CD) — стоит $2799.


Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: