Что нового ожидается в VB 7.0
VB как составная часть Visual Studio
Появившаяся еще в начале года информация о том, что в версии VB 7 ожидается появление множества сюрпризов, вызвала повышенный (по сравнению с предыдущими выпусками) интерес пользователей этого популярного инструментария. На эту тему появился ряд англоязычных статей, а также отзывов специалистов, которые успели ознакомиться с новой версией. В данной статье попытаемся мы обобщить имеющуюся информацию, но предварительно — несколько замечаний.
Окончательная дата выпуска VB 7 (и всего Visual Studio 7) пока не определена, скорее всего, он появится не ранее начала следующего года. Более того, сегодня продукт существует только в альфа-версии (внутреннее тестирование), бета-версию обещают выдать лишь в начале осени. VB 7 демонстрировался на специализированных конференциях разработчиков (VBITS, Microsoft DevCon), но это были закрытые показы. Официальные заявления Microsoft о нововведениях VB 7.0 носят общий характер, при этом представители корпорации подчеркивают, что в настоящий момент (начало августа) предоставить конкретную информацию не могут, так как до момента появления продукта в нем может произойти много изменений.
Эти предположения отражают реальную картину: из опыта прошлых лет известно, что окончательная функциональность инструмента определяется в последний момент (что-то появляется уже после выхода бета-версии, а что-то и пропадает). В данном случае нужно отметить, что предварительные закрытые демонстрации, утечка информации об ожидаемых новшествах, появление слухов и пр. — конечно же, продуманная маркетинговая акция, в ходе которой Microsoft изучает необходимость включения тех или иных инноваций. В том числе определения тех
возможностей, с отсутствием которых тянуть уже нельзя (это может вывести из себя даже истинных поклонников VB).
Здесь нужно вспомнить, что история VB представляет собой классический пример строго дозированного расширения функциональности системы. Речь идет не о принципиальных новшествах, которые ранее вообще не использовались в системах программирования, а о давно известных вещах. Например, только в VB3 появилась возможность обязательного объявления переменных, в VB4 -- создания повторно используемых программных компонентов, в VB5 -- компиляция в настоящий машинный код и разработка элементов управления ActiveX. В VB 7 также ожидается появление многих давно ожидаемых функций.
VB как составная часть Visual Studio
По мнению Microsoft, главной задачей сегодня является быстрое построение надежных, масштабируемых, многоуровневых Web-приложений. Имеющиеся сейчас средства разработки не в полной мере отвечают этим требованиям. Поэтому главный акцент при создании очередной версии инструментов Visual Studio сделан на необходимости максимально упростить создание Web-приложений масштаба предприятий. За счет повышения их производительности, возможности реализации модели Web-разработки «End-to-End» и использования масштабируемых повторно используемых Web-компонентов Visual Studio должен обеспечить эффективную и быструю адаптацию бизнес-систем к изменяющимся рыночным условиям.
Ключевые новшества следующей версии Visual Studio будут иметь развитие в следующих основных направлениях:
- Создание высокопроизводительных средств разработки. Высокая степень интеграции и унификации визуальной среды должна упростить процесс создания Web-приложений и снизить временные затраты на их освоения разработчиками. Единый набор редакторов (HTML, XML, Style Sheet и другие) будет использоваться для всех языков программирования в составе Visual Studio.
- Быстрое проектирование Web-приложений с насыщенным интерфейсом. Новый набор Web-форм позволит разработчикам создавать кросс-платформные (для любых Web-браузеров) настраиваемые Web-приложения, используя те же самые технологии, которые традиционно применяются для создания настольных приложений с помощью обычных форм. Web-формы работают на сервере, обеспечивая высокую производительность, и генерируют документы, совместимые со стандартом HTML 3.2 и способные выполняться в среде любого браузера.
- Простое применение XML и Web-сервисов для упрощения распределенной обработки данных. Web-сервисы представляют собой механизмы для включения бизнес-логики в любом месте вычислительной среды с использованием стандартных Intenet-протоколов. Они используют HTTP в качестве основного транспорта, обеспечивая функциональные требования при прохождении через корпоративные системы защиты информации. XML используется для форматирования требований к входным и выходным параметрам. При этом требования не будут связаны с какой-то определенной технологией объектных компонентов. В результате Web-сервисы будут доступны на любом языке программирования, при использовании всех объектных моделей компонентов и при работе в любой операционной системе.
- Быстрое построение компонентов промежуточного уровня (уровня бизнес-логики). Главное назначение Visual Studio – предоставление инструментов быстрой разработки клиент-серверных приложений для обеспечения такого же уровня производительности разработчика при создании компонентов промежуточного уровня бизнес-логики, которая достигнута сегодня в Visual Basic для традиционных настольных приложений с использованием обычного оконного интерфейса. При этом необходимо повысить мощность и масштабируемость создаваемых компонентов. Эти задачи будут решаться в результате существенного обновления языковых средств Visual Basic, в первую очередь за счет реализации в нем объектно-ориентированных возможностей.
- Повышение надежности и масштабируемости. Разработка масштабируемых и надежных Web-приложений является достаточно сложной работой. Visual Studio упростит эти задачи, включив некоторые механизмы автоматического масштабирования приложений и компонентов, в частности с помощью нового варианта технологии ATL Server в Visual C++.
В настоящее время в заявлениях о Visual Studio 7.0 речь идет пока о трех ключевых продуктах, которые Microsoft позиционирует следующим образом:
- Visual Basic -- универсальный инструмент быстрой разработки;
- Visual C++ -- средство создания высокоэффективных и мощных приложений;
- Visual InterDev -- инструмент для создания Web-приложений.
Учитывая особую нацеленность на создание Web-приложений, можно предположить, что InterDev станет частью интегрированной среды VS 7.0. Разумеется, встроенный HTML-редактор будет поддерживать технологию IntelliSense (подсказка синтаксиса функций, методов и свойств, завершение ввода тэгов).
Что нам обещают в VB 7
Ключевые новшества -- Web-формы, Web-сервисы и полная объектно-ориентированная модель языка. Однако начнем описание VB 7 с других интересных мелочей.
По некоторым сведениям, VB и VC++ будут иметь единую среду разработки. Более точно известно, что VB 7 включает новый редактор меню. По общим оценкам специалистов, которые уже работали с ним, модернизированная версия Menu Editor стала намного удобнее, позволяя, в частности, создавать меню визуальными методами.
В дополнение к режиму Option Explicit (обязательное объявление переменных) появится Option Strict -- строгое использование типов данных, запрет неявного преобразования типов (мы в наших «Советах» не раз отмечали крайнюю необходимость такой функции).
Еще один важный момент -- управление процедурой компоновки исполняемого модуля. Нам уже приходилось отмечать, что многие VB-программисты (из тех, кто не работал с другими системами) вообще не знают, что процедура создания исполняемого модуля или DLL состоит на самом деле из двух разных операций: компиляции (трансляция исходных модулей проекта в объектные модули) и компоновки (стыковка всех объектных модулей в один загрузочный). В VB до сих пор не было такого разделения по той простой причине, что Microsoft не позволял подключать к проекту объектные модули, откомпилированные вне данного проекта (не важно -- с помощью VB или другого инструмента). Теперь нам обещают разрешить такую компоновку с подключением внешних объектных модулей и объектных (статических) библиотек (они традиционно имеют расширение OBJ и LIB).
Примечание. Нужно иметь в виду, что «объектный модуль» (или библиотека) -- очень старый термин, не имеющий отношения к современным «объектам» (неким исполняемым программным компонентам). Объектный модуль – это результат компиляции исходного (текстового) модуля, который пригоден для дальнейшей обработки компоновщиком программ.
Напомню, что такая возможность существовала еще во времена QuickBasic и Basic PDS (QBX). Там подключение внешних объектных модулей к проекту при работе в среде выполнялась с помощью создания специальной QBL-библиотеки (что-то вроде специального модуля поддержки проекта).
ASP + Web Forms
Речь здесь идет не просто о конструировании Web-форм, а о новой технологии создания Web-приложений, которая будет поддерживаться всеми инструментами, входящими в состав Visual Studio. Как известно, в настоящее время VB поддерживает два типа Web-приложений – WebClass (серверные) и DHTML (клиентские), а InterDev обеспечивает разработку Active Server Pages (ASP). Такое разнообразие создает для пользователей проблему выбора, так как функциональность разных методов различается.
Microsoft обещает, что Web Forms станет преемницей ASP и WebClass, объединив достоинства обеих технологий. Тем не менее создается впечатление, что речь идет, скорее, о развитии WebClass-технологии, реализованной в VB 6.0 (см. «VB6 упрощает разработку для Web» и «Создание DHTML-приложений с помощью VB6» в «КомпьютерПресс» № 5’99). Страница Web Forms состоит из двух частей: шаблона в виде HTML-файла и файла с программным кодом. Такое разделение, в частности, повышает скорость выполнения программы, так как используется режим выполнения машинного кода (DLL), а не интерпретации скрипта. Кроме того, для написания кода можно применять любой язык программирования, а создаваемые компоненты могут использоваться повторно. Создавать HTML-шаблоны можно с помощью встроенного редактора или внешнего, специализированного (в VB 6.0 встроенный конструктор Web-форм был откровенно слабым).
Подразумевается, что VB-программисты смогут формировать Web-интерфейсы почти так же, как они создают сейчас формы Windows. Используя палитру инструментальных средств, специально сгенерированных, чтобы поддержать любую указанную версию HTML, можно будет с помощью метода «перетащи и оставь» создавать пользовательский интерфейс на базе Web и писать сервер-ориентированный код для каждого объекта так же, как они это делают для форм на базе Windows. Код для Web-форм постоянно находится на сервере; а HTML генерируется «на лету». Элементы управления Web-форм преобразуются в HTML-объекты по мере выполнения кода на сервере. Как обещает Microsoft, VB 7.0 будет использовать «первоклассный» HTML-редактор, входящий в состав Visual Studio и поддерживающий работу с различными версиями HTML (например, 3.2, 4.0 или XML).
Подобные инструменты создания Web-форм уже существуют в версии Visual Studio 6.0 (в Visual Basic и Visual InterDev). Однако функциональность их для VB пока заметно уступает средствам создания обычных оконных форм. В новой версии пакета возможности проектирования Web-форм будут значительно расширены и доступны для всех инструментов.
В плане подготовки к использованию технологии Web Forms рекомендуется применять многоуровневую архитектуру приложений. В этом случае переход к Web-приложениям будет заключаться только в достаточно простой замене интерфейса.
Web Services
Это некая принципиально новая платформно-независимая технология, связанная с использованием стандарта XML и протоколом доступа к простым объектам (Simple Object Access Protocol -- SOAP), которая будет широко интегрирована в средства разработки. Здесь пока еще многое выглядит весьма туманно, но ключевая идея состоит в создании компонентов уровня бизнес-логики, которые взаимодействуют с внешними объектами с помощью стандартных Web-протоколов. При этом Microsoft обещает обеспечить совместимость с UNIX и Linux.
Проще говоря, в данном случае приложение обращается за выполнением некоторой функции не к DLL или ActiveX DLL, а к компоненту на удаленном компьютере с помощью Интернет-протокола. Создание нового типа компонентов выполняется в VB 7 с помощью оригинального проекта, называемого Web Service. Выглядит это примерно следующим образом:
- Разработчик создает проект типа Web Service с названием RatingService,
добавляет в него модуль класса с именем ClassComponent и пишет в него функцию
для решения некоторой задачи:
Public Function GetRate (ByVal ticker As String) As String
' Решаем -- покупать или продавать акции
If ticker = "ACME" Then
GetRate = "Покупать!"
Else
GetRate = "Продавать!"
End If
End Function - При построении проекта с данной функцией VB автоматически сформирует XML-описание
этой функции и опубликует его на Web:
<?xml version='1.0' ?>
<methods href='http://Kolesov/RatingService'>
<method name='GetRate' href = 'GetRate'>
<request>
<param dt='string'>ticker</param>
</request>
</method>
</methods> - Теперь вы можете обратиться к этой функции с помощью обычного браузера (с
включенной в него XML-поддержкой). Наберите такой URL -- http://kolesov/RatingService/ClassComponent.methods/GetRate?ticker=AMCE
-- и вы получите в окне браузера результат:
<?xml version='1.0' ?>
<response>Покупать</response>
Созданные средства Web Services можно также подключать к VB-проекту. Причем эти функции могут быть созданы, например, с помощью UNIX-инструментов и работать в среде Web-сервера Apache.
Новшества языка
В течение нескольких лет идут постоянные дебаты о том, может ли Visual Basic считаться языком объектно-ориентированного программирования (ООП). С одной стороны, элементы ООП в нем были всегда, и их число росло от версии к версии. С другой -- многих нужных ООП-возможностей в нем не было. Похоже, появление VB 7 положить конец всем этим дискуссиям, так как все необходимые атрибуты ООП в нем будут реализованы.
Основные новшества языка в VB 7 заключаются в следующем:
Parameterized Constructors (Параметрические Конструкторы). При создании объекта часто бывает крайне желательно передать ему некоторые данные для начальной установки его свойств. Сейчас для выполнения таких разовых операций требуется создание специальных процедур. В VB 7 конструкторы позволят передавать начальные данные в момент создания объектов.
Encapsulation (Инкапсуляция). Идея заключается в том, что вы можете создавать скрытый набор процедур (методов и свойств), которые формируют некий программный интерфейс. Другой код может обращаться к этим методам и свойствам, не вдаваясь в подробности их внутренней реализации. Приведенный здесь код демонстрирует возможность «скрытия» отдельных свойств объекта («Me» ссылается на определенный экземпляр класса):
Protected cName As String
Protected Function ChangeName(NewName)
Me.cName = NewName
End Function
Free-threaded (Многопоточность). Это комплексная концепция поддержки выполнения более одного потока заданий одновременно. Например, пользователь может продолжать работать с приложением, после того как он задал операцию фоновой печати документа. Подобный режим крайне необходим для создания масштабируемых серверных компонентов и может быть полезен для реализации пользовательского интерфейса. Создание таких вычислительных потоков выглядит примерно следующим образом:
Sub CreateMyThread()
Dim b As BackGroundWork
Dim t As Thread
Set b = New BackGroundWork
Set t = New Thread(New ThreadStart (AddressOf b.Doit))
t.Start
End Sub
Class BackGroundWork
Sub Doit()
End Sub
End Class
Inheritance (Наследование). Это одно из ключевых понятий объектно-ориентированного программирования – возможность использования (в том числе расширения) поведения чужого объекта. Иначе говоря, можно создать объект Продукт, а затем на его основе объекты Программный Продукт и Технический Продукт. Оба новых объекта будут наследовать свойства и метода объекта Продукт, при этом вы сможете расширить или изменить поведение наследующего объекта.
VB-разработчики теперь могут использовать ключевое слово Inherits для подключения процедур уже существующего класса:
Class1
Function GetCustomer()
End Function
Class2
Inherits Class1
Function GetOrders()
End Function
Замена существующего родительского метода выполняется с помощью ключевого слова Overrides.
Initialezers (Инициализаторы). Здесь все очень просто: в VB отсутствовала давно необходимая и давным-давно реализованная в других языках функция начальной инициализации переменной при ее определении. Теперь вместо
Dim X As Integer: X = 1
можно будет написать:
Dim X As Integer = 1
Overloading. В русском языке нет термина для данного контекста -- использование одного и того же идентификатора для обозначения разных процедур. Выбор нужной процедуры выполняется в зависимости от числа и типа параметров.
Это особенно полезно для создания одного свойства, поддерживающего разные типы аргументов: применение в этом случае типа Variant неудобно хотя бы потому, что характер обработки данных может зависеть от их типа. Описание таких процедур выглядит следующим образом:
Overloads Sub Display (theString As String)
...
Overloads Sub Display (theInteger As Integer)
Polymorphism (Полиморфизм). Возможность иметь несколько объектов разного типа, но с одинаковыми методами. Это позволяет писать код, вызывающий нужный метод в зависимости от используемого в данный момент объекта. Например, это может выглядеть таким образом:
Class Employee
Function PayEmployee
' почасовая оплата
PayEmployee = Hours * HourlyRate
End Function
Class CommissionedEmployee
Inherits Employee
Function PayEmployee
' сдельная оплата
PayEmployee = BasePay + Commissions
End Function
В данном примере с использованием наследования и замены родительского метода мы создали две разные функции (с одним названием) для классов Employee и CommissionedEmployee.
Shared Members (Общие члены). Это методы или переменные, доступные для всех экземпляров класса (каждого объекта, базирующего на данном классе).
Structured Exception Handling (Структурная обработка особых ситуаций). Это новая структура для обработки ошибок, которая уже реализована во многих языках. Она должна заменить старую и весьма негибкую (точнее, ненаглядную) конструкцию On Error Goto|Resume|Next. Новый блок содержит ключевые слова Try, Catch, Finally:
Try ' начало некоторой операции
Open "TestFile" For Output As #1
Write #1, SomeInformation$
Catch ' в случае ошибки выполняется этот код:
Kill "TestFile"
Finally ' при отсутствии ошибки выполняется этот код:
Close #1
End Try
Type Safety (Контроль типов данных). Запрет неявного преобразования типов с помощью нового оператора Option Strict. Кому-то из программистов это не понравится, так как данный режим заставит задуматься о типах переменных и использовать специальные функции при присвоении переменной значения другой переменной иного типа. Однако это крайне необходимо, если вы хотите писать надежные программы, а также снизить затраты на отладку приложений.
В этом случае вместо
MySrting$ = 7
придется писать
MySrting$ = Str$(7)
User Interface Inheritance (Наследование пользовательского интерфейса). VB7 будет включать наследование форм, то есть создание новых форм на основе некоторых шаблонов. В отличие от существующего сегодня механизма подключения новых форм на основе шаблонов в данном случае будет автоматически поддерживаться механизм наследования: изменения в родительском шаблоне (например, корпоративный логотип) будут отражаться в дочерних формах.
КомпьютерПресс 9'2000