Уроки по Golang. Advanced. Чистая Архитектура / Clean Architecture Часть 3
HTML-код
- Опубликовано: 12 сен 2024
- Заканчиваем #чистая #архитектура на примере #golang композитами. Третья часть& Дальше будем делать приложение с использованием этой архитектуры!
Приятного просмотра!
Больше обо мне и курсах можно прочитать здесь:
artofedu.org/
GitHub репозиторий:
github.com/the...
Часть 2 - • Уроки по Golang. Advan...
Часть 1 - • Уроки по Golang. Advan...
Поддержи выход новых видео на Патреоне!
/ theartofdevelopment
Другие видео:
Уроки по Golang. Advanced. REST API. Вебсервер.
• Уроки по Golang. Advan...
Изучаем Python. Урок 1. Основы. Бонус: Пишем приложение на FastAPI • Изучаем Python. Урок 1...
Изучаем Golang. Урок 1. Основы + веб-сервер в 3 строки в конце урока! • Изучаем Golang. Урок 1...
Разработка системы заметок на Python, Golang и микросервисы в 2021 году • Разработка системы зам...
Как стать разработчиком. Часть 1 • Как стать разработчико...
Что такое микросервисы за 200 секунд • Что такое микросервисы...
Что такое Apache Kafka за 200 секунд • Что такое Apache Kafka...
Telegram Group: t.me/theartofd...
VK: thearto...
Дружественный Golang чат: t.me/gogolang
----
Меня зовут Артур Карапетов и я занимаюсь всем, что связано с разработкой. Я создаю высоконагруженные информационные системы, стартапы, занимаюсь личным обучением людей в сфере разработки (программисты, аналитики, системные администраторы), также я помогаю компаниям и стартапам с обучением людей работать и повышением их квалификации, об этом можно почитать здесь: mitkadr.ru.
На этом канале я выкладываю ролики на интересующие меня темы, здесь можно найти серию роликов про создание информационной системы с нуля, а также можно найти серию уроков по языкам, которые я люблю. Добро пожаловать и хорошего просмотра!
#golang #clean_architecture #урок #jetbrains #goland #tutorial #голенг #development #howto #learnbasics #coding #programming #изучаемIT #программирование #разработка
Отличный контент, спасибо!
Чтобы не плодить композиты, можно также выбрать немного другой подход к реализации и расположить директории следующим образом:
1. cmd/app/main.go - точка входа, где инициализируется конфиг и вызывается метод app.Run()
2. internal/app/app.go - содержит только метод Run() и в нем инициализируются все объекты (сервисы, репозитории, бд клиенты и тд)
3. internal/domain - содержит основные сущности и бизнес правила. 1 сущность - 1 файл
4. internal/service - сервисы (1 файл - 1 сущность). Интерфейсы располагаются в файле interfaces.go в корне пакета service (для удобной генерации моков в дальнейшем)
4. internal/service/repo - аналогично репозитории в формате сущность_реализацияБД.go
5. internal/handler/тип_хандлера/версия/сущность.go - контроллеры/хандлеры, где тип_хандлера - тип сервера, например http, или amqtp_rpc.
Все остальные реализации серверов, логгеров и прочего "утилит" располагать в pkg
При таком раскладе не будет проблем с повторением имен у пакетов.
Вот пример такого подхода github.com/ysomad/go-auth-service
да, но композиты все равно будут удобны если у вас не только сторадж и сервис, а еще всякие смс хелперы и другие утилитарные классы для различного транспорта и интеграций.
@@TheArtofDevelopment к примеру есть cmd->main.go и есть internal -> some-package-> some-logic.go и тут же some file forread.xml или somefile.csv, some-logic.go содержит функцию котрая читает этот файл ReadFile('./somefle.csv') но это даст ошибку потому что на момент запуска этот файл долежн находиться в папке cmd а не тут , как в таком случае лучше делать? где хранить файлы которые надо читать, например статику или еще какие то файлы. По бизнес логики они нужны в одном месте, но класть их надо всегда только в cmd где main.go
Спасибо. Ждал. Вебка огонь.
О, новый видосик!! Ещё не смотрел, но царский лайк уже поставил!!! Спасибо!!!
Спасибо за ваш труд!
Небольшая подсказка по голанду, когда пишешь возвращаемые типы метода-функции голанд автоматически обрамляет скобками типы если их больше одного, достаточно поставить запятую после первого возвращаемого типа
забываю об этом постоянно! спасибо!
Спасибо за твой труд! Было интересно!
Спасибо! отличный обзор архитектуры.
«Всегда делись тем, чему ты научился».
- Йода
Контент супер. Просто кайф
Да, я тупой. Вебку надо было записывать отдельным потоком, чтобы потом убрать фон и убирать ее в нижний угол, а не в верхний.
Но ничего, в следующий раз :-)
Супер! Спасибо.
Классно, спасибо)
используйте wire)
а как же принцип dependency inversion principle? Почему не использовать зависимость от интерфейсов?
В такой реализации тестирование становится проблематичным
так она здесь родимая, никуда не делась
Привет! Очень интересно все таки увидеть реализацию т.к. сейчас присутствует циклическая зависимость между domain и adapter сущностями. Ну и не раскрыта тема с инициализацией Сервисов зависящих от других сервисов, тоже частенько приходится упираться в циклические зависимости.
Сделаем!
@@TheArtofDevelopment ждем!)
Артур , посдкажи где и как хранить файлы? если на момент старта он считает что находиться в папке cmd, чтение файлов надо делать всегда относительно того где лежит исполняемый main.go , не относительно пакета в котором мы пишем логику чтения какого то файла?
не очень понял какие файлы. пути относительные относительно бинарника, а не файла main.go.
Можете сделать видос про cobra framework для cli приложений на golang
я другую либу пробовал, может на нее запилю что-то. мне она очень понравилась
Возникла ошибка import cycle not allowed - возникл цикл, которые в go не поддерживаются. Исправил переносом интерфейса сервиса в Domains. Насколько это правильно?
Скоро будет обновленная версия чистой архитектуры с учетом ошибок
Жду с нетерпением :) спасибо!
3:40 у меня adapters.Handler вместо api.Handler . это нормально?
не очень понял вопроса
привет. Можеш репозиторий свой обновить, Там старая версия. Спасибо заранее !
Обновил!
Похоже на то, что чувак изобрел недо-IoC-контейнер
какой чувак?
Справа в плейлисте написано: 1 недоступное видео скрыто. Это про что? Кстати, можно в jetbrains создавать файл, указываю путь из папок, и тогда он создаст и все папки и файл.
надо посмотреть но я точно перезаливал
Это не про Clean Arch, где сущности и VO? порты inout?
слова другия, суть осталась
google/wire намного Проше все это сделает, сгенерирует композитор сам и не надо ручками писать.