Update documentation and code snippets

This commit is contained in:
2025-12-04 20:23:11 +03:00
parent 723ed2210f
commit 087c76fed3
19 changed files with 278 additions and 114 deletions
+8 -5
View File
@@ -3,9 +3,9 @@
Внедрение зависимостей
=======================
Внедрение зависимостей (Dependency Injection, DI) — это паттерн проектирования, который помогает писать слабосвязанный, легко тестируемый и расширяемый код. Вместо того чтобы обработчики сами создавали нужные им объекты (зависимости), они получают их извне.
Внедрение зависимостей (Dependency Injection, ``di`` ) — это паттерн проектирования, который помогает писать слабосвязанный, легко тестируемый и расширяемый код. Вместо того чтобы обработчики сами создавали нужные им объекты (зависимости), они получают их извне.
``Argenta`` использует библиотеку ``dishka`` для реализации DI, что позволяет декларативно объявлять зависимости прямо в сигнатурах ваших обработчиков.
``Argenta`` использует библиотеку ``dishka`` для реализации ``di``, что позволяет декларативно объявлять зависимости прямо в сигнатурах ваших обработчиков.
Подробнее о **DI**, **IoC** и API для создания провайдеров можно прочитать в `официальной документации dishka <https://dishka.readthedocs.io/en/stable/di_intro.html>`_.
-----
@@ -32,7 +32,10 @@
:language: python
:linenos:
После создания провайдера его необходимо зарегистрировать в оркестраторе:
После создания провайдера его необходимо зарегистрировать в оркестраторе.
.. note::
Провайдеры регистрируются в ``Orchestrator``, а не в ``App``, так как оркестратор отвечает за настройку di-контейнера на уровне всего приложения. Вы можете передать список из нескольких провайдеров через параметр ``custom_providers``.
**Пример использования:**
@@ -45,7 +48,7 @@
Как это работает?
-----------------
В основе DI в Argenta лежат **провайдеры** и **контейнер**.
В основе ``di`` в Argenta лежат **провайдеры** и **контейнер**.
* **Провайдер (Provider)** — это "рецепт", который объясняет, как создавать и настраивать ту или иную зависимость (например, подключение к БД, API-клиент или любой другой сервис).
* **Контейнер (IoC Container)** — это "фабрика", которая хранит все рецепты (провайдеры) и по запросу создаёт и выдаёт готовые зависимости.
@@ -68,7 +71,7 @@
Обмен данными между обработчиками
----------------------------------
Помимо DI, обработчики могут обмениваться данными в рамках сессии через **объект контекста**. В ``Argenta`` эту роль выполняет объект ``DataBridge``.
Помимо ``di``, обработчики могут обмениваться данными в рамках сессии через **объект контекста**. В ``Argenta`` эту роль выполняет объект ``DataBridge``.
Каждый обработчик может записывать в него данные, а также читать, обновлять и удалять их.