|
Все новости от 22 сентября 1998 г.
Visual Basic 6.0 - от хорошего к лучшему

Введение
Некогда инструмент программирования общего назначения, VB получил развитые средства работы с Интернетом и базами данных, и теперь это продукт, ориентированный на корпоративный рынок.
Похоже, в последние несколько лет Microsoft сосредоточила внимание почти исключительно на Интернете, что проявилось даже в таком продукте, как Visual Basic. Версию 6.0 этого чрезвычайно популярного языка программирования Microsoft оснастила целым рядом средств, позволяющих создавать веб-приложения. Функциональные возможности, уже реализованные в виде дополнений для VB5, в VB6 стали еще богаче и лучше интегрированы.
В результате усилий по введению в VB6 поддержки Интернета и баз данных было создано "корпоративное издание" продукта (Enterprise Edition). Оно в значительной степени отличается от прежних версий VB, где основное внимание уделялось ядру пакета - собственно языку программирования, инструментальным компонентам и интегрированной среде разработки приложений (IDE). Почти все усовершенствования Professional Edition направлены на то, чтобы сделать продукт еще более полнофункциональным и привлекательным для широкого рынка.
Если сравнивать версии VB6/Pro и VB5, то, за исключением усовершенствований в отношении веба, разница не столь разительна, как при выпуске предыдущих версий. (Хотя наши мнения здесь разделились.) VB3 был крупным шагом вперед по сравнению с VB2. Эта версия позволила продукту войти в число серьезных инструментальных средств программирования и значительно расширить свой рынок. VB4 также претерпел существенные изменения и дал нам средства перехода от 16-разрядных приложений Windows к 32-разрядным. В VB5 было много усовершенствований, он обеспечивал заметно более высокую производительность и предлагал долгожданный компилятор, преобразующий программу во внутренний машинный код. В ядро VB6, несомненно, также внесены значительные изменения. Тем не менее, можно отметить и несколько ухудшений. Первое - это цена: VB6 примерно на 10% дороже, чем VB5. Новая копия VB6/Pro обойдется покупателям в 549 $ против 499 $ (по каталогу). При обновлении на VB6/Pro прежних версий продукта разница составляет уже 15%: 229 $ вместо 199 $ для VB5/Pro. Причем фактическая цена upgrade-версии равна 279 $: чтобы вернуть 50 $, придется воспользоваться купоном. Справедливости ради стоит отметить, что цена VB в течение многих лет неуклонно возрастала, намного превысив реальную розничную цену upgrade-версии VB3/Pro, составлявшую 80 $.
Раз уж мы занялись данной темой, следует подчеркнуть практическую сторону обновления Visual Basic. Переход от версии к версии традиционно создает проблемы для разработчиков. Всегда требуется вносить в программный код какие-то изменения или настраивать его в новой среде. Лишь после этого программа на VB будет корректно работать в новой версии. Переход на новую версию с предпоследней (с пропуском промежуточной) усугубляет подобные проблемы, удваивая число необходимых изменений. Об этом должны знать все, кто регулярно (или профессионально) работает с VB, придерживаясь последних версий. Таким образом, чтобы поспеть за Microsoft, вам, как одному из членов огромного сообщества программистов, применяющих VB, придется заплатить определенную цену.
В первую очередь мы рассмотрим средства VB6, имеющие отношение к Интернету, а затем обратимся к компонентам ядра новой версии VB.
Уилл Фасти - независимый консультант из Балтимора (штат Мериленд)
Статья опубликована в разделе Tech Feature выпуска журнала PCMagazine от 6 октября 1998 г.
Поддержка Интернета
Microsoft умеет демонстрировать свои достижения. На основе примеров, предлагаемых в руководстве VB6 Reviewer's Guide, нам удалось создать программы меньше, чем за 15 минут, и результаты оказались впечатляющими. Как говорил волшебник из страны Оз: "Не обращайте внимание на человека за шторой". Примеры Microsoft решаются быстро и легко, поскольку наиболее сложные этапы создания веб-страниц для этих проектов (а также некоторые компоненты самих проектов) уже выполнены. Процесс заключается в построении веб-страниц с помощью Microsoft Visual InterDev или некоторого другого инструментального средства и применения VB для привязки к этим страницам программного кода Visual Basic или элементов управления ActiveX. Другими словами, вся работа целиком выполняется в VB. Подобный подход существенно отличается от таких инструментальных средств разработки, как Clarion компании Topspeed, где приложение целиком преобразуется в интерактивные веб-страницы одним щелчком мыши. В VB применяется компонентный подход: с помощью HTML-кода веб-страниц вы создаете связываемые с ними компоненты VB.
Существует два метода построения приложений VB на основе веба; оба они представлены как новые типы приложений VB. В одном случае для создания приложений на базе Internet Information Server (IIS) используется новая объектная модель WebClass, а другой предусматривает средства соединения кода VB с элементами управления ActiveX через объектную модель Dynamic HTML (DHTML). Обоим методам свойственны некоторые специфические для Microsoft особенности. IIS представляет собой продукт Microsoft, включенный в состав Windows NT Server. Таким образом, приложения VB на базе IIS будут функционировать на любом веб-сервере под NT. DHTML не является стандартом Интернета, по крайней мере, пока, поэтому данный подход требует от пользователя применения для просмотра таких веб-страниц браузера Microsoft Internet Explorer (IE) версии 4.01.
Чтобы приступить к созданию приложения на базе IIS, нужно выбрать в диалоговом окне New Project опцию IIS Application. На Рис. 1 показано окно проектирования при создании простого приложения из руководства Reviewer's Guide. Approved, Denied и Login - это элементы HTML-страниц, созданные вне VB. В Login для сбора регистрационной информации пользователя, вводимой им при просмотре веб-страницы и переходе на веб-страницы Approved (Принять) или Denied (Отклонить), определено событие Submit. Правая часть окна проектирования показывает все дескрипторы HTML соответствующей страницы, включая кнопку Submit. VB обновляет веб-страницу, чтобы связать кнопку Submit с кодом обработки события. В продукте содержатся и средства тестирования данного приложения: после нажатия кнопки F5 (для выполнения приложения) запускается браузер IE4, показывающий соответствующую веб-страницу.
Чтобы приступить к созданию приложения на языке DHTML, нужно выбрать в диалоговом окне New Project опцию DHTML Application. На Рис. 2 представлено окно проектирования при создании приложения для примера из руководства Reviewer's Guide. В данном примере новый, разработанный Microsoft элемент управления ActiveX DateTimePicker включен в форму ввода заказа рядом с меткой Ship Date (Дата поставки). Это делается буксировкой элемента управления из панели инструментов ToolBox в веб-страницу в правой части окна проектирования. Для вывода текстового сообщения, подтверждающего допустимость выбранной даты, программный код добавляется к событию Click элемента DateTimePicker. Левая панель окна проектирования показывает компоненты, составляющие страницу DHTML, включая добавленный нами элемент DateTimePicker. Как и в случае приложения IIS, тестирование данного приложения представляет собой интегрированный процесс.
Обратите внимание, что на Рис. 2 большинство элементов управления в панели инструментов ToolBox заблокированы. Это вызвано тем, что поставляемые с VB базовые элементы управления - это не элементы ActiveX, а жестко запрограммированные элементами управления VB. Между тем, с приложением DHTML будут работать только элементы ActiveX.
Несмотря на простоту выполненных нами примеров подобный подход вовсе не столь прост, как пытается нам внушить Microsoft. Нужно понимать принципы, лежащие в основе создания веб-страниц, и иметь некоторое представление о HTML. Кроме того, необходимо уметь визуализировать отношения между информацией, заданной разработчиком, и ранее созданными веб-страницами. Для построения приложений IIS и DHTML нужно разбираться в объектной модели VB, и, конечно, уметь создавать веб-страницы, к которым будет подключаться программный код VB. Мicrosoft проделала хорошую работу по интеграции средств проектирования в среду VB IDE, благодаря чему по крайней мере некоторая часть задачи выполняется визуально и не связана с программированием. Между тем, нужно разобраться с деревьями в левой части окон проектирования и понять, что они означают. Короче, краткость наших описаний дает не совсем верное представление о внутренней сложности разработки интернет-приложений с помощью VB.
Базовые компоненты
VB6/Pro поставляется на трех CD. Один диск содержит сам VB, а другие два - MSDN-издание (Microsoft Developer Network) программного обеспечения Visual Studio. На компакт-дисках MSDN находятся все справочные файлы. Процесс инсталляции усложнился: число шагов увеличилось, и требуется несколько раз перезапустить систему. Сначала инсталлируется сам VB6, затем MSDN. Наконец, предлагается возможность установки различных служб, таких, как серверные расширения Microsoft FrontPage 98. Довольно трудно оценить, сколько при этом используется пространства на диске, так как компоненты помещаются в разные папки, но можно ожидать, что для типовой инсталляции потребуется от 100 до 150 Мбайт. Весь процесс занимает около 20 минут. В последних версиях продуктов Visual Studio выводится предложение удалить предыдущие версии. Если воспользоваться им, то время инсталляции увеличится. Microsoft не рекомендует устанавливать в одной системе VB6 и предыдущие версии, но мы не заметили никаких проблем из-за присутствия на одном компьютере "профессиональных" изданий VB4, VB5 и VB6.
Как видно на рис. 1 и 2, по сравнению с VB5 среда IDE не изменилась, но появились два новых пункта меню - Query и Diagram, - обеспечивающие более прямое управление построением и обслуживанием запросов к базам данных, а также проектирование и создание диаграмм самих БД. Некоторые дополнения IDE, без сомнения, можно только приветствовать. Между тем, пункты Query и Diagram действуют лишь при установлении обмена данными с сервером БД, таким, как SQL Server, DB2, Sybase или Oracle. Для приложений Jet (широко распространенных среди разработчиков VB) пункты Query и Diagram остаются недоступными.
Важное новшество - переход от WinHelp к HTMLHelp, хотя его и нельзя однозначно считать изменением к лучшему. Качество справочной системы VB ухудшается, начиная с версии VB4, в которой сократилось число примеров; в VB5 применяются ссылки на многочисленные справочные файлы. Обе версии кишат некорректными гиперссылками. Все эти проблемы присутствуют и в VB6.
Для среднего программиста тенденция к сокращению числа примеров - сущее бедствие. Сначала VB содержал примеры применения практически всех своих средств. Это давало ценную информацию для изучающих VB и для программистов, осваивающих новые возможности. Многие развитые функции VB действительно трудно представить в кратком примере, но ценной была бы и демонстрация более простых вещей, однако такие примеры все чаще отсутствуют.
На первый взгляд, ссылки на справочные файлы кажутся неплохой идеей, но ее реализация на практике просто ужасна. Проблема в том, что теряется контекст. Например, если в одной системе инсталлированы VB5 и Microsoft Office, то ссылки в справочных файлах VB5 могут привести вас в справочную систему MS Access. Спасает лишь то, что при работе с WinHelp можно явно указать, какой именно справочный файл вам нужен. В VB6 при просмотре справки вы имеете дело с полным набором справочных файлов Visual Studio, а это более 800 Мбайт информации. Здесь уже нельзя отделить одну справочную страницу от другой, поэтому активизация ссылки на тему VB, которая, как следовало бы ожидать, ведет к дальнейшей информации по VB, может перенести вас к аналогичной по названию теме, не имеющей с VB ничего общего.
Наш любимый пример на эту тему - поиск справочной информации по поводу программного способа извлечения номера версии Visual Basic. Как ни странно, VB не предлагает для этого никакого синтаксиса, однако следование по ссылкам может привести к примеру Version Property Example, где вы найдете оператор Debug.Print Application.VBE.Version. Звучит неплохо, но оказывается, что данный синтаксис специфичен для Visual Basic for Applications (VBA) и применяется для определения версии VBA хост-приложения (например, MS Word). Между тем, вы не обнаружите никаких указаний на то, что все это не имеет отношения к VB6.
Включение в продукт полного справочника по Visual Studio желательно лишь для тех, кто углубленно занимается VB. Microsoft попыталась решить эту проблему, создав подмножества справочной информации. Их легко выбрать с помощью комбинированного списка. Например, выбор Visual Basic Documentation изменяет предметный указатель таким образом, что элементы, не имеющие отношения к VB, становятся недоступными (рис. 4), выделяя информацию, специфическую для VB.
Лучше было бы просто скрыть не относящиеся к VB элементы, поскольку предметный указатель с записями для всех элементов Visual Studio просто огромен. Экран становится заполненным недоступными (тусклыми) элементами с редкими включениями тем по VB. Для подмножеств свойственны другие характерные проблемы, иллюстрируемые на рис. 5. Здесь выводимая на экран справочная тема VB отсутствует в оглавлении подмножества VB, хотя можно видеть и то, и другое.
Проблемы со ссылками усугубляются с увеличением размера справочных файлов от версии к версии. С добавлением Visual Studio ситуация стала еще хуже. Найти информацию другими способами при некорректных ссылках невозможно. Вы будете искать ее часами, но страницы, на которую, по идее, должна указывать ссылка, нигде не обнаружите. Если же вам кажется, что мы слишком придираемся к справочной системе, имейте в виду, что к VB больше не прилагаются печатные руководства. Их можно приобрести отдельно, но это обойдется недешево. По мнению Microsoft, основным источником информации должна быть электронная документация. Конечно, в этом нет ничего плохого, если эта документация исчерпывающая и хорошо оформленная.
Одно полезное средство, впервые появившееся в VB5, но редко упоминаемое в прессе - контекстно-зависимая справочная система, доступная из Object Browser. Большинство пользователей VB знакомы с возможностью доступа к ней щелчком правой кнопкой мыши на имени в исходном коде программы и выбора из меню пункта Definition. Для переменных и определяемых пользователем функций такое действие выводит их определение. Для ключевых слов и встроенных элементов VB5 и VB6 запускается средство просмотра объекта VB Object Browser, которое показывает членство данного элемента в классе и его синтаксис (рис. 6). При этом щелчок правой кнопкой мыши выводит другое меню, содержащее ссылку на справочный файл. Многие пользователи не сознают, что для доступа к справочнику достаточно просто щелкнуть мышью.
Переход от VB5 к VB6
В каждой новой версии VB есть некоторые изменения, вынуждающие разработчиков выполнять определенную работу по преобразованию своего проекта. В прошлом это означало изменения в исходном коде, такие, как модификация элементов управления, синтаксиса VB и отдельных методов. К счастью, при переходе от VB5 к VB6 этого фактически не требуется. Нам удалось преобразовать в VB6, скомпилировать и выполнить десяток небольших аплетов и две крупные рабочие системы без каких-либо изменений в коде приложений. Такую возможность можно считать важным улучшением.
Между тем, мы были очень разочарованы, вновь встретившись с одной крупной проблемой, с которой сталкивались при переходе от VB4 к VB5. Если в приложении VB5 используются любые общие элементы управления Windows, такие, как ToolBars, ImageLists или StatusBars, то переходу к новой версии нужно уделять особое внимание. В VB5 эти (и другие) элементы управления содержатся в файлах COMCTL32.OCX и COMCT232.OCX, а в VB6 - в файлах COMCTL.OCX, COMCTL2.OCX и COMCT332.OCX. Регистрируемому в Windows элементу управления присваивается так называемый глобально уникальный идентификатор GUID (Globally Unique Identifier). Если посмотреть на проект VB в текстовом редакторе, то видно, что в ссылках на файлы OCX используются не их имена, а идентификаторы GUID - длинные последовательности шестнадцатиричных цифр с включенными в них несколькими минусами. Проблема в том, что в VB5 и VB6 эти идентификаторы GUID общих элементов управления Windows различны.
Если при переходе к версии VB6 вы продолжаете использование элементов управления VB5, то приложение будет работать нормально. Если же возникает подозрение, то VB5 при преобразовании проекта VB4 спрашивает, желаете ли вы обновить проект. При положительном ответе (Yes) все общие элементы управления Windows превращаются в Picture Box, поскольку VB не может связать идентификаторы GUID старых элементов управления с их новыми версиями. Наша бета-копия VB6 задала тот же вопрос и вела себя аналогичным образом, но Microsoft утверждает, что в рабочей версии продукта такое поведение будет изменено. Корпорация намерена предоставить пользователям небольшую программу (она сама написана на VB), которая просматривает проект VB5 и корректно изменяет идентификаторы GUID. Этот конвертер (у него пока нет названия) выполняется перед загрузкой проекта в VB6. Мы проверили его бета-версию - она работала превосходно. К моменту начала поставок новой версии VB Microsoft планирует (но не обещает) разместить эту программу на своем веб-сайте.
Несмотря на наличие данной проблемы при переходе от VB4 к VB5, Microsoft не исправила ее даже к моменту завершения процесса бета-тестирования VB6. В будущем данное преобразование станет частью автоматизированной загрузки проекта VB6 в VB7, или, если нам повезет, Microsoft предложит его уже в составе пакета корректировок Service Pack.
Производительность
Производительность продукта улучшается с каждой новой версией Visual Basic. Microsoft указывает несколько факторов повышения производительности VB6. Например, доступ к данным ускорен в результате "усовершенствования драйверов БД и компонентов доступа к данным". Мы проанализировали рабочие приложения, на основе БД Jet (DAO), и не заметили никаких заметных улучшений. Между тем, учитывая явную заинтересованность Microsoft в обеспечении взаимодействия с такими СУБД, как Oracle и ее собственная SQL Server, мы подозреваем, что значительная часть усовершенствований относится именно к данной области, но для этой статьи мы не тестировали подобные средства. Microsoft заявляет также, что усовершенствован процесс обработки форм, в частности, их загрузки. Подобные возможности уже претерпели улучшения в VB5 и стали одним из наиболее сильных доводов в пользу перехода на новую версию продукта (даже более сильных, чем наличие компилятора). Что касается VB6, то мы не заметили здесь повышения производительности при работе с формами. Более того, с более крупными и сложными формами продукт может демонстрировать ухудшение производительности.
На одной и той же системе мы сравнивали время, необходимое для загрузки VB6 и проекта, с временем загрузки VB5 с таким же проектом. VB6 продемонстрировал несколько более низкую скорость, хотя с учетом повышения быстродействия современных процессоров этого не будет заметно.
Еще одно усовершенствование VB6 - обработка строк, давно досаждавшая программистам. VB6 включает в себя целый список новых функций работы со строками, предназначенных для ускорения выполнения наиболее распространенных строковых операций. Некоторые из них, похоже, основаны на собственных методах программирования Microsoft, а не на повседневной практике программистов, применяющих VB. Примером служит функция Split, разбивающая строку на слова, фразы или подстроки, исходя из положения указанного разделителя. Возможно, для разработчиков компиляторов или системных программистов это выглядит неплохо, но создатели коммерческих приложений в такой функции заинтересованы гораздо меньше. В ту же категорию попадают функции Filter, Join и StrReverse. Вместе с тем мы приветствуем появление функции InstrRev, выполняющей поиск подстрок от конца строки к ее началу. Она полезна при выполнении такой распространенной задачи, как анализ имен маршрутов. Приятно видеть и несколько запоздалую реализацию функции Round, хотя ее включение в список строковых функций может вызвать вопросы (Round воспринимает строку в качестве аргумента, если она интерпретируется как число).
Возможно, что наиболее часто используемой строковой функцией является функция Format$, способная преобразовывать значение практически произвольного вида в любую форматированную строку. Поскольку это функция общего назначения, работает она медленно. В VB6 включены ее специализированные версии для наиболее часто выполняемых задач форматирования - FormatDateTime, FormatCurrency, FormatPercent и FormatNumber. Главное отличие этих функций от функции Format$ заключается в том, что они ориентированы на работу с конкретными видами значений, и им не нужно анализировать формат строки, чтобы сделать вывод, как отформатировать результат. Вероятно, именно это вносит наиболее значительный вклад в ускорение операций. Подобные специальные функции семейства Format$ уже вошли в состав библиотек большинства профессиональных программистов, но их реализацию как встроенных функций можно считать положительным фактором.
Мы написали простую программу для сопоставления результатов вызовов функций. Данный аплет представлен на рис. 7, где видны и результаты его работы. Новые функции выполняются в два-пять раз быстрее, что можно считать значительным улучшением. Нам стало любопытно, повысилась ли производительность базовых функций обработки строк, таких, как Mid$ и операции конкатенации &. Усовершенствование подобных функций приведет к уменьшению времени работы любой программы, причем в нее даже не потребуется вносить изменения. Для проверки мы также написали небольшую программу, показанную на рис. 8, и применили ее для анализа VB5 и VB6. Оказалось, что в каждой версии получаются разные результаты, но, к нашему разочарованию, в VB6 мы отметили некоторое замедление выполнения практически всех проверяемых функций. В то же время расхождения были столь незначительны, что у нас возникло сомнение в точности предлагаемой VB функции Timer. Между тем, повторное выполнение тестов дало те же результаты.
Обработка данных
В целом управление данными в VB6 претерпело значительные усовершенствования. Выше мы уже упоминали о двух новых окнах проектирования Data Environment и Data Report. Хотя VB6 позволяет начать новый проект под названием Data Project, а все примеры Microsoft оформлены как проекты Data Project, данные окна проектирования можно использовать в стандартном проекте VB.
На рис. 9 показан конструктор Data Environment в действии. Он отображает каждый из доступных для проекта входов (источников данных) и конкретные элементы, которые используются на входе. Кроме того, в окне Data Environment можно видеть связи между этими элементами. При выборе из панели инструментов кнопки Data View Window в правой части окна выводится панель Data View, показывающая, что присутствует на входе. Таблицы этого представления можно просто отбуксировать в окно проектирования (конструктор), проверить и модифицировать соответствующие таблицы свойств, включая вкладку Relation, описывающую отношения между таблицами. В данном случае таблица Orders связана с таблицей Customers, а Order Details - с Orders. Это иерархическое отношение можно видеть в окне проектирования.
Форма для данного проекта была заполнена при помощи простой операции буксировки. Мы отбуксировали туда фамилию заказчика (Customer) и конструктор сам подставил значения в другие поля, а также заполнил MSFlexGrid для форм Orders и Details. Выполнение полученного приложения показало, что оно удовлетворительно работает, хотя пришлось добавить элементы управления для перемещения между записями.
В нижнем правом углу рис. 9 виден конструктор Data Report. Согласно традиционному стилю Microsoft, его назначение должно быть очевидно. Действительно, Data Report представляет собой генератор отчетов в стиле Microsoft Access. Он относительно прост в применении и интуитивно понятен.
Microsoft давно следовало включить в VB генератор отчетов. Хотя Crystal Reports компании Seagate - превосходный продукт, его версия, традиционно поставляемая с VB, отстает как минимум на одно поколение. Seagate заинтересована главным образом в том, чтобы стимулировать переход пользователей VB к ее полному продукту. Мы надеемся, что компонент Data Report станет ключевой частью среды VB и будет расширен до полноценного генератора отчетов по умолчанию. Чтобы привести его в должный вид, потребуется выпустить еще пару версий (подход, весьма характерный для Microsoft). Что касается Crystal Reports, то он по-прежнему входит в состав пакета, однако на этот раз не обновлен вместе с VB - VB6 содержит ту же версию 4.6, что и VB5.
Администратор данных Visual Data Manager (VisData), реализованный в предыдущих версиях VB сначала как пример программы, теперь упрощает работу с базами данных, входящих в приложения пользователя. Это более "облегченный" продукт, чем Access, и работать с ним значительно удобнее - в VB6 он вызывается с помощью первого пункта меню Add-Ins. В то же время VisData остается примером программы - его исходный код можно найти в папке примеров VB6 на CD. VisData содержит специфические для БД Jet средства, такие, как Compact и Repair, что превращает его в полезную утилиту для тех, у кого нет лицензий на Access. Пользователи могут включать VisData или его фрагменты в свои приложения.
Заключение: новая эпоха?
Visual Basic появился как инструмент, упрощающий создание Windows-приложений для широкого круга пользователей. С каждой новой версией VB увеличивается в размере и усложняется. VB6 продолжает эту тенденцию, предлагая развитые инструменты для работы с базами данных и Интернетом. Это говорит о том, что Microsoft видит будущее продукта во внедрении на корпоративном рынке, - для некогда простого пакета начинается новая эпоха.
Visual Basic 6.0 Professional Edition
Цена по каталогу: 549 $; upgrade-версия: 229 $ (с купоном частичного возврата стоимости); upgrade-версия для перехода с VB3 или более ранних версий: 279 $.
Microsoft Corp., Redmond, WA; 800-426-9400, 425-882-8080; www.microsoft.com/vbasic.
|