(по материалам Microsoft)
Вышла очередная - пятая - версия СУБД Visual FoxPro 5.0. При создании новой версии Microsoft сконцентрировала усилия на четырех основных направлениях: поддержке управляющих элементов ActiveX, повышении производительности, расширении возможностей работы в распределенных средах и совершенствовании средств разработки.
Управляющие элементы ActiveX
В Visual FoxPro 5.0 реализована поддержка управляющих элементов ActiveX, что означает возможность применения технологии OLE Automation. Эта технология позволяет приложению сделать доступными извне свои функции путем помещения их в специальные библиотеки, к которым может обратиться любое другое приложение, поддерживающее модель COM (Component Object Model). Управляющие элементы ActiveX (прежде они именовались управляющими элементами OLE) - это 32-разрядные программные компоненты многократного использования, которыми можно легко обмениваться, расширяя за их счет возможности приложений без необходимости писать много исходного текста.
Automation-серверы
Благодаря появившейся в версии 5.0 поддержке OLE Automation вы сможете написать на Visual FoxPro Automation-сервер - программный компонент, который выводит формы, реализует бизнес-правила или какую-либо сложную процедуру, и этот компонент смогут подключать к своим приложениям другие программисты.
Классическим примером Automation-сервера является табличный процессор Microsoft Excel. Он открывает такие объекты, как рабочие листы, диаграммы и др., и способен принять данные из приложения, написанного, например, на Visual FoxPro, чтобы на их основе построить график. Знать соответствующую процедуру в деталях не требуется: достаточно просто создать экземпляр необходимого объекта, указать значения признаков и вызвать метод, ответственный за построение графика.
При работе в Visual FoxPro 5.0 разработчик имеет возможность открыть для доступа из другой программы любые объекты и методы своего приложения, определив для них глобальный (public) класс. В качестве примера можно привести сервер, получающий идентификатор клиента, а затем выполняющий по нескольким базам данных поиск имени, адреса и т.п., или сервер печати, который ожидает, пока на вход поступит имя отчета, а когда это происходит, выполняет подготовку и печать полученного документа, освобождая пользователя от рутинных забот. Ниже приведен несложный код, в котором класс Person открывает метод GetName. Вначале задаются значения признаков FirstName и LastName, а затем вызывается метод GetName, возвращающий строку из имени и фамилии.
DEFINE class person AS CUSTOM OLEPUBLIC FirstName = SPACE(30) LastName = SPACE(45) PROCEDURE GetName RETURN This.FirstName + " " + This.LastName ENDPROC ENDDEFINE
Этот объект может быть вызван из любого приложения, поддерживающего Automation, включая все приложения Microsoft Office, программы на Visual Basic, среду разработки Visual Basic и др. Вот как выглядит, например, код Visual Basic для создания экземпляра объекта Person, назначения переменных и вызова метода GetName:
Set oTest = CreateObject("foxole.person") With oTest .FirstName = "David" .LastName = "Lazar" End With cName$ = oTest.GetName()
При необходимости изменить бизнес-правило (например, требуется ввести обязательное обращение типа Mr. или Mrs. перед именем) модификации нужно подвергнуть только один объект, и все приложения, обращающиеся к нему, немедленно начнут работать в соответствии с новым стандартом.
Многоуровневые приложения
Помимо Automation, в Visual FoxPro 5.0 введена и поддержка Remote Automation - технологии, обеспечивающей взаимодействие Automation-сервера, запущенного на одном компьютере локальной сети, с клиентским приложением, запущенным на другом. Это особенно полезно при создании приложений клиент-сервер с трехуровневой (three-tier) архитектурой и при реализации асинхронной обработки данных. Remote Automation позволяет уменьшить нагрузку на рабочие станции и упростить сопровождение системы.
Имеющиеся в Visual FoxPro 5.0 примеры приложений с трехуровневой архитектурой аналогичны тем, которые будут включены в пакет Visual Basic 5.0.
Утилита Remote Automation Connection Manager служит для переноса существующего Automation-сервера на другой компьютер сети, работающей под управлением Windows NT Server. После запуска этой утилиты операционная система начнет автоматически перенаправлять любой вызов от клиентского приложения на удаленный компьютер. Visual FoxPro 5.0 предоставляет набор инструментов для создания серверов, обрабатывающих удаленные вызовы, клиентских приложений, вызывающих удаленные серверы, и сопровождения приложений, использующих технологию Remote Automation.
Возможности ActiveX
Одной из наиболее впечатляющих возможностей Visual FoxPro как средства быстрой разработки приложений является способность создавать и многократно использовать классы, передающие свое поведение порождаемым ими объектам. Так, класс, обеспечивающий перемещение указателя записи в таблице (VCR-класс), способен работать с любой таблицей. Изменения, внесенные в класс, немедленно отражаются во всех экземплярах порожденных им объектов. Полиморфизм обеспечивает вариативность поведения порожденных объектов при работе в конкретном приложении (при том, что основные характеристики поведения остаются неизменными).
Преимущества объектно-ориентированного подхода в данном случае очевидны: процесс создания приложений ускоряется, а их сопровождение упрощается.
В Visual FoxPro 5.0 определение класса может включать компоненты ActiveX. На рисунке 2 показан класс Orders, в котором использован компонент ActiveX, создающий страницы с закладками; на самих же страницах размещены собственные объекты Visual FoxPro 5.0, включая сетку (grid).
В определении класса разработчик задает набор признаков и методов для компонента ActiveX, модифицируя его стандартное поведение таким образом, что каждый объект, построенный на основе создаваемого класса, работает в точности так, как того желает разработчик. Подобная настройка поведения многократно используемых компонентов - именно то, чего так недоставало разработчикам в Visual FoxPro предыдущей версии.
Повышение производительности
Разработчики приложений для работы с базами данных никогда не бывают удовлетворены быстродействием своих программ. И именно в этой области пакет FoxPro приобрел почти легендарную славу самого быстрого.
Стремясь продолжить эту традицию, разработчики при создании версии 5.0 уделили особое внимание производительности отдельных объектов, эффективному использованию памяти и скорости извлечения данных, поставив себе задачу улучшить все эти показатели по сравнению с версией 3.0. В результате скорость работы приложений возросла на 10-300%, причем наиболее заметное увеличение скорости достигается на компьютерах с небольшим объемом памяти (8 Мбайт).
Производительность объектов
Одним из важнейших достижений в области производительности стало повышение скорости работы форм и входящих в них объектов. Время, необходимое на загрузку и обновление формы, - именно тот фактор, по которому пользователь оценивает скорость работы приложения. В Visual FoxPro 5.0 разработчики уделили особое внимание скорости вывода объектов на экран, скорости привязки объектов к данным и объему памяти, необходимому для работы наиболее часто используемых объектов. В целом скорость работы форм возросла (в зависимости от конфигурации компьютера) на 40-200%
Для ускорения загрузки формы в Visual FoxPro 5.0 было использовано "отложенное связывание" (delayed binding), когда все объекты формы создаются при ее загрузке, но не привязываются к данным. В результате загрузка формы происходит быстрее, а привязка производится уже после того как форма появится на экране: либо пока пользователь решает, что делать дальше, либо при активизации соответствующего объекта формы. Подобный подход хорошо известен разработчикам: благодаря разбиению задачи на несколько частей неизбежные задержки распределяются по ним и становятся менее заметны для пользователя. В некоторых случаях отложенное связывание позволяет исключить ненужные шаги: например, если пользователь открывает некоторую форму только для того, чтобы немедленно перейти к следующей, нет необходимости связывать данные с объектами первой формы.
Использование памяти объектами формы
Еще один важный источник повышения производительности - снижение потребности в памяти для объектов, включаемых в формы. Такие часто используемые объекты, как текстовые поля, списки и комбинированные списки, стали теперь гораздо более "отзывчивыми", поскольку используют меньше ресурсов. Соответствующие формы Visual FoxPro 5.0 также быстрее загружаются и работают по сравнению с аналогичными формами версии 3.0. В качестве практического примера можно порекомендовать создать обычный или комбинированный список, связанный с таблицей из 1000 или более записей, и сравнить его поведение в версиях 3.0 и 5.0. В Visual FoxPro 3.0 строки будут прокручиваться с заметными задержками, а в FoxPro 5.0 - совершенно плавно; при этом в версии 5.0 форма обновляется непрерывно, а в версии 3.0 - только после отпускания кнопки мыши.
Выборка данных
Скорость извлечения данных - та характеристика, которая определяет в глазах пользователя скорость работы с информацией.
Повышение производительности здесь было достигнуто благодаря переходу на стандартный язык SQL в описании соединений (в предыдущих версиях условия соединения определялись в операторе WHERE, а не в операторе FROM, как того требует стандарт). Например:
Set oTest = CreateObject("foxole.person") With oTest .FirstName = "David" .LastName = "Lazar" End With cName$ = oTest.GetName()
В этом примере задается соединение двух таблиц и извлечение трех полей. Переход к ANSI-стандарту не только приводит запросы FoxPro к тому же виду, какой они имеют в Microsoft Access, SQL Server и других СУБД, полностью поддерживающих SQL, но и обеспечивает более высокую скорость получения результатов. При переносе в версию 5.0 приложений, созданных в предыдущих версиях FoxPro, запросы автоматически преобразуются в новую форму Конструктором запросов. Кроме того, Конструктор запросов по умолчанию строит соединения на стандартном SQL, что позволяет разработчикам освоить непривычный синтаксис прямо в процессе работы.
Средства доступа к данным на сервере
Разработчики систем обработки данных постоянно ищут пути повышения гибкости своих приложений. Организация бизнеса становится все сложнее и все более опирается на распределенную архитектуру. Широкое распространение получают географически разнесенные подразделения, пользователи часто обращаются к базам данных уже не через локальные сети, а через Internet. Обеспечение разных способов получения информации было одной из целей создания Visual FoxPro 5.0.
В связи с этой задачей архитектура приложений FoxPro претерпела два существенных изменения. Во-первых, была добавлена поддержка так называемых "оторванных представлений" (offline views), позволяющая синхронизировать информацию с удаленными серверами баз данных. Во-вторых, версия 5.0 обеспечивает создание Automation-серверов, работающих в Internet.
Оторванные представления
Бывают ситуации, когда необходимо вывести для просмотра, проанализировать или модифицировать информацию, но при этом нет доступа к основной базе данных. Оторванные представления обращаются к базе данных Visual FoxPro или серверу, связь с которым осуществляется по протоколу ODBC, и создают набор (подмножество) данных, доступный для использования в отсутствие прямой связи с основным источником. Приложение, работающее без сети, может обращаться к полученному ранее набору напрямую или через дополнительно созданные представления. После окончания работы модифицированные данные загружаются обратно в основную базу данных.
Приведу несколько примеров использования оторванных представлений.
Переход на использование оторванных представлений требует минимальных изменений в коде - достаточно перенастроить указатели со стандартного представления на оторванное: ко всем полям, индексам, таблицам, формам и т.д. можно обращаться по одним и тем же именам в обоих представлениях. Для создания оторванного представления служит команда CREATEOFLINE(); чтобы перейти с одного представления на другое, достаточно одной команды. Но разработчик должен предусмотреть пути разрешения конфликтов, которые могут возникнуть при модификации данных в основной базе данных.
Работа приложений FoxPro в Internet
Как уже говорилось, Visual FoxPro 5.0 позволяет создавать Automation-серверы. Одной из основных сфер применения таких серверов должна стать World Wide Web.
Скажем, при разработке Web-узла или intranet-сервера можно реализовать на FoxPro поисковую систему. Тогда пользователь, перейдя в браузере на страницу "Поиск сотрудника", увидит на экране форму и, точно так же, как при работе с обычным приложением FoxPro, введет в соответствующие поля имя, фамилию и другие данные для поиска, нажмет кнопку "Найти" и увидит в окне браузера данные о сотрудниках, отвечающих введенным критериям.
Реализация поисковых систем
Чтобы служить информационным сервером для Web, приложение Visual FoxPro должно быть Automation-сервером и выполняться на сервере, который доступен для Web-сервера. Сам Web-сервер должен поддерживать программный интерфейс ISAPI (Internet Server API), что выполняется для Microsoft Internet Information Server. Необходим также шаблон для форматирования HTML-страниц с результатами поиска.
Реальный пример организации подобной системы имеется в каталоге примеров, создаваемом программой инсталляции Visual FoxPro (SAMPLESSERVERSFOXISAPI). Он довольно сложен, поэтому непременно обратите внимание на файл README.TXT, помещенный в этом же каталоге и содержащий описание деталей настройки приложения.
Итак, Visual FoxPro 5.0 позволяет разработчикам создавать приложения четырех типов:
Средства разработки
Значительно усовершенствованы в Visual FoxPro 5.0 и средства разработки приложений. Появилась возможность коллективной работы с классами - контейнерами баз данных и с проектами, причем проекты FoxPro поддерживаются теперь системой Visual SourceSafe. Внесен ряд полезных изменений в среду разработки, в частности, добавлены новый отладчик и цветовая разметка исходного кода.
Интеграция с Visual SourceSafe
Пакет Visual FoxPro 5.0 полностью интегрирован с Microsoft Visual SourceSafe (VSS) - системой поддержки групповой разработки крупных проектов, обеспечивающей управление версиями и помогающей координировать работу программистов. Система VSS (она поставляется отдельно от FoxPro) позволяет закрепить за каждым разработчиком свой набор компонентов проекта, просматривать в удобной форме различия между версиями, хранить историю изменений и многое другое. Все средства VSS доступны непосредственно из среды разработки Visual FoxPro.
Среда разработки
В Visual FoxPro 5.0 значительно расширена интегрированная среда разработки. Редактор кода теперь позволяет выделить блок текста отступом или проставить во всех строках блока метку комментария. Цветовая разметка, которую можно настроить по своему вкусу, делает текст программ гораздо более наглядным.
Для отладки приложений в предыдущих версиях FoxPro служили два окна - Trace и Debug, теперь же появился полнофункциональный отладчик, запускаемый в собственном окне и имеющий пять панелей: Trace, Watch, Locals, Call Stack и Output. Конфигурацию панелей можно настроить и сохранить, поддерживается перетаскивание с одной панели на другую.
Помещая объект в форму, разработчик имеет возможность настроить его стандартное поведение. В частности, поля таблиц помещаются в формы вместе с альтернативными именами (captions), имя поля включается в имя объекта, а тип объекта можно назначить по желанию разработчика.
На рисунке 7 показано поле Discount таблицы Customer, которому поставлена в соответствие кнопка вращения (spinner). Теперь в любую форму это поле будет помещено вместе с кнопкой вращения и текстом "Normal Discount". При необходимости полю можно поставить в соответствие и класс из библиотеки, созданной разработчиком. Это позволяет создавать локальные назначения, т. е. назначения конкретных базовых или пользовательских классов конкретным полям. Кроме того, в глобальных настройках Visual FoxPro можно установить глобальные соответствия для типов полей, действующие независимо от таблицы, к которой относится поле.
Подобная возможность особенно важна при групповой работе над проектом, когда необходимо добиться единообразия интерфейса в модулях, разрабатываемых различными программистами.
Как уже упоминалось в связи с проблемами производительности приложений, внешние соединения, ранее требовавшие ручного кодирования, теперь поддерживаются в Конструкторе запросов. Это сокращает время программирования и снижает вероятность ошибок.
Сила пакета Visual FoxPro лежит в его долгом присутствии на рынке, зрелости заложенных в продукт технологий, высокой скорости работы с данными. В версии 5.0 он стал компонентным инструментом. Несомненно, разработчики версии 5.0 смогли создать продукт, который позволит Visual FoxPro сохранить лидерство среди аналогичных средств разработки и поможет программистам создавать более качественные и современные приложения за меньшее время.
Дмитрий Артемов - менеджер Российского отделения Microsoft по средствам разработки баз данных и издатель русской версии журнала Pinter FoxPro Letter. E-mail: root@artemov.msk.su.