ПО "Avalanche — application framework for Java" позволяет строить классическую трехуровневую архитектуру информационной системы, в которой занимает место контроллера.
Логически уровень контроллера разбит на два программных слоя «функция» и «приложение», между которыми допускается наличие сети передачи данных.
Рис.1 Модель MVFA
Такое разбиение превращает классическую трехуровневую модель MVC (Model – View – Controller) в четырехуровневую модель MVFA (Model – View – Function – Applicatiomn)
Программная модель контроллера разбитого на два уровня состоит из шести основных элементов (см. рис. 2): function, application, interface, connector, adapter и publish.
Function (функция) – любой программный объект, имеющий методы реализации какого либо функционала системы.
Application (приложение) – программный объект более высоко уровня, который выполняет преобразование данных между представлением пользователя и одной или несколькими функциями. Этот программный объект может выступать в роли функции для других программных элементов «приложение»
Рис.2 Программная модель
Специализированные программные элементы interface (интерфейс) и connector (коннектор) образуют слой передачи данных между функцией и приложением. Interface выполняет роль клиента, connector – сервера. Пары interface – connector реализуют определенный протокол передачи данных и изолируют взаимодействие между функцией и приложением от протокола сетевого уровня. В "Avalanche -application framework for Java" реализованы несколько протоколов взаимодействия (несколько пар interface – connector, каждая пара для своего протокола) между «функцией» и «приложением». Выбранный протокола взаимодействия между узлами описывается в конфигурации узлов системы и не влияет на программный код информационной системы. В любой момент допускается смена протокола взаимодействия в конфигурации узлов системы при возникновении каких либо новых требований.
Существует специализированный не парный (с коннектором) интерфейс высокой доступности "hadr", с помощью которого можно создавать отказоустойчивые системы. "Hadr" интерфейс позволяет резервировать удаленные узлы системы, объединяя несколько программных интерфейсов в один логический интерфейс. При выходе из строя одного из удаленных узлов системы, "hadr" интерфейс перенаправляет вызовы на другие резервные узлы.
Adapter (адаптер) – специализированный программный элемент, с помощью которого «приложение» взаимодействует с локальной или удаленной (на другом узле системы) «функцией». В терминах языка программирования Java адаптер это интерфейс – декларация методов функции. Программный элемент «адаптер» не имеет реализации. С каким объектом «функция» (локальным или удаленным) будет взаимодействовать «адаптер» во время выполнения определяется в конфигурации приложения. Локальная «функция» адресуется заданным именем этой «функции» в конфигурации. Удаленная «функция» адресуется парой значений «имя_интерфейса»/«имя_удаленной_функции».
Publish (публикация) – специализированный программный элемент, с помощью которого локальная функция публикуется в коннекторе. В конфигурации программного элемента «публикация» можно задать имя, под которым опубликованная функция будет известна удаленным узлам.
В информационной системе, разработанной на основе "Avalanche – application framework for Java" могут быть реализованы любые другие программные элементы, которые могут являются частью основных программных элементов «приложение» и «функция». API "Avalanche – application framework for Java" упрощает процесс разработки собственных программных элементов, предоставляя функции их создания и инициализации, а так же соглашения по установке значений в поля объекта из конфигурационного файла.
Таким образом разрабатывая собственные программные элементы и использую реализованные в продукте "Avalanche — application framework for Java" можно создавать сложные иерархические программные модели приложения, которые можно разместить на одном или множестве узлов информационной системы.