Драйвер JayBird Туре 4 ("родной") JDBC поставляет интерфейс, предназначенный для независимой от платформы разработки на Java с использованием Firebird. Некоторые наборы компонентов устанавливаются в качестве интерфейса разработчиками, использующими Delphi, Kylix и C++ Builder для написания клиентов баз данных Firebird. Двумя лучшими наборами компонентов являются IB Objects и FIBPlus. Доступны некоторые другие наборы компонентов, осуществляющие минимальную поддержку возможностей Firebird. Более подробную информацию см. в приложении 3.
Встроенные приложения Firebird
Firebird предоставляет две различные встраиваемые модели: приложения встроенного SQL (Embedded SQL) и встраиваемые серверы.
В этой модели программа приложения включает в себя интерфейс клиент-сервер и уровень приложения конечного пользователя- все в одном исполняемом модуле. Операторы SQL находятся непосредственно в исходном коде программы, написанной на С, C++ или другом языке программирования. Затем исходный код приложения обрабатывается препроцессором gpre, который отыскивает блоки кода, содержащие операторы SQL. Он подставляет макровызовы функций, которые функционально эквивалентны функциям динамической библиотеки API. Когда работа препроцессора завершается, все выполненные преобразования операторов SQL компилируются вместе с приложением. Такие операторы перед компилированием называются статическим SQL.
В таком стиле приложений доступно специальное расширенное подмножество исходных команд, похожих на SQL. Встроенный SQL (Embedded SQL, ESQL) предоставляет программисту простой язык высокого уровня в виде "черного ящика", в то время как gpre выполняет всю работу по преобразованию сложных языковых структур в эквивалентные вызовы API. Эти статические операторы дают незначительное увеличение скорости по сравнению с динамическим SQL, поскольку не требуют дополнительных затрат на синтаксический разбор и интерпретацию операторов SQL во время выполнения.
Язык и техники ESQL подробно не обсуждаются в данной книге. Документ "InterBase Embedded SQL Guide" ("Руководство по встроенному SQL InterBase", EmbedSQL.pdf), доступный в Borland, содержит описания, необходимые для разработки встроенных приложений Firebird.
В модели встраиваемого сервера не существует преобразований операторов SQL. Клиент и сервер объединяются в одну компактную динамическую библиотеку для получения независимого приложения. Приложение загружает библиотеку во время запуска точно так же, как обычное приложение Firebird будет загружать клиентскую библиотеку, функции API вызываются во время выполнения. При этом нет необходимости инсталлировать внешний сервер, потому что такой клиент внутренне связывается со своим собственным экземпляром серверного процесса Firebird. Когда приложение завершается, оно выгружает встраиваемый сервер, так что не сохраняется никакого серверного процесса.
Хотя здесь не используется и не эмулируется сетевое соединение, объединенное приложение клиент-сервер получает доступ к базе данных тем же способом, что и другие динамические приложения клиентов Firebird. Существующий код приложений, написанный для использования в обычной сети клиент-сервер, работает без каких-либо изменений со встраиваемым сервером.
Библиотека встраиваемого сервера fbembed.dll, включенная в инсталлятор Firebird 1.5 для Windows, имеет архитектуру, аналогичную Firebird SuperServer. Если вы планируете инсталлировать и использовать fbembed.dll, обратите внимание на специальные инструкции по размещению библиотек и исполняемых программ Firebird. Измененные файлы README и другие заметки обычно размещаются в каталоге /doc серверной инсталляции.
Вы можете инсталлировать встраиваемый сервер и выполнять приложения встраиваемого сервера на машине Windows, на которой также находится Суперсервер или Классический сервер Firebird, хотя удаленные клиенты не могут соединяться с базой данных, с которой работает приложение встраиваемого сервера. В релизе 1.5, где не лучший протокол IPSERVER все еще используется для связи клиента и сервера, возможно использование библиотеки встраиваемого сервера в качестве клиента других серверов. В более поздних версиях, где протокол IPSERRVER заменен на XNET, это невозможно.
Firebird 1.0.x не содержит варианта встраиваемого сервера для Windows.
Встраиваемый сервер является "родным" режимом доступа локального клиента к Классическому серверу Firebird в Linux/UNIX, включая и версию Firebird 1.0.x. Библиотека встраиваемого сервера для локального доступа- libfbembed.so для Firebird 1.5 и выше и libgds.so для Firebird 1.0.x.
Как и версия IPSERVER для Windows, встроенный клиент в Linux/UNIX может так же работать, как удаленный клиент с другим Классическим сервером Firebird. При этом клиент не будет потокобезопасным (thread-safe). Для многопоточных приложений необходимо использовать обычный клиент libfbclient.so. В Firebird 1.0.x удаленный клиент поставляется в комплекте Суперсервер для Linux и двусмысленно назван libgds.so, как и встроенный клиент Классического сервера.
! ! !
ВНИМАНИЕ! Клиент Суперсервера для Linux является клиентом, поддерживающим потоки для многопоточных приложений, однако он не поддерживает выполнения нескольких потоков в одном и том же соединении с базой данных. Отдельные экземпляры соединения должны быть созданы для каждого потока.
. ! .
Сервисы API
Открытый код InterBase 6 - на основе которого был разработан Firebird - обрабатывает в первую очередь обращения к функциям интерфейса API для некоторых действий сервера, таких как копирование/восстановление, получение статистических данных и управление пользователями. Многие из этих обращений предоставляют программный интерфейс для инструментов командной строки. Небольшое количество функций сервера низкого уровня включает также некоторые функции, перекрывающие функции ядра API.
Некоторые организации разработали и распространяют сервисные компоненты, инкапсулирующие вызовы функций сервисов API из среды разработки Delphi, Kylix и C++ Builder. Большинство из них доступны для свободной загрузки с сайтов авторов или сообщества Firebird. Более подробную информацию см. в приложении 3.
В Firebird 1.0.x сервисы API и сервисные компоненты работают только с серверами типа Суперсервер. В Firebird 1.5 Classic сервисы API полностью поддерживаются только начиная с версии 1.5.2. В версиях 1.5.0 и 1.5.1 Classic поддерживаются только некоторые функции - такие как вызов модулей gbak (копирование/восстановление) и gfix (обслуживание базы данных).
Инсталляция клиентов
Инсталляция удаленных клиентов является основной частью установки ваших приложений баз данных в сети клиент-сервер. Если вы новичок в Firebird и сетях клиент- сервер, вам рекомендуется пропустить этот раздел, пока вы не получите возможность поэкспериментировать с клиентами, выполняющимися локально - на той же машине, что и сервер.
Каждой машине удаленного клиента требуется клиентская библиотека, которая соответствует версии сервера Firebird. Обычно допустимым является использование клиентской библиотеки из другой сборки (build) релиза - при условии, что номера версий совпадают. Тем не менее при обновлении сервера прочтите документацию README, поступающую с конкретным релизом, для определения того, где можно использовать более ранние клиентские версии.
Внимательно просмотрите системные пути на каждой клиентской рабочей станции, на которой вы собираетесь инсталлировать клиента Firebird, для удаления при необходимости существующих клиентских инсталляций InterBase или Firebird.