Структура и особенности реализации RAD-платформы "Эрсис"


Автор(ы): Ю.Н. Гарашко

Основой успешной деятельности разработчика программных продуктов является наработанный им программный код. Можно ли защитить затраты на его наработку, то есть создать этот код так, чтобы он работал как на любой существующей платформе, так и на той, которая, возможно, появится в будущем? Для этого необходимо чтобы этот программный код не зависел от сервера БД и используемого механизма доступа к ней. При этом должна обеспечиваться эффективная работа с данными, высокая скорость работы приложения, приемлемое время создания и модификации кода. Лозунгом должно быть: написано один раз, работает вечно.

На первый взгляд кажется, что поставленная таким образом задача не имеет решения, и это действительно так, если не ограничивать класс программ, которые мы хотим создавать с помощью этого средства разработки. RAD-платформа "Эрсис" с успехом может быть использована как для работы с большими объемами данных, так и для решения сложных задач, требующих значительных объемов расчетов и, следовательно, создающих значительную нагрузку на процессоры вычислительной сети. Более того, в нашем подходе при выполнении сложных расчетов эта нагрузка с дисковой подсистемы сервера сознательно переносится на память и процессор клиентского компьютера или компьютера сервера приложений.

Предлагаемый подход специфицирует некоторый набор процедур и классов на основе расширенной реляционной модели данных. Прикладные программные модули не содержат ссылок на конкретные реализации источников данных. В редких случаях присутствует обращение к абстрактному типу TDataSet.


Структура RAD-платформы "Эрсис"





Текущая версия RAD-платформы "ЭРСИС" является набором библиотек и инструментов, расширяющих среду программирования Delphi. На наш взгляд, она упрощает решение следующих проблем, возникающих при разработке программных продуктов:

  • Быстрое создание реляционных моделей данных и прикладных программных модулей на их основе.

    Расширенная реляционная модель является ключевым элементом системы управления реляционными данными erSys. Она строится над логическими базами данных, которые состоят из SQL-потоков данных и связей между ними. SQL-поток является логическим представлением сущности реляционной БД и ее атрибутов. Понятие связи в модели данных "Эрсис" является расширенным, и помимо отношений Foreign-Primary Key, содержит элементы описания поведения пользовательского интерфейса, не связанные с визуализацией данных.

  • Обеспечение независимости получаемых программных решений как от используемого типа RDBMS, так и от технологий доступа к ним (BDE, DBExpress, ADO, ZEOSLIB и другие).

    В процессе развертывания приложения выполняется привязка логической базы к РСУБД и механизму доступа к ней. Тем самым определяется особенности синтаксиса генерируемых SQL-операторов, базовые классы источников данных, используемых при активизации SQL-потоков данных. В зависимости от вида SQL-потока могут открываться различные компоненты доступа к данным и их наборы. (Например, при активизации редактируемого SQL-потока через BDE, будут созданы TQuery, TUpdateSQL и необходимое количество TQuery для поддержки вычисляемых и обновляемых полей. Если тот же самый SQL-поток активизируется через DBExpress, создаются требуемое количество компонентов TSimpleDataSet и TSQLQuery.) Разработчик прикладного модуля напрямую с этими компонентами не взаимодействует. При написании прикладного кода он оперирует, так называемыми дескрипторами источников данных, которые инкапсулируют механизмы доступа к данным.

  • Улучшение управляемости процессом разработки программного обеспечения путем ограничения разработчика прикладного ПО рамками стандартного API-интерфейса платформы.

  • Простота развертывания и поддержки приложения у заказчиков.

    Каждый исполняемый модуль содержит описание всех логических баз, с которыми он взаимодействует. При его развертывании, на основании SQL- потоков создается или модифицируется схема физической БД с учетом особенностей конкретной РСУБД. Имеется возможность сравнить структуру логической базы данных модуля со схемой РСУБД или получить XML-описание схемы логической базы данных.

Функциональные особенности RAD-платформы "Эрсис"


  • Поддерживается работа в режиме "клиент-сервер";
  • Поддерживаются следующие механизмы доступа к данным: BDE, DBExpress, ODBC, ZeosDBO, DOA, IBExpress, NCOCI8, dbGO.
  • Реализована технология erCompute. Её основу составляет оригинальный класс, инкапсулирующий функциональность таблицы в памяти (так называемый адсорбер данных). Адсорбер данных предназначен для организации загрузки данных из БД в память и манипулирования ими в процессе выполнения расчетов. Адсорбер поддерживает динамическую группировку по ключевым полям (SUM, MIN, MAX) по мере загрузки данных; вторичные индексы и поиск по ним; возможность наложения фильтра при создании индекса. Технология интегрирована с системой управления SQL-потоками данных, что позволяет быстро создавать структуры адсорберов данных по реляционной модели и обеспечивать загрузку данных по условию. Библиотека разработчика erAPI имеет большой набор функций для манипулирования адсорберами: клонирование структур, соединение адсорберов между собой и с SQL-потоками данных, сохранение в хранилище отчетов и другие.
  • Реализована библиотека автоформ erForms. Обеспечивается работа со справочниками:
        - поиск;
        - простая и сложная фильтрация;
        - ввод новых записей;
        - выборочная или полная печать;
        - экспорт в MSOffice;
        - отображение отношений типа "мастер-деталь";
        - отображение набора логически связанных SQL-потоков.

  • Переработана и расширена модель событий Delphi, связанная с компонентами доступа к данным. Используется очередь модулей обработки событий. Модуль с некоторым приоритетом устанавливается в очередь при старте приложения, либо динамически в процессе его работы. При необходимости его можно убрать из очереди. Событие характеризуется типом, логическим именем SQL-потока, именем поля и прочими атрибутами.
  • Разработан модуль администрирования erAdmin, обеспечивающий функции создания, проверки и модификации структуры физической РСУБД в соответствии с реляционной моделью erSys. Обеспечивается также перенос данных между РСУБД различных производителей, экспорт модели в XML-формат и другие.