Size: a a a

2021 January 26

AB

Alexander Borisov in Yii Framework 3
Или там UnitOfWork не хранится в контейнере?
источник

А

Алексей R in Yii Framework 3
Alexander Borisov
Ну cycle на RR же работает
Разбирался как?
источник

AB

Alexander Borisov in Yii Framework 3
Нет 🙂
источник

А

Алексей R in Yii Framework 3
Там всё стейтится. А чтобы уйти не новый запрос, надо вручную кучу ресетить
источник

AM

Alexander Makarov in Yii Framework 3
Там да, полный сброс контекста.
источник

AM

Alexander Makarov in Yii Framework 3
В теории Yii 3 на RR будет работать быстрее, чем Spiral на RR.
источник

AB

Alexander Borisov in Yii Framework 3
А у вас какой план? Помечать сервисы, которые надо будет пересоздавать при новом запросе?
источник

AM

Alexander Makarov in Yii Framework 3
Вариантов несколько:

1. Два контейнера. Один для стейта, другой для безстейта. Стейтовый ресетить на каждый цикл event loop.
2. То же, но с weak reference как @roxblnfk предлагает. Я лично сомневаюсь что прокатит, но кто знает...
3. Помечать сервисы отдельные как "need reset" и на каждый цикл ресетить.

Какой взять ещё не до конца решили.
источник

AM

Alexander Makarov in Yii Framework 3
Мне лично импонирует вариант 3.
источник

AM

Alexander Makarov in Yii Framework 3
источник

AM

Alexander Makarov in Yii Framework 3
Руки дожать у меня лично не доходят, но @yiiliveext вчера вроде сказал что займётся поплотнее контейнером в ближайшее время.
источник

DS

Dmitriy S in Yii Framework 3
Alexander Makarov
Вариантов несколько:

1. Два контейнера. Один для стейта, другой для безстейта. Стейтовый ресетить на каждый цикл event loop.
2. То же, но с weak reference как @roxblnfk предлагает. Я лично сомневаюсь что прокатит, но кто знает...
3. Помечать сервисы отдельные как "need reset" и на каждый цикл ресетить.

Какой взять ещё не до конца решили.
3. Надо уточнить, что не помечать, а реализовывать у них ResetableInterface, а контейнер вызывает только метод reset. Сама процесс сброса реализуется сервисом.
источник

AM

Alexander Makarov in Yii Framework 3
Dmitriy S
3. Надо уточнить, что не помечать, а реализовывать у них ResetableInterface, а контейнер вызывает только метод reset. Сама процесс сброса реализуется сервисом.
Да нет. Так не пойдёт.
источник

AM

Alexander Makarov in Yii Framework 3
Требовать от сервисов что-либо — это тупик.
источник

AM

Alexander Makarov in Yii Framework 3
Потому что так мы сервисы заставляем делать под наш контейнер.
источник

AM

Alexander Makarov in Yii Framework 3
То есть все сторонние со стейтом сразу впролёте.
источник

AM

Alexander Makarov in Yii Framework 3
Что не есть хорошо.
источник

DS

Dmitriy S in Yii Framework 3
Дмитрий
А контейнер модульный нужен, чтобы можно было подключать модули и делегировать получение зависимостей из других контейнеров:
RootContainer:
 Logger

ModuleAContainer:
 Cache => MemCache


И в классах модуля А понятно, что кеш будет обязательно в памяти, а логгер пусть с уровня приложения подтянется.
Так же любые определения можно "локализовать", если оно того требует. Без алиасов и копи-пасты конфига модуля в конфиг приложения.
Чудны дела твои, господи) Я вижу, ты прям излагаешь мою концепцию модульных контейнеров, которую прошлый раз считал ненужной)
источник

DS

Dmitriy S in Yii Framework 3
Alexander Makarov
То есть все сторонние со стейтом сразу впролёте.
Не все, можно обернуть. Есть второй вариант с иммутабельностью. Вариант с пометить - нерабочий, по тем же причинам, что обсуждали вчера.
источник

DS

Dmitriy S in Yii Framework 3
Alexander Makarov
Вариантов несколько:

1. Два контейнера. Один для стейта, другой для безстейта. Стейтовый ресетить на каждый цикл event loop.
2. То же, но с weak reference как @roxblnfk предлагает. Я лично сомневаюсь что прокатит, но кто знает...
3. Помечать сервисы отдельные как "need reset" и на каждый цикл ресетить.

Какой взять ещё не до конца решили.
1. И стейт здесь - любой объект в конструкторе. Можешь разбить сейчас в демке контейнер и ты увидишь насколько мало у тебя останется дефинишинов в безстейтовом контейнере, то есть, просто теряется смысл рисета, проще рисетнуть весь контейнер.
источник