Будущее VisualBasic
WebForms (веб-формы), веб-службы (веб-службы) и языковые улучшения, которые появятся в версии
Читателями этой статьи являются пользователи, уже знакомые с Visual Basic.
Обзор. Следующая версия Microsoft Visual Basic содержит три основных улучшения: улучшения в веб-формах, веб-службах и объектно-ориентированном синтаксисе. WebForms позволяет опытным пользователям Visual Basic разрабатывать сетевые приложения так же легко, как и современные автономные программы. Через интерфейс SOAP веб-сервисы позволяют развертывать разработанные вами компоненты в любом месте, где есть доступ к Интернету. Кроме того, несколько ключевых улучшений объектно-ориентированных языков делают код Visual Basic таким же гибким, как C, включая наследование, полиморфизм и перегрузку. Информацию по этому аспекту можно найти в «Ключевом докладе VBITS по следующему поколению VisualBasic» Стива Баллмера.
isualBasic претерпел множество улучшений. Но с момента его создания мне в нем понравилось то, что по сути вы все еще можете писать свои программы так же, как это было в 1991 году. Конечно, его программный пакет был значительно расширен по сравнению с тем временем, но эти улучшения, как правило, носят дополнительный характер и не затмевают цель самого инструмента программирования. Эта цель состоит в том, чтобы сделать Visual Basic проще и быстрее, используемый для проектирования и написания. и отлаживать выдающиеся объектно-ориентированные приложения.
Текущая версия Visual Basic 6.0 представляет веб-классы как упрощенное средство настройки надежных сетевых приложений. Фактически, веб-классы предоставляют большое количество способов переноса программ в Интернет с помощью обычных инструментов. (Подробное обсуждение масштабируемости Visual Basic 6.0 в сети см. в «Колонке Advanced Basics» Теда Паттисона (опубликованной Microsoft Internet Developer в октябре 1999 г.)
Недавно у меня была возможность узнать о некоторых новых улучшениях, запланированных в следующей версии Visual Basic. Основное улучшение касается емкости хранилища, которая утроила емкость хранилища, доступную разработчикам. Планируется, что в следующей версии Visual Basic будет реализована функция WebForms в среде Visual Studio®. WebForms представляет собой новое сетевое решение на основе компонентов. Веб-сервисы станут новым решением на основе XML, которое публикует функции обработки событий среднего уровня через стандартные сетевые протоколы. В то же время язык Visual Basic будет включать в себя некоторые конструкции, о которых давно просили разработчики, что сделает Visual Basic совместимым с привычками объектно-ориентированного программирования, знакомыми пользователям C и Java.
Эти улучшения будут объявлены в следующей бета-версии Visual Basic. Здесь я приведу несколько фрагментов кода, но не полное решение. Так чего же теперь волноваться? Это просто: если вы полны решимости воспользоваться преимуществами этих новых функций, вы теперь можете разрабатывать свои программы с помощью этих конкретных методов и получать лучшие практические упражнения, которые помогут вам плавно перейти к следующей версии Visual Basic. Даже если вы этого не сделаете, вам нечего терять, если вы организуете свои будущие программы в соответствии с принципами, которые я изложил в конце этой статьи.
VisualStudioWebForms
Следующая версия Visual Basic станет частью среды разработки Visual Studio и, вероятно, представит веб-разработчикам новую концепцию WebForm. Целью введения концепции WebForm является расширение функции произвольного доступа Visual Basic, чтобы Visual Basic можно было применять для написания сетевых программ, оказывающих все более широкое влияние. Разработчики, использующие любой язык Visual Studio, могут поделиться этой веб-формой Visual Studio.
Страница WebForms состоит из двух частей: HTML-файла, реализующего визуальный интерфейс страницы WebForms, и исходного файла, обрабатывающего события страницы WebForms. Поскольку треть текущих разработок, основанных на среде Visual Basic, ориентирована на сеть, Microsoft планирует и дальше расширять возможности в этой области. В следующей версии Visual Basic вы сможете создавать веб-формы так же, как вы используете Visual Basic для создания форм сегодня. У вас будет набор инструментов веб-элементов управления. Вы можете перетаскивать элементы управления прямо в редактор HTML, чтобы использовать их. Вам просто нужно установить их свойства и написать соответствующий код. (См. рисунок 1). Таким образом, вы можете выполнять эти задачи так же, как если бы вы использовали Visual Basic для создания форм. Вы получите проекты форм и скомпилированный код, полностью совместимые с форматом IntelliSense® и WYSIWYG. Итак, если вы умеете писать приложения с использованием Visual Basic, WebForms позволит вам стать веб-разработчиком, вообще не меняя способа работы.
Рисунок 1. BuildingaWebForminFourSteps
WebForms работает на сервере и передает пользователям только формы в формате HTML. Как и ActiveServerPage(asp), это не конкретный браузер и не приложение на основе WebForm, а весь процесс также выполняется на сервере; Фактически вы запускаете программу, которая генерирует интерфейс в формате HTML 3.2 для удаленных пользователей. В отличие от веб-страниц ASP, эти коды компилируются и запускаются, а не интерпретируются, поэтому скорость работы значительно повышается.
Цель разработки WebForms — получить лучшие возможности ASP и WebClass. Для создания веб-форм можно использовать любой язык семейства Visual Studio. Итак, вы можете использовать свои знания для написания эффективных серверно-ориентированных веб-приложений.
Веб-сервисы
Веб-сервисы — это второе важное усовершенствование системы инструментов разработки Visual Studio. По своей сути веб-сервис представляет собой обработчик событий среднего уровня, публикуемый через стандартный сетевой протокол. Поскольку они используют HTTP в качестве транспортного механизма (см. рис. 2), они могут взаимодействовать через брандмауэры. Вы можете просто создать несколько веб-сервисов в веб-приложении, если URL-адреса назначены соответствующим образом. Когда программа работает, вызовы между всеми этими внутренними компонентами автоматически упаковываются и вызываются через интерфейс XML. Разработчики могут писать и использовать веб-сервисы на любой платформе и на любом языке. Если вам нужна конфиденциальность, вы можете использовать SecureSocketLayer (SSL) или стандартную технологию проверки.
Рисунок 2. Архитектура веб-сервисов
Если что-то из этого кажется вам знакомым, это хорошее место для начала. Механизм, используемый для передачи данных между компонентами, — это SOAP, протокол простого объектного лицензирования. DonBox подробно представил SOAP в журнале MSDN™, опубликованном в марте 2000 года.
Все эти новые функции предназначены для того, чтобы позволить разработчикам веб-приложений создавать существующие повторно используемые веб-сервисы, чтобы они могли писать свои приложения быстрее, без необходимости писать их каждый раз с нуля. Это откроет новую эру поставщиков программного кода и разработчиков программ.
Используя следующую версию Visual Basic, вы вскоре сможете публиковать и реализовывать функции в конкретном проекте в форме веб-сервиса. Возможно, вы знакомы с процессом публикации класса Visual Basic. В следующей версии Visual Basic появится новый логотип, временно называемый webpublic. Это означает, что программа будет опубликована как веб-сервис. Он может не только использоваться локальными проектами, которым он нужен, через COM-интерфейс, но также может обслуживать любую сетевую программу, которая ссылается на его URL-адрес. Точно так же, как вы можете добавить ссылку на общедоступный объект в новом проекте, вы можете добавить ссылку на сетевую программу и использовать ее, как если бы это была локальная программа.
Конечно, механизм действия несколько иной. Visual Basic может разрешать ссылки на локальные объекты через интерфейс COM. Когда вы добавляете ссылку на сетевую службу в свое приложение, удаленный объект автоматически генерирует определение интерфейса и отправляет его в среду разработки Visual Studio с использованием протокола SOAP. Хотя они будут сгенерированы в форме XML, вам не придется выполнять какие-либо действия по подключению самостоятельно. VisualBasic автоматически сделает это за вас. После получения определения интерфейса вы можете использовать IntelliSense, как если бы вы написали код, ссылающийся на объект.
Вот простой пример. В некоторых случаях вам может потребоваться написать функцию под названием Seahawks, которая может выглядеть примерно так:
PublicFunctionSeahawks(ByValopComponentAsString)AsString
Сихокс="проиграть"
Конечнаяфункция
Если создаваемый вами проект включает эту функцию, Visual Basic автоматически сгенерирует описание этой функции в формате XML и опубликует его в Интернете.
<?xmlversion='1.0'?>
<methodshref='http://julian/Football/Teams'>
<methodname='Сихокс'href='Сихокс'>
<запрос>
<paramdt='string'>противник</param>
</запрос>
<responsedt='string'/>
</метод>
</методы>
Этот XML-файл будет использоваться для описания функций Сихокса. Если вы используете среду разработки Visual Studio, вы можете перетащить любой опубликованный веб-сервис непосредственно в приложение, чтобы создать новый класс. Если вы хотите вызвать веб-сервис где угодно в Интернете, вам нужно всего лишь создать экземпляр класса, содержащего веб-сервис, а затем вызвать его опубликованные методы.
Когда вызывается функция Сихокс, она автоматически обменивается данными через пакеты XML. Если вы используете Microsoft® Internet Explorer 5.0 (который включает поддержку XML), вы можете попробовать запустить эту функцию в своем браузере. Вы также можете вызвать эту функцию, используя URL-адрес следующим образом:
http://julian/webservice1/comComponent1.methods/Seahawks?oppond=Майами
Он вернет данные в формате XML следующим образом:
<?xmlversion="1.0"?>
<Response>проиграть</Response>
Чтобы облегчить разработку веб-сервисов, в Visual Basic будет представлен новый тип объекта WebService. Вы можете спроектировать и развернуть свой веб-сервис в удаленной службе так же просто, как создать локальный файл DLL.
Улучшения языка
Между программистами, предпочитающими Visual Basic, и программистами, предпочитающими другие, более «сложные» языки, уже давно существуют напряженные отношения. Я не раз защищал свой любимый язык программирования от обвинений в том, что это «игрушечный язык» и что в Visual Basic отсутствуют функции ООП.
Хорошо, так угадайте, что произошло? Следующая версия Visual Basic, наконец, положит конец их жалобам. Microsoft планирует добавить три основные функции объектно-ориентированного программирования: наследование, полиморфизм и перегрузку. Это еще не все! Дополнительные конструкции, включая структурированную обработку ошибок и просмотр, также будут введены в язык Visual Basic.
Функция наследования позволяет вам спроектировать базовый класс, а затем написать несколько производных классов, наследующих функции базового класса. Это может сэкономить время и улучшить возможность повторного использования программы. Например, вы пишете базовый класс BaseClass, который имеет функцию:
ФункцияПолучитьИмяКлиента()
'Домашний мусор
Конечнаяфункция
Теперь вы хотите написать еще один класс, который может вызывать функцию GetCustomerName базового класса так же, как свою собственную функцию. В чем заключался старый метод? Раньше это было невозможно. Однако новый метод теперь требует лишь вставки простой строки над новым классом:
Наследует базовый класс
ФункцияПолучитьIDКлиента()
'Домашний мусор
Конечнаяфункция
Написание двух или более функций с одинаковым именем, но разными идентификаторами называется перегрузкой. В некоторой степени Visual Basic реализовал перегрузку при преобразовании внутренних типов и установке свойств при вызове функций. Сравните следующие две строки допустимого кода Visual Basic:
Текст1.Текст="7"
Текст1.Текст=7
В обоих вызовах тексту Text1 будет присвоена строка «7». Это перегруженный вызов, поскольку Visual Basic знает, как обрабатывать различные типы входных данных. Он рассматривает их как переменные и автоматически преобразует. Когда вы вызываете некоторые функции с четко определенными типами параметров, Visual Basic также выполняет такое же преобразование. Следующие два вызова функций:
a=SetVal("Это")
а=SetVal(7)
Следующие функции могут быть вызваны корректно:
FunctionSetVal(xAsString)
Форма1.Текст1.Текст=х
Конечнаяфункция
Поскольку Visual Basic уже может передавать множество различных типов переменных, зачем вам перегружать функции? Это связано с тем, что, хотя одна функция в настоящее время может обрабатывать несколько типов данных, она не может выполнять разные действия на основе разных переданных типов данных. Вместо этого сравните следующие две функции:
FunctionGetCustomerID(custnameasstring)AsInteger
'Поиск идентификатора клиента на основе имени клиента
Конечнаяфункция
ФункцияGetCustomerID(purchaslong)AsInteger
'Поиск идентификатора клиента на основе заказа SEOrder
Конечнаяфункция
Посредством перегрузки вы можете реализовать функции на основе типа входных данных. Это очень важно для следующей версии Visual Basic, поскольку в ней появилась новая функция — защита типа данных по умолчанию. В целом автоматическое преобразование переменных полезно, но вы можете себе представить, что иногда это может вызвать у вас проблемы. Например, в предыдущем примере SetVal, что произойдет, если вы захотите передать символ 7 вместо строки «7»? Следующая версия Visual Basic автоматически устранит эту ошибку. (Если ваш код основан на предыдущей функциональности Visual Basic, не поддерживающей тип, эта функция будет отключена)
Наконец, полиморфизм — это процесс переопределения уже определенного класса. Например, вы хотите написать производный класс класса BaseClass, но хотите переписать функцию GetCustomerName. В следующей версии Visual Basic вы можете реализовать это определение класса, используя новый метод, аналогичный следующему: (Примечание: окончательный синтаксис зависит от официальной версии)
Наследует базовый класс
ФункцияGetOrders()
ПереопределенияФункцияGetOrders()
•••
Конечнаяфункция
Дополнительные возможности синтаксиса
Следующая версия Visual Basic может содержать нечто большее, чем просто объектно-ориентированные улучшения, о которых я упоминал выше. Также есть генерация потоков, обработка ошибок и множество долгожданных новых улучшений для масштабируемости и возможности повторного использования.
В настоящее время Visual Basic поддерживает многопоточную модель. Хотя эта модель обеспечивает реальную эффективность разработки приложений, она не идеальна. В следующей версии Visual Basic будут улучшения в этой области. Он использует модель с свободной резьбой, которая будет полезна при написании масштабируемых сетевых приложений. Visual Basic также будет включать некоторые синтаксические конструкции, которые можно использовать для создания нескольких потоков. Типичные операции с потоками следующие:
sett=NewThread(NewThreadstart
(Адрес(БазовыйКласс.Функция1))
Из этого примера видно, что следующая версия Visual Basic имеет структуру AddressOf, которая используется для возврата адреса функции. Вам больше не придется пропускать функции API, требующие указателей на функции! Если вам нужен обратный звонок, вы можете использовать это для этого.
Еще одно запланированное улучшение — структурированная обработка ошибок. Не так давно Visual Basic требовал от вас вставки в код множества операторов OnError. В течение многих лет мне было неудобно вставлять так много операторов GOTO. Эти утверждения неоднократно предупреждали меня не использовать их снова! Теперь давайте посмотрим правде в глаза: нам нужен механизм обработки ошибок.
В следующей версии Visual Basic будет централизована обработка ошибок. VisualBasic будет поддерживать конструкцию try...catch...finally, подобную этим "благородным" языкам. Вы можете разместить подпрограмму, содержащую обработку ошибок, в верхней части кода. Вот пример реализации обработки ошибок:
СубSafeWrite()
Пытаться
Откройте «Тестовый файл»
•••
Написать №1
Ловить
Убить «Тестовый файл»
Окончательно
Закрыть#1
КонецПопробовать
EndSub
Есть и другие интересные улучшения, с которыми знакомы нынешние пользователи Visual Basic. В следующей версии Visual Basic вы сможете инициализировать переменные одновременно с их объявлением:
Димаасинтегер=10
Вы также можете создать и инициализировать новый объект в выражении. Вы также можете обмениваться переменными через классы. Наконец, но не только: концепция наследования распространяется на основу пользовательского интерфейса проекта. Одна из типичных критических замечаний в отношении Visual Basic заключается в том, что он затрудняет создание множества различных форм, основанных на одной и той же основе. (Это часто является требованием в совместной среде разработки). В следующей версии Visual Basic вы сможете сделать это с помощью типов шаблонов.
Эти улучшения ожидались годами. Почему? Давайте посмотрим. Коммуникации Visual Basic (чем я занимаюсь уже почти дюжину лет) становятся все более сложными, намного превосходя первую версию 1991 года. Первоначально Visual Basic использовался для быстрого проектирования и разработки небольших портативных прототипов инструментов. В результате Visual Basic приобрел (неожиданно, на мой взгляд) репутацию «игрушечного языка». Теперь, когда это уже явно не игрушка, любой, кто так говорит, действует из слепых предубеждений. В настоящее время существует большое количество программных пакетов на базе Visual Basic в различных областях. VisualBasic развивается. В прошлом году в Центре исследований я разговаривал с разработчиком программного обеспечения, который писал программы с использованием Web-Class, которые получали миллионы просмотров в неделю.
Изменения в следующей версии Visual Basic удивительны. Если вы хотите получить те преимущества, которые они приносят, используйте их. Если вы не хотите, вы можете уверенно использовать то, что до сих пор используете. Однако полезно знать, что функции, которые выполняют C и Java, могут быть реализованы на таком языке, как Visual Basic, который намного проще в использовании, чем C и Java.
Будущие тенденции развития
Какое впечатление произвела на вас эта предварительная презентация? Это хороший вопрос, но вы можете найти на него ответ. За последний год мы ясно видим изменения в разработке ASP. Эти программы разработки часто состоят из нескольких простых для чтения сценариев ASP, и вся программа запускается на основе этих сценариев. Поскольку ASP интерпретирует и выполняет весь код сценария, при сборке каждого компонента люди постепенно обнаруживают присущие этой технологии ограничения. Я слышу, как все больше и больше разработчиков говорят, что они хотят полностью отделить свои обработчики событий от кода сценария и реализовать их в рамках более быстрой модели компиляции, написанной на C++ или Visual Basic, через COM-интерфейс для сборки.
По любой причине, которую вы только можете придумать, Visual Basic может удовлетворить эту потребность. Проектировать компоненты с помощью Visual Basic на самом деле не сложнее, чем использовать VBScript или JScript®. Вы можете написать код, который выполняется быстрее и легко удовлетворяет ваши требования. Когда будет выпущена следующая версия Visual Basic, вы сможете использовать Visual Basic для создания сетевых объектов, совместимых с ASP. Короче говоря, путь сочетания компонентов будет считаться лучшим выбором сейчас и в будущем.
Как я упоминал ранее, существует обширная база интернет-ориентированных приложений, написанных с использованием Visual Basic (и веб-классов). Проблема в том, что большинство приложений на основе веб-классов не очень хорошо спроектированы. Они плохо различают разные уровни приложения, путая процессы среднего уровня с пользовательскими интерфейсами на основе DHTML.
В следующей версии Visual Basic будут представлены веб-классы — тщательно отобранные инструменты для веб-разработки. Потому что он более масштабируемый, более мощный и действительно не зависит от языка. Он работает со всеми инструментами Visual Studio. Если вы обратите внимание на некоторые основные правила многоуровневой разработки, вы легко сможете осуществить этот переход. Особое внимание следует уделить разделению процесса среднего уровня и процесса уровня отображения. При выполнении этих задач настоятельно рекомендуется использовать архитектуру Windows® DNA2000. Основные функции обработки событий должны выполняться на среднем уровне, и для реализации этих функций вы можете использовать различные компоненты, написанные на вашем любимом компилируемом языке. Эти компоненты затем собираются в файл сценария ASP, чтобы компоненты могли работать вместе. Было бы идеально, если бы вы поместили большую часть своей логики в объекты событий, а не в сценарии. Это не только хорошая идея для будущего перехода на веб-сервисы, но и практика, достойная подражания. ->