Pull to refresh

Comments 24

Если вы используете метафору "архитектура", то почему у метафоры "архитектура" есть "слои"? Я ни разу не видел слоистых зданий.


… Поправка, оказывается, такое есть: https://www.pinterest.com/fabricimages/layered-architectural-design/


Но я не уверен, что вы это имели ввиду.

Применительно к слоям эта метафора уже давно применяется, я решил остановиться именно на ней (есть ещё метафора уровни, слои абстракции), так как она часто используется в Мартине Фаулере — Шаблоны корпоративных приложений.
до архитектурного слоя останавливался на понятии Прикладной слой, но Архитектурный слой понятие уже закрепилось более остальных (уровни абстракции, слои абстракции, слои приложения...)

Ну вот у вас есть, допустим, невероятно сложная программа с очень хорошей архитектурой. Называется /boot/vmlinuz-5.4.0-38-generic. И где там слои?


… Допустим, не ядра. Вот другое, невероятно большое и объёмное приложение. https://github.com/ceph/ И где тут слои?


Вы берёте какой-то малюсенький мирок какого-то одного фреймворка и пытаетесь его терминологию распространить на всю вселенную. Не надо.

Спасибо за замечание. Я думал об этом но не упомянул. В gamedev и микроконтроллеры не лезу. Только корпоративные приложения.
Доработал статью, заголовок уточнил
сейчас подумал, вообще архитектурный слой нет проблем использовать в любом проекте, где используется ООП язык, так как анемичная модель — это частный случай применения ООП. Любой функциональный метод можно обернуть в ООП обёртку из которой можно сформировать анемичную модель.
Интересно. А в примере №2 FilesAPI и ConverterPlugin кем используются?

1) AutomatizationWorker
2) DocumentsLogic
3) AutomatizationWorker и DocumentsLogic
4) Как-то иначе?
FilesAPI и ConverterPlugin используется одним из классов DocumentsLogic. На этом слое есть класс-менеджер FS, который представляет собой обёртку над файловой системой. Все действия с файловойсистемой внутри этого слоя выполняются черезе класс FS. В реализации класса FS есть непосредственные вызовы FilesAPI и ConverterPlugin.
ConverterPlugin — это отдельная сборка dll, которая через рефлексию подключается к основному проекту и расширяет возможности FS.
совместно выработать определённость, создать у всех единое представление и выработать короткое, ясное и практичное определение для понятия Архитектурный слой в мире корпоративных приложений.

А вы читали книгу «Руководство Microsoft по проектированию архитектуры приложений»?
Там вполне хорошо описаны архитектурные подходы, паттерны, слои и довольно много практик
Можно свободно скачать с сайта Microsoft
Она довольно старенькая, но содержит очень хорошие знания внути.
Там можно найти информацию еще «до создания слоёв» и как вообще создается архитектура.

нет критериев, по которым те или иные задачи относятся к тому или иному слою,

задачи могут затрагивать слои как по горизонтали, так и по вертикали (см. микросервисы)

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

в базовом смысле слой это абстакция, поэтому что бы вы не делали это можно как то обозвать.

принято считать, что слоёв должно быть 3: данные, бизнес-логика, интерфейса — но на самом деле слоёв может быть любое необходимое количество

Это допущение ради упрощения.
есть понятие «классическая 3х слойная архитектура», это понятие дает некую связь в общении разрабов с неразрабами
Но так же есть и 4х и 5ти слойные архитектуры и вертикальные, опять же зависит от того, на что делается упор в проектировании и разработке
Ну и для многих является откровением что абстракции делятся на друге абстракции и чуть ли не каждый слой из 3х слойной архитектуре может быть разбит так же на 3х слойную архитектуру, только с большей конкретикой
(см. we need to go deeper meme)

Ну и в создание «общей архитектуры» без знания целей и без учета закона Конвея как то не верится.
Спасибо за ссылку, почитаю.
А вы можете сейчас сказать на сколько отличается определение архитектурного слоя в этой книге и в статье?
Чем-то можно определение дополнить?
Суть в том, чтобы выработать короткое и понятное определение, чтобы всем ими пользоваться.
Для меня все эти определения это просто «вода», они каждые 3 года меняются. Если брать моё мнение, то «слой» это что то что можно «пощупать» или «ощутить», там же это описано в виде некой абстракции — стиля. (ну и качество перевода всегда влияет на термин)

Архитектурный стиль, иногда называемый архитектурным шаблоном – это набор принципов,
высокоуровневая схема, обеспечивающая абстрактную инфраструктуру для семейства систем.
Архитектурный стиль улучшает секционирование и способствует повторному использованию
дизайна благодаря обеспечению решений часто встречающихся проблем. Архитектурные
стили и шаблоны можно рассматривать как набор принципов, формирующих приложение.
Гарлан (Garlan) и Шоу (Shaw) определяют архитектурный стиль как:
«… семейство систем с точки зрения схемы организации структуры. Точнее говоря,
архитектурный стиль определяет набор компонентов и соединений, которые могут
использоваться в экземплярах этого стиля, а также ряд ограничений по их возможным
сочетаниям. Сюда могут относиться топологические ограничения на архитектурные
решения (например, не использовать циклы). Описание стиля также может включать и
другие ограничения, такие как, скажем, необходимость обработки семантики
выполнения.»


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

кратко из описания многослойной архитектуры
Рассмотрим общие принципы проектирования с использованием многослойной архитектуры:
  • Абстракция
  • Инкапсуляция
  • Четко определенные функциональные слои
  • Высокая связность
  • Возможность повторного использования
  • Слабое связывание
  • Разделение функциональности
  • Уведомление на основе событий
  • Делегированная обработка событий
  • Изоляция
  • Управляемость
  • Производительность
  • Тестируемость



Ну и словосочетание «Архитектурный слой» я как то не особо встречал, либо слой, либо архитектурный шаблон.

Как-то термин "Архитектурный слой" то ли попахивает тавтологией, то ли добавляет в них какой-то то новый слой, который отвечает за архитектуру. Очень неудачный, по-моему

Чувство, что меня троллят, но отвечу)
Слой архитектуры воспринимается, как будто есть слой архитектуры, а есть ещё какой-то слой (не архитектуры)
Когда я говорю Архитектурный слой, подразумевается, что сама архитектура состоит из слоёв

Не троллят. Вот у меня ровно наоборот. Слой торта для меня — один из слоёв торта, а тортовый слой — слой из торта и бог знает из чего ещё какие слои есть.

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

чтобы дать ответ как у вас, можно даже не иметь никакого опыта в разработке
зайдите для начала на википедию, прочитайте определение Архитектура ПО и всё что в статье, потом можем пообщаться

Не стоит обижатйся ;) Я в Архитектуре 15 лет.

у вас слишком много времени для троллинга…
не пишите сюда больше
удачи!

не вам указывать.
Ну рально то что вы описываете это не об архитектуре. И если пишите статьи то получайте фидбек. Да такой короткий фидбек.

не интересует ваш короткий фидбек, спасибо, не пишите сюда
«Ну рально то что вы описываете это не об архитектуре» — чувствуется 15 летний опыт…

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


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


Слои относительно отдельны, то есть у них есть границы, обычно не сильно размытые.


Слои либо выделяются сами, просто из-за структуры области деятельности, либо формируются насильно. Второе, ИМХО, приводит к натягиванию сов на глобусы, и ничего хорошего не получается.

Sign up to leave a comment.

Articles