Size: a a a

2020 August 04

R

Roman in F# Chat
Дмитрий Башинский
есть проект какой-то где можно глянуть как у вас депенденси кидают?
попробую ща гист набросать
источник

ДБ

Дмитрий Башинский... in F# Chat
просто я не пойму, не ужели нет в F# сервисов инстанс которого нужен от начала и до конца жизни запроса
к примеру трассировка, экземпляр трейсера (внутри него лежит TraceId) и мы этим трейсером разные места отмечаем
и легко его инжектим в разные места, нужно ещё одно место? вставиви в конструктор, заюзали и больше ничего не меняется
источник

ДБ

Дмитрий Башинский... in F# Chat
у еластика есть реализация трейсера без DI
там статик класс Agent.Trace....
и под капотом ThreadLocal<> и порноо с ним
источник

R

Roman in F# Chat
Короч вот подход, когда все зависимости прячешь за IAppEnv интерфейсом.
В этом примере их немного, поэтому все зависимости находятся в одном баундед-контексте. При желании/необходимости есть простой трюк с разбиением на доп. интерфейсы, если не хочется прокидывать в функции сразу все окружение приложения, а только часть.

https://gist.github.com/atsapura/71b58174ba330c0843df24a485e73693
источник

VS

Vladimir Shchur in F# Chat
Дмитрий Башинский
просто я не пойму, не ужели нет в F# сервисов инстанс которого нужен от начала и до конца жизни запроса
к примеру трассировка, экземпляр трейсера (внутри него лежит TraceId) и мы этим трейсером разные места отмечаем
и легко его инжектим в разные места, нужно ещё одно место? вставиви в конструктор, заюзали и больше ничего не меняется
ты можешь точно так же - что тебе нужно положить в объект хттпконтекста или асинклокал
источник

ДБ

Дмитрий Башинский... in F# Chat
Roman
Короч вот подход, когда все зависимости прячешь за IAppEnv интерфейсом.
В этом примере их немного, поэтому все зависимости находятся в одном баундед-контексте. При желании/необходимости есть простой трюк с разбиением на доп. интерфейсы, если не хочется прокидывать в функции сразу все окружение приложения, а только часть.

https://gist.github.com/atsapura/71b58174ba330c0843df24a485e73693
Спасибо, а вот этот IAppEnv юзается везде или толтко на верхнем уровне?
источник

ДБ

Дмитрий Башинский... in F# Chat
А все что ниже, юзает уже конкретно что нужно?
источник

VS

Vladimir Shchur in F# Chat
Vladimir Shchur
ты можешь точно так же - что тебе нужно положить в объект хттпконтекста или асинклокал
ты должен рассматривать запрос как функцию, на входе что-то установил, на выходе снял, никаких неявных DI регистраций
источник

R

Roman in F# Chat
Дмитрий Башинский
Спасибо, а вот этот IAppEnv юзается везде или толтко на верхнем уровне?
его передаешь параметром туда, где тебе необходим доступ во внешний мир. Само собой, всю логику, которую можно сделать на чистых функциях и отвязать от ИО, нужно сделать чистой и отвязать от ИО
источник

YT

Yogurt The Horse in F# Chat
А тут кто-то дружил canopy и selenoid?
источник

IC

Ilya L Che in F# Chat
Видимо, @BashkaMen :D
источник

ДБ

Дмитрий Башинский... in F# Chat
Ilya L Che
Видимо, @BashkaMen :D
Не, не рискнул пока :)
источник

YT

Yogurt The Horse in F# Chat
Дмитрий Башинский
Не, не рискнул пока :)
а селениум просто?
источник

YT

Yogurt The Horse in F# Chat
шарповый
источник

ДБ

Дмитрий Башинский... in F# Chat
Не использовал вообще canopy я
источник

ДБ

Дмитрий Башинский... in F# Chat
Только вчера о нем узнал
источник

YT

Yogurt The Horse in F# Chat
источник

YT

Yogurt The Horse in F# Chat
я уже не про canopy
источник

VS

Vladimir Shchur in F# Chat
Yogurt The Horse
А тут кто-то дружил canopy и selenoid?
источник

YT

Yogurt The Horse in F# Chat
по факту. Мне селениум из под капота canopy выбрасывает эксепшен  при подключении к селеноиду. В эксепшене, говорится, что не может кастануть строку к словарю, соответсвенно там действительно строка и очевидно каст не работает
источник