Многослойная архитектура. Определение и задачи

      Комментарии к записи Многослойная архитектура. Определение и задачи отключены

Главная Форумы Программирование Технология программирования Паттерны Многослойная архитектура. Определение и задачи

В этой теме 0 ответов, 1 участник, последнее обновление  Васильев Владимир Сергеевич 3 нед., 1 день назад.

  • Автор
    Сообщения
  • #4058

    Статья знакомит с понятием архитектурного слоя, многослойной архитектуры, правил определения слоёв приложения.

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

    Всю функциональность приложения, так или иначе, можно разделить на группы, в зависимости от того, какая задача выполняется этой функциональностью, что приложение посредством неё делает (общается с пользователем или осуществляет валидацию данных, или манипулирует данными из базы, или описывает сущности, или описывает логику и т.д.).

    Задача слоя определяет его роль и ответственность.

    Если стараться правильно разрабатывать архитектуру, то нужно определять каждый слой так, чтобы его можно было легко заменить на аналогичный или использовать повторно в другом приложении. Это достигается посредством так называемого слабого связывания (low cohesion). А слабое связывание – это результат грамотного использования таких принципов объектно-ориентированного программирования, как абстракция и полиморфизм.

    Для себя можно представить структуру приложения, построенного по принципу многослойной архитектуры, как пирамиду, каждый следующий уровень который расположен поверх предыдущего.

    Особенностью такой пирамиды является то, что называют перевёрнутой пирамидой повторного использования, когда каждый слой, расположенный выше, обладает информацией о том, как обратиться к слою, расположенному непосредственно под ним. И ни в коем случае не наоборот!!!

    И сейчас возникает необходимость уточнить, какие слои считаются нижними, какие верхними и в какой последовательности по отношению друг к другу они расположены.

    Мы для примера возьмём классическую 3-слойную модель (UIL – BLL – DAL), но даже в ней могут присутствовать дополнительные прослойки.

    В самом верху пирамиды находится слой пользовательского интерфейса (UIL – User Interface Layer). Какой технологией он будет представлен – это уже вопрос второй, и это зависит от типа приложения. Это могут быть элементы Windows Forms, это могут быть страницы WPF приложения, это могут быть Web Pages технологии ASP.NET и многое другое. Основная задача этого слоя – предоставлять эргономичный интерфейс пользователю в соответствии с функционалом, описанном в техническом задании. Этот слой просто должен быть красивым, удобным и интуитивно понятным. При этом он должен знать, каким образом он взаимодействует со слоем, находящимся на уровень ниже, как он передаёт туда данные и как он их оттуда принимает для отображения.

    Что же касается логики слоя находящегося под ним, UIL о нём ничего не знает. Какие алгоритма выполняются в тех методах, которые он вызывает по нажатию кнопки или по изменению текста в поле ввода, или при выборе пункта из списка, UIL остаётся в счастливом неведении.

    Ниже может находиться, например, слой сервисов, которые мы сейчас подробно обсуждать не будем, лучше сделаем это в отдельной статье, посвящённой SOA (сервисно-ориентированной архитектуре). Этот слой может не присутствовать и не быть задействованным в 3-слойной архитектуре.

    Ниже находится слой бизнес-логики (BLL – Business Logic Layer: классы, описывающие сущности и основную логику работы приложения (основные алгоритмы работы приложения, вычисления, обработка и т.д.). Например, если мы пишем сетевые “крестики – нолики”, то на этом слое могут быть описаны классы, описывающие игровое поле, выполненный ход, отправку данных по сети и т.д

    Ниже находится слой доступа к данным (DAL – Data Access Layer). Это работа с источником данных (базами данных разных поставщиков MSSQL, MySql, Oracle…), или XML файлами, или бинарными данными, или текстовыми файлами, короче говоря, всем тем, в чём можно данные хранить постоянно). Здесь тоже описана логика, но направленная именно на взаимодействие с источником и передачу полученных результатов на уровень выше.

    Могут быть ещё и другие слои, но какие и в какой последовательности они расположены в пирамиде архитектуры – зависит от приложения.

    Главное, что нужно помнить – это следующий набор правил:

    • каждый слой занимается конкретной задачей.
    • логика разных слоёв не повторяется и не пересекается
    • способ обращения к нижестоящему слою чётко определён
    • способ поставки информации вышестоящему слою чётко определён
    • слои слабо связаны
    • слои расположены вертикально, хотя есть сквозная функциональность, которая может пронизывать пирамиду сверху вниз
    • слои могут размещаться физически на одном компьютере ( в пределах одного уровня), а могут быть на разных машинах, например, в распределённых приложениях.
    • логика разных слоёв инкапсулирована, соответственно, разным слоям не нужно делать никаких предположений о том, как реализован код других слоёв приложения.
    • возможность использования в других сценариях (за счёт слабого связывания и чётко определённой задачи).

    Итак, я надеюсь, мне удалось разъяснить понятие слоя приложения, рассказать, каким правилам подчиняются слои в приложении, а также объяснить, что такое многослойная архитектура и чем она хороша.

Для ответа в этой теме необходимо авторизоваться.