В чем разница между монолитом и русским слоем?
У меня есть несколько вопросов, касающихся архитектуры монолита и n слоя.
Во-первых, в чем разница между архитектурой Monolith и n Layer?
Во-вторых, скажем, у меня есть одно решение Visual Studio, которое состоит из нескольких проектов, таких как:
- Уровень представления
- Сервисный уровень
- Бизнес уровень
- Перекрестный слой
- Уровень данных
- Модульный тест
Это считается монолитной или русской архитектурой?
Если у меня есть микросервисы, которые состоят (скажем, из 3 веб-API), и я строю каждый сервис в отдельных решениях Visual Studio, можно ли реализовать мою предыдущую структуру проекта (уровень обслуживания, бизнес-уровень, уровень данных и т. Д.)?
Большое спасибо и извините за мой плохой английский.
1 ответ
Итак Monolith
Решения - это старый способ иметь ОДИН проект в одном решении, в котором есть весь код.
Допустим, вы делаете сайт.
Это означает, что вы должны создать одно Решение с одним Проектом и всеми вызовами базы данных (постоянство), логикой (бизнес-логика / сервисы) и, наконец, выяснить, как отобразить, что вычисленные данные (представление) все смешаны хаотическим образом в этом единственном проекте. Иногда люди пытаются разделить проблемы на папки, но обычно это большой беспорядок. Это делает поддержку / обслуживание приложения кошмаром. Если вы хотите внести одно изменение в веб-сайт / приложение, все приложение будет отключено / перезапущено.
против
n-tier / n-layered
решения / приложения. Именно здесь у нас есть несколько проектов (обычно) в решении, которое разделяет проблемы нашего приложения на компоненты большего размера. Это позволяет нам сохранить проблемное пространство в одной области, что делает его более легким в обслуживании и поддержке. Это также позволяет упростить повторное использование ваших различных компонентов / проектов / DLL в различных других подсистемах вашего приложения. Это намного лучше, чем старая модель монолитной архитектуры. Но, если вы хотите внести одно изменение в веб-сайт / приложение, все приложение будет отключено / перезапущено.
Наконец, мы имеем microservices
, Это более современная концепция и продолжается с развитием monolith -> n tier -> microservices
, Это когда мы разделяем наши проблемы приложений на отдельные приложения, так что, когда необходимо обновить один микросервис, тогда все приложение не остановилось. Несомненно, часть приложения, которая зависит от микросервиса, может остановиться / быть затронута, но возможно, что все приложение не так.
Давайте использовать пример:
У меня есть сайт, который продает домашних животных (кошек / собак / и т. Д.). Я мог бы разделить этот сайт на отдельные мини-сайты микросервисов:
- аутентификация
- администрирование / управление бэкэндом (подумайте: вещи могут видеть только администраторы)
- общедоступный сайт
- инвентарь для животных
- корзина
Таким образом, каждый из них представляет собой отдельный веб-сайт, как приложение n-уровневой архитектуры. Так что это будет иметь уровень представления (веб-сайт MVC). некоторый проект базы данных и некоторые основные услуги.
Теперь каждый из 4-х микросервисов (мини-сайтов) делает это.
Теперь вам нужно обновить некоторые вещи в разделе администрирования веб-сайта. Вы отключаете его, и основной веб-сайт остается в рабочем состоянии. Люди все еще могут просматривать и покупать животных.
Так что да, это хорошая вещь для реализации микросервисов, если ваше приложение достаточно велико, чтобы иметь области, которые вы можете сегментировать. Это добавляет сложности, но также имеет свои преимущества.
И да, ваши микросервисы должны следовать n-уровневому шаблону, если ваше приложение не является каким-то глупым приложением hello-world или каким-либо исследовательским проектом.
Краткий ответ на ваш вопрос: горизонтальное разбиение технологического стека (многоуровневая архитектура) против вертикального разбиения технологического стека (микросервисы).