Об этом проекте
VContainer — это высокопроизводительная библиотека внедрения зависимостей (DI), разработанная специально для игрового движка Unity. Она делает акцент на скорости, минимальном выделении памяти и небольшом размере кода, что делает её эффективной альтернативой другим DI-фреймворкам, таким как Zenject.
Ключевые особенности включают:
- **Быстрое разрешение:** Обычно в 5-10 раз быстрее, чем Zenject.
- **Нулевое выделение памяти GC:** Разрешение экземпляров не создаёт нагрузки на сборщик мусора (за исключением порождаемых экземпляров).
- **Небольшой размер кода:** Мало внутренних типов и минимальное количество виртуальных вызовов.
- **Правильные практики DI:** Простой и прозрачный API с тщательно отобранными функциями, чтобы избежать сложности.
- **Неизменяемый контейнер:** Обеспечивает потокобезопасность и надёжность.
Поддерживаемые типы внедрения: внедрение через конструктор, метод, свойство и поле. Также предоставляется гибкая область видимости с вложенными областями времени жизни, асинхронная поддержка и интеграция с UniTask и ECS (бета).
Установка доступна через UPM (URL Git), OpenUPM или вручную с помощью .unitypackage. Библиотека требует Unity 2018.4 или более поздней версии.
Базовое использование включает создание LifetimeScope и регистрацию сервисов, а затем их автоматическое разрешение. Библиотека поддерживает привязки по ключу, точки входа (IStartable, IAsyncStartable) и динамическое создание дочерних областей для асинхронной загрузки ресурсов.
Окно диагностики в редакторе Unity помогает визуализировать и отлаживать регистрации и зависимости контейнера.
VContainer вдохновлён Zenject, Autofac и MicroResolver и выпущен под лицензией MIT.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.