Гайдар Магдануров
Переход на VB .NET, статья №1
Введение
Статья предоставлена журналом CODE. Ссылка на VBStreets и CODE обязательна.
Введение
Эта статья представляет собой первую часть задуманного мной огромного цикла статей, посвященных переходу от Visual Basic 1-6 к Visual Basic .NET. Данный курс рассчитан на профессиональных программистов на Visual Basic, но не знакомых, или только начинающих свое знакомство с технологиями Microsoft .NET, а также менеджеров и архитекторов проектов, написанных на Visual Basic, которым предстоит решать дальнейшую судьбу уже существующих разработок. Целью курса является предоставление разработчику информации необходимой для быстрого и «безболезненного» перехода на платформу .NET.
Возникновению идеи написания курса послужило практически полной отсутствие литературы, освещающей данный вопрос, на русском языке, а также очень большую инертность разработчиков современного ПО при переходе к новым решениям от корпорации Microsoft. Конечно, этот курс не избавит программиста от необходимости более подробно ознакомится с VB .NET с помощью специальной литературы, но по возможность я постараюсь привести как можно больше материала, снабжая достаточным количеством примеров.
С целью помощи разработчикам ПО на Visual Basic также, к статьям этого курса будут прилагаться ответы на задаваемые вами вопросами, которые могут быть как по обновлению проектов Visual Basic 1-6, так и по самому языку VB .NET. Вы можете задавать вопросы по электронной почте на мой адрес – gaidar@vbstreets.ru, с пометкой «В рубрику VB .NET», либо вы можете задавать вопросы на сайте Visual Basic Streets, который и будет проводить различные мероприятия по подготовке VB разработчиков к переходу на платформу .NET1.
В чем заключается переход на VB .NET
Программисты, привыкшие к тому, что на протяжении последних лет переход от старой версии Visual Basic к более новой происходил достаточно быстро и легко, практически без изменения исходного кода программ, часто задают вопрос – чем же Visual basic .NET так отличается от Visual Basic 6, что проблема перехода так волнует сообщество Visual Basic программистов? Пока не вдаваясь в глубокие подробности, я могу отметить, что новая версия претерпела существенные изменения – сам язык стал более объектно-ориентированным, существенно пересмотрен синтаксис и ушли в прошлое такие наследия прошлых версий, как Go Sub / Return. Изменен формат файлов, с которыми работает среда разработки. Да и в основу положена новая среда выполнения программ – платформа Microsoft .NET, которая предоставляет разработчику воистину огромное количество различных компонентов позволяющих существенно ускорить разработку приложений для Windows и для Internet/Intranet. Изменен подход к обработке исключительных ситуаций, пересмотрено значение некоторых
ключевых слов. Появилась долгожданная возможность для перегрузки функций, встроенная поддержка многопоточности, наследование объектов и многое другое. Вместе с этим ушли в прошлое такие неуклюжие элементы, как DHTML страницы, при работе с которыми конечному пользователю приходилось загружать runtime-библиотеки Visual Basic.
В пример приведу новый синтаксис для структурированной обработки исключений.
Sub Main()
Try
Application.Run(New Form1())
Catch tstException As Exception
MsgBox("Message: " & tstException.Message & vbCrLf & _
"Source: " & tstException.Source.ToString & vbCrLf & _
"HelpLink: " & tstException.HelpLink)
End Try
End Sub
В приведенном примере все возникающие при выполнении приложения исключительные ситуации, возникшие при работе с формой, будут обрабатываться этим обработчиком.
Также удалось избавиться от распространенных ошибок в коде Visual Basic, допустимых в ранних версиях, которые впоследствии трудно было обнаружить. Наиболее ярким примером является возможность создания объектов при объявлении переменных.
Dim obj_rec As New tstObject ' 1
Dim obj_nonrec As tstObject ' 2
Set obj_nonrec = New tstObject ' 3
Казалось бы, что строка 1, равноценна строкам 2 и 3, но это совсем не так. Допустим, что обе переменные obj_rec и obj_nonrec будут установлены в Nothing. При этом при последующем обращении к этим переменным, obj_rec будет вновь создан, а obj_nonrec нет, что приведет к ошибке, которую не очень просто обнаружить. В Visual Basic .NET эта проблема решена методом «в лоб», т.е. этот синтаксис абсолютно равноценен и при обращении к уже уничтоженным объектам они не будут восстановлены автоматически.
Также изменения, затронули сами типы переменных. Integer теперь представляет собой 32-битное число, а Long – 64-битное. Для обратной совместимости введен новый тип – Short, представляющий собой 16-битное число, соответствующий Integer в предыдущих версиях языка. Также все типы стали объектными! Т.е. больше нет просто числа или просто строки – есть объект, содержащий значение этого числа или этой строки. Поэтому на смену типу Variant пришел тип Object2. Более подробно новшества в языке будут рассмотрены в следующей статье3.
Сам внешний вид среды разработки претерпел существенные изменения. Теперь все продукты семейства Visual Studio доступны из единой оболочки, что также послужило своей цели – благодаря стандартам .NET все языки Visul Studio позволяют создавать компоненты, которые можно использовать в других языках не прикладывая особых усилий, что также открывает потрясающую возможность разрабатывать одно приложение на разных языках! Сравнение внешнего вида IDE Visual Basic и Visual Basic .NET приведено не Рис.1.1 и Рис. 1.2 соответственно.
А нужен ли переход?
Прежде, чем необдуманно бросаться в дебри различий между Visual Basic и Visual Basic .NET, необходимо решить – стоит ли переводить на новую платформу уже работающие приложения. Для этого необходимо оценить, какие преимущества получат разработчики при дальнейшем развитии проекта, а также какое время займет перевод на Visual Basic .NET существующий проектов. Возможно, будет проще написать новую версию программного продукта на Visual Basic .NET, чем пытаться перенести существующий код. Для этого нам необходимо последовательно рассмотреть каждый конкретный проект по приведенной ниже схеме.
Какие преимущества дает переход Visual Basic .NET?
Прежде всего мы получаем доступ к огромному множеству функций предоставляемых Microsoft .NET Framework. Если раньше приходилось тратить часы и даже дни на решение различных задач связанных с работой с переменными, массивами и коллекциями, обработкой строк, управление ресурсами, работой с различными файлами и многим другим, то теперь огромное множество необходимых функций уже реализовано разработчиками корпорации Microsoft. .NET Framework включает в себя несколько тысяч классов, а значит несколько сотен тысяч строк кода, которые не придется писать вам и вашим коллегам! Особо стоит отметить такие особенности Visual Basic .NET, как использование Windows Form – новой системы для создания форм, пришедшей на смену формам Visual Basic 6. Это позволило усовершенствовать инструмент визуального создания и редактирования форм, а также добавить множество новых возможностей, таких как автоматическое изменение размеров и положения элементов управления при изменение размеров формы, что позволило существенно сократить количество кода отвечающего за размещение элементов на форме. Возможность наследования визуальных компонентов позволяет создавать классы, наследующие стандартные свойства и методы, с целью расширения их функциональности, также вам не придется создавать в дизайнере форм похожие формы – достаточно создать основу и далее добавлять и изменять элементы уже в коде каждой конкретной формы. Реализация технологии GDI+4 позволяет использовать множество интересных графических эффектов, например прозрачность.
Также, одной из привлекательных новинок в Visual Basic .NET является встроенная поддержка интернационализации приложений – разработчик может с легкостью установить размеры форм и элементов управления для разных языков, которые может использовать пользователь.
Но наиболее привлекательным мне представляется поддержка разработки проекта на разных языках. Благодаря Microsoft .NET Framework, сгладившей различия между типами в различных языках семейства Visual Studio, компоненты, написанные на одном из языком, например C#, легко могут быть использованы в другом, например Visual Basic .NET. При этом больше не придется бороться с несовместимостью, которая присутствовала раньше из-за «несогласованности» стандартных типов. Это очень удобно при наличии в команде программистов на других языках, что позволит использовать все преимущества различных языков в одном проекте.
И при всем при этом, язык по-прежнему остался старым добрым Visual Basic. Таким же нечувствительным к регистру символов в названии функций и переменных, с давно знакомыми ключевыми словами и синтаксисом. Несмотря на все изменения Visual Basic .NET – это все тот же Visual Basic!
Каких усилий потребует переход?
Из-за необходимости создания новой концепции и введения необходимых изменений, которые были кратко рассмотрены выше и, которые, я надеюсь, мы подробнее рассмотрим в дальнейших статьях, разработчикам Microsoft пришлось многое изменить, но они предусмотрели возможность перехода с Visual Basic 6 к Visual Basic .NET. Поэтому в Microsoft Visual Studio .NET5 включен такой полезный инструмент как Updrage Wizard, который позволяет автоматизировать процесс перехода. Постойте, постойте, скажете вы. Зачем же мне пришлось все это прочесть, если я мог не задумываясь конвертировать проект? К сожалению не все так безоблачно, как может показаться. К сожалению, ни один инструмент не сможет проделать за вас вашу работу! Поэтому Upgrade Wizard сделает за вас большую часть работы6, но вам придется приложить немало усилий, чтобы заставить проект работать. Работе с этим инструментом будет посвящена отдельная статья, здесь же я планирую лишь заставить принять решение о необходимости (или отсутствия таковой) в переходе.
Для начала задумайтесь насколько читабелен ваш код. Именно читабелен, поскольку программисты Microsoft, при создании Upgrade Wizard, придерживались идеи максимальном сохранении первоначального кода и комментариев. Поэтому я настоятельно рекомендую добавить комментарии везде, где это может вызвать затруднения у стороннего разработчика. Приглядитесь, придерживались ли разработчики проекта одного стиля кодирования и именования объектов, потому что далее это может вызвать дополнительные сложности, особенно при анализе отчета Upgrade Wizard по вашему проекту. Задумайтесь над кодом, который может быть трактован неоднозначно, для этого проще попросить другого разработчика, не имевшего отношения к этой части проекта, просмотреть код и постараться определить, какие ваши ходы ему не очень понятны и требуют пояснений. Учтите, что Upgrade Wizard не сможет разобраться с теми «неоднозначностями» в трактовке вашего кода с которыми не смог разобраться программист.
Оценив все это, вы можете представить примерный объем работы, которую потребуется провести вам, чтобы привести проект после «обработки» Upgrade Wizard в рабочее состояние.
Заключение
Эта статья представляла собой лишь маленький обзор, который должен был натолкнуть вас на размышления. Все, что было описано выше будет значительно расширено и углублено по ходу выхода новых статей цикла. Но все же, мне хотелось бы, чтобы технологии Microsoft .NET заинтересовали вас и заставили запустить Visual Studio .NET и открыть один из ваших проектов, чтобы ознакомится с возможностями Upgrade Wizard. Я понимаю, что у вас сразу же возникнет множество вопросов, которые не всегда легко разрешить самостоятельно, даже имея под рукой MSDN. Поэтому я повторюсь – буду рад постараться ответить на ваши вопросы в меру моих возможностей.
1 Сайт планирует полное обновление в октябре 2003 года, после чего откроется специальная рубрика по Visual Basic .NET, а также канал поддержки программистов на Visual Basic, решивших перейти на платформу .NET. С целью привлечь большее внимание к .NET также будут проводиться различные конкурсы, которые также будут освещаться в периодических изданиях.
2 Разумеется это не одно и то же. Но «идеологически» эти типы сходны между собой, поскольку позволяют присваивать переменной такого типа значению любого другого типа. Причем в Visual Basic .NET это не вызывает удивления – поскольку именно от Object наследуются все остальные типы.
3 Это слишком сильно сказано, на самом деле в пределах этого курса я постараюсь рассказать в основном о тех новшествах, которые являются существенными при планировании и осуществлении перехода от предыдущих версий.
4 Узнать больше о GDI+ вы можете на сайте http://msdn.microsoft.com. Также большое количество примеров по использованию GDI+ вы можете найти на замечательном сайте, посвященном графике и интерфейсу – http://www.vbaccelerator.com.
5 Upgrade Wizard включен не во все варианты поставки Visual Studio .NET, подробнее о различиях вы можете узнать на http://www.microsoft.com/vstudio/.
6 Я не рискну дать оценку работы выполняемой мастером в процентах, как это делают многие авторы, поскольку процент такой работы очень сильно зависит от каждого конкретного проекта.
Вверх