Перед сборкой проекта, помимо проектирования и анализа архитектуры и бизнеса, часто необходимо стандартизировать структуру кода. Идея многоуровневости является наиболее распространенным архитектурным паттерном прикладных систем.
Мы разрежем систему по горизонтали и разделим ее по бизнес-обязанностям, то есть по уровням кода.
Целью этого подразделения является стандартизация логической структуры системы программного обеспечения для облегчения последующей разработки и обслуживания.
Программная система подобна знаменитой картине: под поверхностью цвета и линий скрываются тонкие геометрические структуры.
«Плот Медузы» Жерико имеет пять метров в высоту и семь метров в ширину. Особенно на его изображении две пирамидальные геометрические фигуры образованы дюжиной людей. Это признаки классицизма.
Вышесказанное является отступлением, давайте продолжим вводить слои кода.
мы знакомы сMVC(Model-View-Controller,分别是模型层、视图层、控制层)Трехуровневая архитектура является очень типичным шаблоном многоуровневой архитектуры.
Он отделяет страницы от бизнес-логики и повышает масштабируемость и ремонтопригодность приложения.
Трехуровневая архитектура MVC является лишь направляющей идеологией на концептуальном уровне.Если вы хотите сделать разработку более стандартизированной, четче с обязанностями и уровнями, требуется следующий более подробный дизайн многоуровневого кода.
Прежде чем вводить многоуровневый код, вам необходимо понять модель предметной области в иерархии кода.
доменная модель
Ниже представлены несколько часто используемых моделей предметной области, которые относятся к разработке стандартов кодирования Alibaba.
DO
DO (Data Object) соответствует структуре таблицы базы данных один к одному, а объект источника данных передается вверх через уровень DAO.
DTO
DTO (объект передачи данных) — это объект удаленного вызова, представляющий собой модель предметной области, предоставляемую службой RPC.
Следует отметить, что для DTO он должен быть сериализован, реализовывать интерфейс Serializable и предоставлять serialVersionUID, иначе, если serialVersionUID будет изменен во время десериализации, десериализация завершится ошибкой.
BO
BO (Business Object) — это объект, который инкапсулирует бизнес-логику на уровне бизнес-логики.В общем, это составной объект, объединяющий несколько источников данных.
VO
VO (View Object) — это обычно объект, передаваемый уровнем обработки запроса, после преобразования фреймворком Spring он часто представляет собой объект JSON.
наслоение кода
На основе традиционной трехуровневой структуры MVC мы разрабатываем бизнес-систему в виде следующей четырехуровневой структуры: интерфейсный уровень, уровень обработки запросов, уровень бизнес-логики и уровень сохраняемости.
Роль каждого слоя подробно описана ниже.
Интерфейсный слой
Содержимое внешнего слоя охватывает все запросы, инициированные из-за пределов системы, а также настройку триггеров задач, выполняемых по времени, а также процедуры системного мониторинга и обнаружения.
уровень обработки запросов
Роль уровня обработки запросов включает отрисовку страниц с помощью механизмов шаблонов (FreeMarket, Velocity и т. д.), интерфейсов HTTP, которые инкапсулируют RESTful API, а также различные типы интерфейсов, открытые для внешних вызовов.
слой бизнес-логики
Уровень бизнес-логики отвечает за взаимодействие с уровнем сохраняемости данных, включая агрегирование операций из нескольких источников данных и предоставление возможности комбинирования и повторного использования.
Если веб-сайт использует распределенную архитектуру или базу данных необходимо разделить на базы данных, он также включает унифицированные вызовы службы RPC.Чтобы уменьшить ненужные повторные вызовы службы RPC, служба RPC обрабатывает данные единообразно, а затем возвращает диспетчеру, что позволяет сохранить практику подключения RPC.
Кроме того, это также уровень обработки общих бизнес-возможностей, включая решения для кэширования, мониторинг сообщений (MQ), синхронизированные задачи, проверку параметров, преобразование данных, обработку исключений и т. д.
уровень сохраняемости данных
Уровень сохраняемости данных обеспечивает возможность хранения данных и доступа к ним. В том числе возможность доступа к базам данных через DAO и возможность доступа к внешним интерфейсам данных через DAP.
Хороший дизайн многоуровневого кода может значительно уменьшить связанность кода, значительно повысить простоту использования и заложить хорошую основу для микросервисного и модульного разделения системы.