Что такое настоящий архитектурный дизайн?
Что такое настоящий архитектурный дизайн?

Даже если вы отвертка, вы все равно каждый день бродите по «архитектуре» этой системы, возясь в ней. Вам приходится рассматривать ценность и значимость вашей повседневной занятости с общей точки зрения «архитектуры». У вас было много проектов. Когда вы присоединяетесь к новой команде или к некоторым старым проектам, после понимания истории бизнеса, у вас, возможно, уже мелькнула «архитектура» в вашем уме. Тогда, когда вы посмотрите на код, вы будете вне себя от радости: « Конечно же, " Код, лежащий в основе этой «архитектуры», заставляет вас чувствовать себя обновленным при его чтении; в некоторых проектах, когда вы читаете код, вы обнаруживаете, что он отличается от «архитектуры», которая мелькнула у вас в голове. В это время вы можете только закрыться. блокнот с ругательствами, я задумался о том, как можно было «соорудить» такой бардак. Выпив чашку кофе, я продолжил жевать «кучку дерьма» внутри.

Следите за разработчиками Tencent Cloud и заранее получайте техническую информацию из первых рук👇

01. Что такое архитектура?

Слово «архитектура» уже упоминалось во многих местах. Архитектура, архитектура. Что такое архитектура? В реальной работе часто бывает трудно обсуждать один и тот же чертеж архитектуры, поскольку разные люди по-разному понимают связанные понятия, такие как «архитектура», «система» и «модуль».

Прежде всего, давайте разберемся, что такое «архитектура». В Интернете есть множество статей, объясняющих это. Среди них первые две главы «Изучения архитектуры с нуля» Ли Юньхуа дают более четкое представление. Слово «архитектура» может использоваться как существительное или глагол. Как существительное оно описывает структурно-организационные отношения программного обеспечения, а глагол — к процессу проектирования и развития структуры программного обеспечения; Давайте сначала посмотрим на компоненты архитектуры как на название:

система:когда“Архитектура”при создании существительных, Вы можете просто заранее спроектировать систему, Я могу сказать одно App системная архитектура.

Модуль:система Не могу описать Архитектуравнутренние детали, Необходимо разделить на различные модули, Например xxApp Архитектура:

Компоненты:можно считатьсистеманаименьшая единица,Например, модуль сообщений, Если мы продолжим его совершенствовать, Его можно разделить на такие компоненты, как отправитель сообщения и получатель сообщения.

Связанный:компоненты、Модули часто не существуют независимо друг от друга.,Обычно есть какие-то отношения, Например, модуль сообщенийи пользовательские модули,Есть зависимости.

ребеноксистема:когдаодин Архитектура Когда масштаб и сложность относительно велики,Оптические модули и компоненты могут быть нечетко описаны., Некоторые связанные модули можно дополнительно сгруппировать в подкатегории. Например, возможное изображение WeChat Архитектура:

Вышеупомянутое выравнивает концепции компонентов архитектуры с существительным уровнем архитектуры. Когда слово «архитектура» используется как глагол, мы обсуждаем некоторые методологии архитектуры.

02. Вертикальная структура

В вертикальной архитектуре упор делается на многоуровневость, и в основе этой идеи лежит идея многоуровневого проектирования. Это устойчивая идея проектирования в архитектуре операционных систем.

Преимущества такой иерархической изоляции очевидны. Если вы когда-либо занимались разработкой эмулятора Android, вы знаете, насколько важен здесь уровень HAL. С его помощью вы можете легко заменить реализацию ядра Linux с помощью моделирования. легко запускается в системе Windows.

Многоуровневая архитектура — это метод проектирования, который делит системные программы на разные уровни в соответствии с функциями и обязанностями. Каждый уровень имеет свои конкретные обязанности и взаимодействует с другими уровнями через понятные интерфейсы. Этот архитектурный подход помогает улучшить организацию, удобство сопровождения и тестирования кода, а также может легко заменить и расширить основные возможности одного уровня. Что касается разработки многоуровневой архитектуры для приложений, я написал статью «Обзор архитектуры приложений Android https://www.jianshu.com/p/e157cc64ea5c» в 2016 году. Оглядываясь назад, можно сказать, что основная идея многоуровневой архитектуры по-прежнему остается нет там Изменить.

