Эта статья обобщает и развивает описание многослойной архитектуры, представленное в статьях "Examples of Layered Application Architecture Based on the Use of Sublayers Sets and a Hierarchy of Data Models" и "Layered Application Architecture with a Homogeneous Layer Structure". Рассмотрен подход, позволяющий с единой позиции подойти к описанию основных используемых типов архитектуры приложений.
Основными задачами функционала приложения являются:
обеспечение работы пользователя при помощи визуального интерфейса;
обработка данных с использованием алгоритмов бизнес-логики;
обмен данными с внешними источниками данных;
обмен данными с внешними потребителями данных;
обеспечение хранения персистентных данных.
Приложение выполняет хотя бы одну из этих задач. Если приложение реализует более одной задачи, то логично будет разбить его на несколько слоёв и каждый слой будет выполнять одну из этих задач.
В наиболее общем случае архитектуру большинства приложений можно представить в виде однозвенного (single-tier) или многозвенного (multi-tier) приложения, в котором каждое звено (tier) представляет собой многослойное (layered) приложение. При помощи multi-tier архитектуру с layered структурой каждого звена (tier) можно описать основные используемые типы архитектур - Client-Server Architecture, Event-Driven Architecture, Pipes and filters Architecture, Service-oriented Architecture, Microservices Architecture.
Функционал single-tier application состоит из 3 основных групп:
Функционал группы layered состоит из набора изолированных слоёв; каждый слой реализует специфические для него функции; взаимодействие происходит однонаправленно между соседними слоями.
Функционал группы cross-cutting может использоваться всеми слоями приложения.
Функционал группы dataflow реализует механизмы переноса данных, используемых приложением:
data mapping операции для переноса данных между моделями данных приложения;
data binding операции для связывания данных модели данных и визуального интерфейса;
data serialization операции для сериализации / десериализации данных при обмене данными с другими приложениями при помощи data transfer channel.
Работа функционала single-tier приложения может быть представлена в виде набора схем:
схема взаимодействия между слоями приложения;
схема взаимодействия между приложением и внешней инфраструктурой приложения (внешними источниками данных и внешними потребителями данных приложения);
схема переноса данных между моделями данных приложения.
Слой приложения состоит из функционала слоя и данных слоя. Данные слоя организованы в виде моделей данных.
Взаимодействие между слоями организовано иерархически: 1) взаимодействие между близлежащими слоями и между подслоями одного слоя происходит однонаправленно; 2) обмен данными между моделями данных близлежащих слоёв происходит двунаправленно.
С каждым слоем связана одна или несколько моделей данных. В общем случае приложение состоит из трёх слоёв - facade layer, logic layer и persistence layer.
Facade layer используется как фасад для доступа к функционалу приложения из других звеньев multi-tier application или из других приложений.
Logic layer реализует бизнес-логику работы приложения.
Persistence layer реализует функционал доступа к хранилищам персистентных данных (persistence data stores).
Каждый слой многослойной архитектуры приложения можно представить в виде набора подслоёв – подслоя фасада (façade sublayer) и одного или нескольких функциональных подслоёв. Подслой представляет собой функциональный блок, который реализует набор функциональных операций.
Facade sublayer - функциональный блок, который реализует фасад слоя и предоставляет доступ к функционалу слоя для вышележащего слоя приложения или для другого приложения.
Logic sublayer - функциональный блок, реализующий логику работы слоя.
Data access sublayer - функциональный блок, реализующий доступ к внешним источникам данных.
Подслой состоит из API подслоя, которое используется для доступа из вышестоящего слоя или подслоя, и функционала подслоя. API подслоя состоит из набора публичных методов, предоставляющих доступ к функционалу подслоя.
В общем случае приложение может взаимодействовать с набором внешних потребителей (external consumer) и набором внешних источников данных (external data source). External consumer выполняет функции потребителя данных (data consumer) и / или продюсера данных (data producer). External data source выполняет функции data consumer и / или data producer.
External data sources можно разделить на 2 типа – local data sources и remote data sources.
С local data sources приложение взаимодействует напрямую без использования драйверов и библиотек. Примерами local data sources являются local files and shared files in the local network, USB/COM/LPT ports.
Примерами remote data sources являются server databases, FTP servers, directory services (LDAP, Active Directory), web-services, message brokers, email and document storage systems.
Верхняя граница приложения (application upper boundary) разграничивает область функционала приложения и область external consumers. Нижняя граница приложения (application lower boundary) разграничивает область функционала приложения и область external data sources.
В структурной схеме приложения входной интерфейс приложения (application input interface) является шлюзом (gateway) для взаимодействия функционала приложения с external consumers. Примеры application input interface – visual interface (состоит из набора visual form) и data transfer interface (состоит из набора server-side endpoint (server-side socket)). Взаимодействие application input interface с функционалом приложения происходит при помощи генерации событий при действиях, совершаемых external consumers.
Если приложение не взаимодействует с external consumers, то application input interface представляет собой internal interface, который может состоять из набора таймеров и / или внутреннего расписания приложения. Таймеры и расписание запускают на выполнение функционал приложения по заданному в них временному отсчёту.
В структурной схеме приложения выходной интерфейс приложения (application output interface) является шлюзом (gateway) для взаимодействия функционала приложения с remote data sources. Элементами application output interface являются client-side network sockets, библиотеки доступа к источникам внешним данным, драйвера баз данных и драйвера внешних устройств.
Полная структурная схема single-tier приложения с учётом набора слоёв и взаимодействия между слоями, границ приложения и интерфейсов приложения представлена на рисунке 4.
Facade sublayer в любом слое приложения предоставляет доступ извне к функционалу слоя.
Facade sublayer слоя facade layer это набор обработчиков событий визуальных форм или набор обработчиков запросов/сообщений, полученных от внешних потребителей.
Facade sublayer слоя logic layer реализует логику приложения, которая координирует выполнения операций бизнес-логики, внутренней логики приложения и обработки внешних данных. Функционал этого подслоя часто называют application logic.
Facade sublayer слоя persistence layer представляет собой набор объектов для доступа к внешним данным (data access objects).
Logic sublayer в любом слое приложения реализует внутреннюю логику этого слоя.
Logic sublayer слоя logic layer реализует бизнес-логику приложения. Функционал этого подслоя часто называют domain logic.
Data access sublayer в любом слое приложения реализует механизмы доступа и обработки внешних данных.
Для façade layer и logic layer доступ к внешним данным возможен тремя путями: 1) прямой доступ к local data sources (local files and shared files в локальной сети); 2) доступ через application output interface (доступ к web-services, message brokers, directory services, email and document storage systems); 3) доступ через persistence layer (доступ к базам данных).
Для persistence layer доступ и обработка внешних данных является основной задачей.
Данные single-tier application можно подразделить на несколько основных групп:
facade application data – данные, предоставляемые приложением для внешних потребителей;
internal application data – данные специфичные для логики работы приложения (как для бизнес-логики, так и для внутренней логики приложения);
external application data – данные, полученные приложением из внешних источников данных;
boundary application data – данные на границах приложения при взаимодействии приложения с внешними источниками данных и внешними потребителями данных; это данные в элементах управления визуальных форм или двоичные данные при обмене данными по data transfer channel.
Соответствие слоёв приложения и групп данных приложения:
facade application data используются в façade layer;
internal application data используются в слое приложения, если в этом слое есть подслой logic sublayer;
external application data используются в слое приложения, если в этом слое есть подслой data access sublayer.
aleksandy
Опять зачёты за статью?
AlexViolin Автор
Что понимается под зачётами?
mvv-rus
Аналогично: пока читал, сразу подумалось, что очередной студент написал очередной реферат. Правда подумал, что написал он его для курсовой.
Но поглядев на календарь, согласен и с вашей версией: сечас самый сезон для зачетов.