Приложения. Приложения в архитектуре Luther ответственны за объединение системы в единую функциональную сущность и предоставление интерфейсов прикладного
Приложения в архитектуре Luther ответственны за объединение системы в единую функциональную сущность и предоставление интерфейсов прикладного программирования (APIs), ориентированных на взаимодействие с системой. Обращаясь к API, пользовательские интерфейсы предлагают их характеристики конечному пользователю. Приложения могут находиться между произвольным числом пользовательских интерфейсов и компонентов. Таким образом, приложения связывают m компонентов и выставляют напоказ совокупную «прикладную» функциональность n пользовательских интерфейсов. Такие приложения «не распознают» пользовательские интерфейсы — иначе говоря, они способны выставлять напоказ такую функциональность, которую может использовать любой пользовательский интерфейс. В зависимости от ситуации любой пользовательский интерфейс выставляет напоказ всю функциональность или какое-то из ее подмножеств. К примеру, пользовательский интерфейс, исполняемый на мобильном клиенте (например, на устройстве с операционной системой Windows СЕ), не может предлагать возможности администрирования, которые были бы вполне приемлемы в рамках версии этого интерфейса для настольной системы. Идея в том, чтобы выставлять напоказ все функции, которые могут быть выполнены в данной системе. Решение о том, какие из них предоставить пользователю и как это сделать, каждый пользовательский интерфейс принимает самостоятельно. Согласно требованию об оперативности разработки и размещения, приложение разрабатывается в как можно более тонком виде. Реализуется эта задача путем делегирования большей части бизнес-задач компонентам (об этом мы поговорим в следующем разделе). Критерий, исходя из которого прикладной код передается компонентам, очень прост. Сформулировать его можно так: «Предусматривает ли данная функциональность возможность повторного использования?». Если предусматривает, то ее необходимо обобщить, тем самым увеличив шансы на многократное применение, и, соответственно, реализовать как компонент. Если же вероятность повторного использования данного функционального блока низка, значит, его стоит встроить в приложение. Ниже перечислены основные элементы приложений. ♦ Интерфейс прикладного программирования. Представляет собой фасад функций, которые система выставляет напоказ пользовательским интерфейсам. Обратите внимание на то, что данные, передаваемые через интерфейс прикладного программирования, не адаптированы к конкретному представлению (например, HTML) и носят универсальный характер (например, XML). ♦ Состояние, сеанса. После инициализации, происходящей и результате аутентификации пользователя, информация о состоянии сеанса сохраняется вплоть до закрытия клиентской программы. В архитектуре J2EE управление сеансом упрощается за счет того, что контейнеры не только хранят и извлекают информацию о состоянии сеанса, но также предусматривают аутентификацию и авторизацию. Приложение определяет данные, которые необходимо сохранять между запросами, и для их хранения и извлечения делает соответствующие вызовы. ♦ Прикладная бизнес-логика. Это любая логика, которая является уникальной для приложения и не предусматривает повторного использования в других приложениях. ♦ Делегирование компонентам. Это код, предназначенный для делегирования задач компонентам. Как правило, реализуется посредством образца проектирования под названием «бизнес-делегат» (Business Delegate[9]). Эти элементы появляются в результате применения тактики «прогнозирование ожидаемых изменений» и родственны тактике реализации модифицируемости под названием «отделение пользовательского интерфейса». При создании нового пользовательского интерфейса совершенно не обязательно вносить изменения в прикладной уровень или в компонент. Интеграция новой реализации компонента в систему проходит независимо от прикладного уровня и пользовательских интерфейсов. При введении в систему новой функциональности она дополняется новым компонентом. В прикладной уровень вводятся соответствующие методы интерфейса прикладного программирования (API), а в пользовательский интерфейс вводятся (или не вводятся) новые характеристики, обеспечивающие выставление напоказ новых функций.
|