03. Трехуровневая архитектура

Самая базовая многоуровневая архитектура обычно содержит следующие три уровня:

  • Уровень представления:Отвечает за отображение пользовательского интерфейса и взаимодействие с пользователем.,включать UI Компоненты, контроллеры представлений и т. д., в основном фокусируются на Пользовательский опыт и логика интерфейса 。
  • Уровень бизнес-логики:Внедрение основной бизнес-логики и правил.,Обработка данных, Преобразование и проверка、Координирует взаимодействие между уровнем представления и уровнем доступа к данным.
  • Уровень доступа к данным:Отвечает за взаимодействие с источниками данных.,включатьлокальное хранилище данных(нравиться SQLite、Core Данные) и сетевые запросы, предоставляющие данные Операции CRUD (создание, чтение, обновление, удаление).

04. Четырехуровневая архитектура

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

Он выражает идею и метод наслоения. Конкретное количество слоев зависит от размера и сложности приложения.

Стандарты проверки:Было ли наслоение успешно достигнуто, Стандарт теста заключается в том, действительно ли он дан App Это дает преимущества многоуровневого подхода, упомянутые выше. Например: можно ли заменить основные возможности на одном уровне по низкой цене? При изменении определенного слоя Можно ли провести модульное тестирование этого слоя независимо?

05. Горизонтальная архитектура

Поскольку функциональный масштаб Приложения и масштаб команды продолжают расширяться, может возникнуть необходимость уделить внимание проектированию архитектуры с точки зрения бизнес-модулей. Цель состоит в том, чтобы уменьшить взрывной рост сложности, вызванный увеличением количества приложений. Функциональный масштаб. Горизонтальная архитектура подчеркивает горизонтальное решение между бизнес-модулями для снижения сложности.

5.1 Оценка сложности

Все четыре модуля на рисунке имеют зависимости, поэтому сложность рассчитывается как 24: сложность = 4x3x2x1.

Если мы каким-то образом отделим это (добавив API сервисного уровня):

При такой развязке сложность становится 5: четыре модуля плюс слой изоляции.

Из приведенного выше анализа мы видим, что модульное разделение — это тема, которую невозможно избежать после того, как приложение достигнет определенного масштаба. Гигантские приложения, такие как Taobao и WeChat, уже прошли несколько этапов модульной реконструкции в итеративном процессе. : «Практика реконструкции модульной архитектуры WeChat Android».

https://cloud.tencent.com/developer/article/1005631》

Стандарты проверки:Горизонтальный Архитектура Это успешно?, Стандарт тестирования заключается в том, может ли этот модуль быть независимо разработан, скомпилирован и отлажен, если он разработан независимой командой.

5.2 Архитектура не является универсальным решением

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

Для получения подробной информации, пожалуйста, обратитесь к:

«Три принципа архитектурного проектирования https://time.geekbang.org/column/article/7071»

  • Подходящий принцип:в соответствии скогда Предыдущий тип бизнеса、Выберите правильный вертикальный размер、Горизонтальный Архитектурный дизайнплан
  • Простой принцип:все делает Архитектурачас,Существуют как комплексные решения, так и простые решения, способные удовлетворить текущие потребности бизнеса.,Старайтесь выбирать простые решения.
  • Эволюционные принципы:Вичат、Таобао такой гигант Приложение, оно не стало таким с самого начала, их много App Вначале, возможно, не было такой горизонтальной Архитектуры, как модульность и плагинизация. дизайн,Все вместе, функции и масштабы пользователей продолжают расширяться.,Архитектура возникла в результате непрерывной реконструкции. первый,дизайн Разработайте архитектуру, которая соответствует вашему существующему бизнесу,Архитектура должна постоянно оптимизироваться для практического применения.,сохранить лучшие части,Измените дефектный дизайн, исправьте неправильный дизайн и удалите ненужный дизайн.,Заставьте Архитектуру продолжать совершенствоваться. когда бизнес развивается,Старую Архитектуру можно реконструировать или даже переписать,Но ценный опыт и уроки найдут отражение в новой Архитектуре.

5.3 Сначала архитектура, затем шаблоны проектирования

Когда я впервые пришел в эту индустрию, многие шаблоны проектирования сбивали с толку. Думаю, мы изменили порядок, из-за чего нам было трудно понять, почему этот шаблон использовался и какова роль принципов проектирования SOLID.

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

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

Чтобы удовлетворить требования горизонтальной архитектуры и удалить зависимости модулей, архитектура становится:

Делая такую ​​настройку, мы неосознанно использовали SOLID В принципе инверсии зависимостей есть несколько принципов.

5.4 Кроссплатформенность и динамичность

Кроссплатформенность и динамика — это темы, которых нельзя избежать при построении архитектуры приложения.

Два типа кроссплатформенности:Первый:UI Кроссплатформенное представительное решение WebView、Weex、RN、Flutter и т. д. web план.

Второе: С++ кроссплатформенность, Обычно в определенных конкретных сценариях, где требуется производительность, Например, обработка кодирования и декодирования аудио и видео, некоторые сложные алгоритмы шифрования и дешифрования и т. д. Есть также команды, которые имеют преимущество в виде технологического стека лидерской команды. Выберете перенос бизнеса или даже UI Также используется C++ кроссплатформенность,– Конференция Tencent.

Динамический:представлятьплан WebView,Weex , мини-программа и т. д. web Решения и нативные плагины план.

О том, как выбрать,Когда хотим идеальной динамики или Кросс-платформенный,Возможно, какая-то производительность принесена в жертву,Например WebView , который идеален с точки зрения кроссплатформенности и динамичности, но имеет худшую производительность среди альтернатив. Другой пример: если мы воспользуемся. C++ , с точки зрения производительности проблем определенно нет, но он столкнется с огромными проблемами с точки зрения эффективности разработки и технических требований к персоналу команды.

Некоторые варианты определяются самим бизнесом,– Приложения из магазина приложений, такие как Yongyongbao,О проблеме Кросс-платформенного вообще не стоит думать., Потому что он может работать только Android платформа, Однако у него очень высокие требования к динамике. Будучи конкурентом производителей, он не может быть указан в магазине приложений производителя, поэтому очень важны динамические решения, такие как плагин.

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

06. Резюме

  1. Архитектура как описание имени App система Организационные элементы и организационные отношения.
  2. Архитектура как глагол,Акцент делается на общую методологию Архитектуры.,Вертикальное наслоение Архитектура,Горизонтальная модульная изоляция Архитектура,При этом модель дизайна и принцип дизайна гибко используются для достижения цели Архитектуры.
  3. Архитектура должна адаптироваться к потребностям и изменениям самого бизнеса, Следуйте трем принципам.

07. Расширенное чтение

Только теория в сочетании с практикой может быть полностью понята. Сообщество разработчиков Tencent Cloud ранее сотрудничало с командой Mobile QQ, чтобы спланировать серию статей о технических изменениях Mobile QQ. Нажмите на заголовок статьи ниже, чтобы прочитать ее и понять. суть проектирования решений на основе превосходных архитектурных практик.

«Не боюсь свернуть горы, история обновления и изменения технической архитектуры Mobile QQ»

«Система предотвращения ухудшения стабильности производительности клиента QQ. Техническое решение Hodor»

«QQ 9 — это «тупо быстро, тупо быстро»? ! Позвольте мне показать вам технические секреты, стоящие за этим».

«25-летний технологический тур QQ: свежий дизайн, основанный на технологических исследованиях, для создания легкого и простого QQ9»

-End-

Автор оригинала|Лю Гуанли

Спасибо, что прочитали это, почему бы не обратить внимание?

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose